加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

backup – 用于过滤掉管道中不存在的文件的Shell命令

发布时间:2020-12-15 18:34:58 所属栏目:安全 来源:网络整理
导读:我正在寻找一种很好的方法来生成一个备用tar.gz,它将通过提取另一个tar.gz来覆盖什么. tar -ztf patch.tar.gz | grep -v "/$" | tar -T- -zcvf backup.tar.gz 这很完美!但是,有时,新补丁(patch.tar.gz)不仅包含HDD中已存在的文件,还可能添加尚不存在的新文
我正在寻找一种很好的方法来生成一个备用tar.gz,它将通过提取另一个tar.gz来覆盖什么.
tar -ztf patch.tar.gz | grep -v "/$" | tar -T- -zcvf backup.tar.gz

这很完美!但是,有时,新补丁(patch.tar.gz)不仅包含HDD中已存在的文件,还可能添加尚不存在的新文件.
这些不存在的文件将无法备份,第二个tar将生成错误.退出代码是2.

tar: folder/file.txt: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous error

我正在寻找shell命令,它只检查文件是否存在(stdin)并在stdout上发送现有文件.它存在吗?我需要这样的东西:

tar -ztf patch.tar.gz | grep -v "/$" | filterfileexist | tar -T- -zcvf backup.tar.gz

我需要一个shell命令而不是shell脚本.
显然,我可以在C中实现这个shell命令,因为它非常简单,但我希望找到一些可以在其他UNIX平台上找到的通用命令.

尝试使用perl oneliner

喜欢

cat filelist | perl -ne 'chomp(); if (-e $_) {print "$_n"}' | tar -T- -zcvf backup.tar.gz

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读