![仅当存在时才让 Tar 更新现有档案](https://linux22.com/image/180570/%E4%BB%85%E5%BD%93%E5%AD%98%E5%9C%A8%E6%97%B6%E6%89%8D%E8%AE%A9%20Tar%20%E6%9B%B4%E6%96%B0%E7%8E%B0%E6%9C%89%E6%A1%A3%E6%A1%88.png)
所以我有我用过的这一行:
find . -maxdepth 1 -mindepth 1 -type d -exec tar cvf {}.tar {} --remove-files \;
它将每个顶级目录压缩到它们自己的 tar 存档中,然后删除文件。
现在,当它因某种原因意外停止时,我怎样才能让它再次继续?当 tar 已经存在时,无需重新创建它。
我知道这面--update
旗帜,但对我来说知识:
-u, --update
only append files newer than copy in archive
看来只能更新如果文件较新,并且当文件不存在时不会真正添加文件。
我怎样才能使用 Bash/Unix 工具做上面提到的事情?
答案1
使用r
(附加模式)而不是c
:
find . -maxdepth 1 -mindepth 1 -type d -exec tar rvf {}.tar {} --remove-files \;
如果存档尚不存在,这将创建一个存档;如果存在,则会追加到该存档中。