这些是从 tar提取时覆盖控件。
Overwrite control:
-k, --keep-old-files don't replace existing files when extracting
--keep-newer-files don't replace existing files that are newer than
their archive copies
--no-overwrite-dir preserve metadata of existing directories
--overwrite overwrite existing files when extracting
--overwrite-dir overwrite metadata of existing directories when
extracting (default)
--recursive-unlink empty hierarchies prior to extracting directory
--remove-files remove files after adding them to the archive
但是,您参考cp -i
和tar c
操作以供参考。
这意味着您有兴趣更新不会用新版本覆盖 tar 中现有副本的存档。我怀疑 tar 不能直接使用控制。
我也想知道是否需要这样的计划。
但是,解决此问题的一种方法如下。
由于您担心会覆盖归档文件,因此
我们安全地假设您拥有该目录的现有部分 tar(例如 tar files.tar
)。
cd base/dir/to/be/tarred
tar tf path/to/files.tar | sort > archived-files.lst
find . -type f | sort > files.lst
diff archived-files.lst files.lst | grep "^>" | cut -c 3- > new.lst
tar uf -T new.lst
请注意,这update
仅适用于未压缩的存档。
因此,如果您的存档是压缩的 gunzip/bunzip2,则在此序列之前适当地使用它。
然后在最后重新压缩它。