我正在使用make
和tar
进行备份。执行makefile时,tar命令会显示file changed as we read it
警告。在这种情况下,
- 当出现警告时,tar软件包没有问题
- 但它会停止后续备份的tar命令
- 实际上,显示警告的文件没有发生变化——这真是奇怪
- 显示警告的文件会随机出现,我的意思是,每次运行makefile时,显示警告的文件都不同
--ignore-failed-read
没有帮助。我正在MinGW中使用tar 1.23- 我刚把电脑换成了WIN7 64位。旧的WIN7 32位电脑上脚本工作得很好。但是tar版本不像1.23一样新。
如何停止tar的警告以防止它停止后续备份?
编辑-2:可能是原因
正如我上面所说的,在旧电脑上bash shell脚本可以正常工作。与旧电脑相比,msys
版本不同。tar命令的版本也不同。在旧电脑上,tar是1.13.19,在新电脑上是1.23。我复制了旧的tar命令,但没有复制它的依赖项msys-1.0.dll到新电脑上,并将其重命名为tar_old。我还在shell脚本中更新了tar命令并运行了脚本。然后一切正常。因此,问题似乎是tar命令。我确定在压缩时没有任何文件被更改。这是新版本tar命令的一个错误吗?我不知道。
编辑-1:添加更多细节
备份由bash shell脚本调用。它扫描目标目录并构建makefile,然后调用make使用tar命令进行备份。下面是由bash shell脚本构建的典型makefile。
#--------------------------------------------
# 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文件的目录中。这就是我觉得警告出现很奇怪的原因。
tar
工具替换为pax
对我有用。 - Andreas