我正在寻找一种很好的方法来生成一个备用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