Я використовую make
і tar
для резервного копіювання. Під час виконання make-файлу відображається команда tar file changed as we read it
. В цьому випадку,
- пакунок tar в порядку, коли з’являється попередження
- але він зупиняє команду tar для наступного резервного копіювання
- файл, що відображає попередження, насправді не змінюється - це дійсно дивно, що попередження з’являється
- файли, що відображають попередження, з’являються випадковим чином, я маю на увазі, що кожного разу, коли я запускаю свій make-файл, файли, що відображають попередження, відрізняються
--ignore-failed-read
не допомагає. Я використовую tar 1.23 у MinGW- Я щойно змінив комп’ютер на 64-розрядний WIN7. Сценарій добре працює у старому 32-розрядному WIN7. Але версія tar не така нова, як 1.23.
Як я можу зупинити попередження tar, щоб зупинити резервне копіювання після попередження?
Edit-2 : це може бути причиною
Як я вже говорив вище, сценарій оболонки bash добре працював на моєму старому комп'ютері. У порівнянні зі старим комп'ютером msys
версія інша. Так само як і версія команди tar. У старому комп’ютері tar - 1.13.19, а в новому - 1.23. Я скопіював стару команду tar, не скопіювавши її залежність msys-1.0.dll на новий комп'ютер, і перейменував її у tar_old. І я також оновив команду tar у сценарії оболонки та запустив сценарій. Тоді все ок. Отже, здавалося, що проблема в команді tar. Я впевнений, що жодного файлу не було змінено під час тарування. Це помилка для команди tar в новій версії? Не знаю.
Редагувати-1 : додати більше деталей
Резервне копіювання викликається сценарієм оболонки bash. Він сканує цільовий каталог і будує makefile, а потім викликає make для використання команди tar для резервного копіювання. Далі йде типовий make-файл, побудований сценарієм оболонки bash.
#--------------------------------------------
# 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) "$@" --ignore-failed-read /c/$(WIN_PRG_DIR)/VC/Framework
$(VC_2010): $(WIN_C_DIR)/$(WIN_PRG_DIR)/VC/VS2010/*
@$(PACK_TOOL) $(PACK_OPTION) "$@" --ignore-failed-read /c/$(WIN_PRG_DIR)/VC/VS2010
Як бачите, пакунок tar зберігається в ~ / MS_bak_MSYS / tools / VC / VC_2010.tar.bz2. Я запускаю сценарій в ~ / qqaa. ~/MS_bak_MSYS
виключається з команди tar. Отже, файл tar, який я створюю, не знаходиться всередині каталогу, який я намагаюся вставити у файл tar. Ось чому мені було дивно, що з’явилося попередження.