Loading... > 转载文章,排版可能出现错误,建议到原文阅读:[tar压缩提示file changed as we read it - wswang - 博客园 (cnblogs.com)](https://www.cnblogs.com/wswang/p/16591698.html) 压缩文件夹,过程中某个文件有变化,会提示 file changed as we read it 。不太确定是压缩到这里就中断了,还是压缩完,才提示的这个错误。 ## 测试一下 做个实验,验证一下。步骤如下: 1. 创建一个空文件 2. 用脚本不断往空文件写内容 3. tar打包压缩脚本以及建的文件 脚本命名为echo.sh,内容如下: ```bash highlighter-hljs hljs num=1 while true do echo $num >> test.txt num=$num+1 #sleep 30s done ``` 打包压缩test.txt和echo.sh,压缩的命令: ```bash highlighter-hljs hljs tar -czvf tar_test.tgz test.txt echo.sh ``` 执行命令的结果: ```bash highlighter-hljs hljs [wang@DESKTOP-K8UBC7R test]$ tar -czvf tar_test.tgz test.txt echo.sh test.txt tar: test.txt: file changed as we read it echo.sh ``` 可以看到过程,得到tar_tet.tgz后解压,看一下是否包含echo.sh: ```bash highlighter-hljs hljs [wang@DESKTOP-K8UBC7R tar_test]$ ls echo.sh tar_test.tgz test.txt ``` 确定包含echo.sh,所以根据现象反推,应该只是一个提示。也就是没有变动的文件,会被打包成功,有变动的文件,肯定只能打包了当时的那些内容。 ## 资料1 找到了这篇文章 [https://blog.csdn.net/w892824196/article/details/109494061](https://blog.csdn.net/w892824196/article/details/109494061) ,文中提到的观点验证了上面的结论。即: > 即使打包命令执行过程中会有这个报错提示,但实际上还是会正常生成tar包,并且也是可用的。 既然不影响,那么可以忽略这个报错,只需要在tar命令中加入一个参数: ```bash highlighter-hljs hljs [wang@DESKTOP-K8UBC7R test]$ tar --warning=no-file-changed -czvf tar_test.tgz test.txt echo.sh test.txt echo.sh wang@DESKTOP-K8UBC7R test]$ ``` 可以看到,执行不再报错。 同时,文中还提到tar有三种退出码: ```bash highlighter-hljs hljs 0 - Successful termination. 1 - Some files differ. 2 - Fatal error ``` 明显我们遇到的就是退出码为1的情况。 ## 资料2 还看到了这个资料 [https://stackoverflow.com/questions/20318852/tar-file-changed-as-we-read-it](https://stackoverflow.com/questions/20318852/tar-file-changed-as-we-read-it) 。 里面也提到了打包是成功的,同时也提到了退出码,当我们加上 --warning=no-file-changed 的时候,退出码还是1,只是不报错而已。 也可以自己加一些判断条件,来看一下结果: ```bash highlighter-hljs hljs set +e tar -czf sample.tar.gz dir1 dir2 exitcode=$? if [ "$exitcode" != "1" ] && [ "$exitcode" != "0" ]; then exit $exitcode fi set -e ``` 另外,如果本身不想打包那个会变化的文件,只需要把他排除掉就好了,如下: ```bash highlighter-hljs hljs touch archive.tar.gz tar --exclude=archive.tar.gz -zcvf archive.tar.gz . ``` 另附官方关于warnings的说明 [https://www.gnu.org/software/tar/manual/html_section/warnings.html](https://www.gnu.org/software/tar/manual/html_section/warnings.html) 最后修改:2022 年 10 月 17 日 02 : 33 PM © 转载自他站 赞赏 要多恰饭才能长胖 赞赏作者 支付宝微信