tar压缩提示file changed as we read it

压缩文件夹,过程中某个文件有变化,会提示 file changed as we read it 。不太确定是压缩到这里就中断了,还是压缩完,才提示的这个错误。

测试一下

做个实验,验证一下。步骤如下:

脚本命名为echo.sh,内容如下:

num=1
while true
do
        echo $num >> test.txt
        num=$num+1
        #sleep 30s
done

打包压缩test.txt和echo.sh,压缩的命令:

tar -czvf tar_test.tgz test.txt echo.sh

执行命令的结果:

[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:

[wang@DESKTOP-K8UBC7R tar_test]$ ls
echo.sh  tar_test.tgz  test.txt

确定包含echo.sh,所以根据现象反推,应该只是一个提示。也就是没有变动的文件,会被打包成功,有变动的文件,肯定只能打包了当时的那些内容。

资料1

即使打包命令执行过程中会有这个报错提示,但实际上还是会正常生成tar包,并且也是可用的。

既然不影响,那么可以忽略这个报错,只需要在tar命令中加入一个参数:

[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有三种退出码:

0 - Successful termination.

1 - Some files differ.

2 - Fatal error

明显我们遇到的就是退出码为1的情况。

资料2

里面也提到了打包是成功的,同时也提到了退出码,当我们加上 –warning=no-file-changed 的时候,退出码还是1,只是不报错而已。

也可以自己加一些判断条件,来看一下结果:

set +e
tar -czf sample.tar.gz dir1 dir2
exitcode=$?

if [ "$exitcode" != "1" ] && [ "$exitcode" != "0" ]; then
    exit $exitcode
fi
set -e

另外,如果本身不想打包那个会变化的文件,只需要把他排除掉就好了,如下:

touch archive.tar.gz
tar --exclude=archive.tar.gz -zcvf archive.tar.gz .

Original: https://www.cnblogs.com/wswang/p/16591698.html
Author: wswang
Title: tar压缩提示file changed as we read it

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585793/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 操作系统实战45讲-10 设置工作模式与环境:建立计算机

    实验环境: 虚拟机软件:VMware® Workstation 16 Pro虚拟机:Ubuntu 20.04 生产虚拟硬盘 用 dd 命令(用指定大小的块拷贝一个文件,并在拷贝的同…

    Linux 2023年6月7日
    0111
  • 数组常见操作

    8.19 day7 数组常见操作 获取数组最值 public static int maxElement(int[] arr) { // 假设第一个元素的值就是最大值 int ma…

    Linux 2023年6月7日
    090
  • 客观的聊一聊,裁员这件糟心事

    时间在走,环境在变,互联网有点卷不动了; 捋一捋最近互联网上关于职场的热点:裁员,优化,毕业,向社会输送人才,求职;你方唱罢他方登场,持续横跳热搜; 年初到现在五月底,身边已经有好…

    Linux 2023年6月14日
    080
  • dotnet-cnblogs-tool使用与坑

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月6日
    080
  • 每天一个 HTTP 状态码 204

    204 No Content 表示服务器成功地处理了客户端的请求,但是… 204 No Content 204 No Content 表示服务器成功地处理了客户端的请求…

    Linux 2023年6月7日
    099
  • linux inode 详解 / 线上inode爆满解决方案

    linux inode 详解 / 线上inode爆满解决方案 本文大量参考阮一峰大神博客,整理笔记 之所以&amp…

    Linux 2023年6月7日
    0113
  • 蓝桥杯国赛——循环小数

    时间限制: 1.0s 内存限制: 256.0MB 本题总分:20 分 【问题描述】已知 S 是一个小于 1 的循环小数,请计算与 S 相等的最简真分数是多少。例如 0 . 3333…

    Linux 2023年6月6日
    073
  • Spring Boot中异步调用的正确使用姿势(详解)【转】

    介绍:异步请求的处理。除了异步请求,一般上我们用的比较多的应该是异步调用。通常在开发过程中,会遇到一个方法是和实际业务无关的,没有紧密性的。比如记录日志信息等业务。这个时候正常就是…

    Linux 2023年6月8日
    0103
  • JavaScript快速入门-06-函数

    6 函数 6.1 函数定义 函数可以封装语句,然后在任何地方、任何时间执行。JavaScript中的函数使用 function关键字声明,主要由 函数名、 函数参数和 函数体组成。…

    Linux 2023年6月7日
    0105
  • MySQL概述

    数据库 ~存储数据的仓库,数据是有组织的进行存储 ~英文:Database,简称DB 数据库管理系统 ~管理数据库的大型软件 ~英文:DataBase Management Sys…

    Linux 2023年6月7日
    0101
  • 2.VMware三种网络模式

    本文参考《Vmware虚拟机三种网络模式详解》、《网络原理,以及对VMware Workstation虚拟网络VMnet0、VMnet1、VMnet8的图解》 一.VMware的网…

    Linux 2023年5月27日
    0125
  • angular报错:Cannot assign to a reference or variable

    错误代码: <input #manufacturerId="ngModel" id="manufacturerId" name=&qu…

    Linux 2023年6月7日
    0101
  • Shell 脚本是什么?

    一个 Shell 脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell 脚本)来完成这…

    Linux 2023年5月28日
    0102
  • 青春浙江微信平台如何退出?如何重新登录?微信如何清除浏览器缓存,如何清除浏览器cookies?

    青春浙江不能退出重新登录,有同学可能寻找解决方法,给大家贴出来:bug 解决办法:1. debugmm.qq.com/?forcex5=true 打开调试2. http://deb…

    Linux 2023年5月27日
    091
  • PYTORCH: 60分钟 | 神经网络

    神经网络可以使用 torch.nn包构建。 现在你已经对autograd有所了解, nn依赖 autograd 定义模型并对其求微分。 nn.Module 包括层,和一个返回 ou…

    Linux 2023年6月16日
    0164
  • Redis相关监控参数【转】

    1 慢查询 默认情况下命令若是执行时间超过10ms就会被记录到日志,slowlog只会记录其命令执行的时间,不包含io往返操作,也不记录单由网络延迟引起的响应慢。如果想修改慢命令的…

    Linux 2023年5月28日
    071
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球