Я использую make
и tar
для резервного копирования. При выполнении make файла команда tar показывает file changed as we read it
. В этом случае
- пакет tar доступен, когда появляется предупреждение
- но он останавливает команду tar для следующей резервной копии
- файл с предупреждением на самом деле не меняется - действительно странно, что предупреждение появляется
- файлы с предупреждением появляются случайным образом, я имею в виду, каждый раз, когда я запускаю свой make файл, файлы с предупреждением различаются.
-
--ignore-failed-read
не помогает. Я использую tar 1.23 в MinGW - Я просто поменял свой компьютер на WIN7 64 бит. script хорошо работает в старой версии WIN7 32 бит. Но версия tar не такая новая, как 1.23.
Как я могу остановить предупреждение tar, чтобы остановить резервное копирование после предупреждения?
Изменить-2: это может быть причина
Как я уже говорил выше, оболочка bash script хорошо работала на моем старом компьютере. Сравнивая со старым компьютером, версия msys
отличается. Так же и версия tar-команды. На старом компьютере tar равен 1,13.19, а на новом компьютере - 1,23. Я скопировал старую команду tar без копирования ее зависимости msys-1.0.dll на новый компьютер и переименовал ее в tar_old. И я также обновил команду tar в оболочке script и запустил script. Тогда все в порядке. Таким образом, казалось, что проблема заключается в команде tar. Я уверен, что ни один файл не изменен при тарировании. Это ошибка для команды tar в новой версии? Я не знаю.
Изменить-1: добавить дополнительные сведения
Резервная копия вызывается оболочкой bash script. Он сканирует целевой каталог и создает make файл, а затем вызывает make для использования tar-команды для резервного копирования. Далее следует типичный make файл, созданный оболочкой bash script.
#--------------------------------------------
# backup VC
#--------------------------------------------
# the program for packing
PACK_TOOL=tar
# the option for packing tool
PACK_OPTION=cjvf
# M$: C driver
WIN_C_DIR=c:
# M$: D driver
WIN_D_DIR=d:
# M$: where the software is
WIN_PRG_DIR=wuyu/tools
# WIN_PRG_DIR=
# where to save the backup files
BAKDIR=/home/Wu.Y/MS_bak_MSYS
VC_FRAMEWORK=/home/Wu.Y/MS_bak_MSYS/tools/VC/VC_framework.tar.bz2
VC_2010=/home/Wu.Y/MS_bak_MSYS/tools/VC/VC_2010.tar.bz2
.PHONY: all
all: $(VC_FRAMEWORK) $(VC_2010)
$(VC_FRAMEWORK): $(WIN_C_DIR)/$(WIN_PRG_DIR)/VC/Framework/*
@$(PACK_TOOL) $(PACK_OPTION) "[email protected]" --ignore-failed-read /c/$(WIN_PRG_DIR)/VC/Framework
$(VC_2010): $(WIN_C_DIR)/$(WIN_PRG_DIR)/VC/VS2010/*
@$(PACK_TOOL) $(PACK_OPTION) "[email protected]" --ignore-failed-read /c/$(WIN_PRG_DIR)/VC/VS2010
Как вы можете видеть, пакет tar хранится в ~/MS_bak_MSYS/tools/VC/VC_2010.tar.bz2. Я запускаю script в ~/qqaa. ~/MS_bak_MSYS
исключается из команды tar. Таким образом, tar файл, который я создаю, не находится внутри каталога, который я пытаюсь поместить в файл tar. Вот почему мне было странно, что предупреждение появилось.