Answers:
通常,您可以使用-u标志。从tar的手册页中:
-u, --update only append files newer than copy in archive
因此,此序列将满足您的需求:
# First create the tar file. It has to be UNCOMPRESSED for -u to work
tar -cvf my.tar some-directory/
# ... update some files in some-directory
# ... add files in some-directory
# Now update only the changed and added files
tar -uvf my.tar some-directory/
# Compress if desired
gzip my.tar
有关更详细的外观,请参见此处:http : //www.gnu.org/software/tar/manual/html_node/how-to-update.html
您不能一步一步更新压缩的TAR归档文件(.tar.gz)。但是,如果您有足够的可用空间,则可以执行以下操作:
从.tar.gz文件中提取.tar文件:
gunzip filename.tar.gz
使用以下命令更新未压缩的.tar文件tar -u
:
tar -uf filename.tar new_file
压缩更新的.tar文件:
gzip filename.tar
如果您具有多核CPU,则建议使用pigz
而不是gzip
用于提取和创建.gz文件。(pigz
是的多线程实现gzip
)
只需将gzip
/ gunzip
命令替换为pigz
/即可unpigz
。
如果要重复执行此操作,则可以进行以下优化:
if [[ -f my.tar.gz ]]; then
if [[ ! -f my.tar ]]; then
echo 'No tar, unzipping tar.gz'
gunzip my.tar.gz
fi
tar -uvf my.tar file1 file2 file_new
gzip -fk my.tar # This keeps a copy of the tar.
# -f --force overwrite existing .tar.gz
# -k --keep Keep the input file (.tar file)
else
tar -cvzf my.tar.gz file1 file2
fi