今天当我想对指定目录中的所有文件和目录进行 tar 处理时遇到了这个问题。执行以下操作是不够的,因为隐藏文件(.
不包括以 开头的文件):
tar -czvf ~/tarfile.tar.gz /path/to/dir/*
然后我想到了以下几点:
find /path/to/dir/* -execdir /bin/tar -czvf ~/tarfile.tar.gz '{}' +
但这还不够。如果execdir
已达到命令留置权限制并且需要使用找到的其余文件集重新运行相同的命令怎么办?
因此,如果 tar 文件不存在,我需要一个选项或某种方法来创建它。如果存在,则附加到它。试图找到解决此问题的方法,但无法解决。想到了-r
选项,但没有奏效,因为它需要存在已经创建的 tar 文件。
这是否意味着没有办法并且必须编写一个迷你脚本来完成这个逻辑?
只需使用
tar czvf ~/tarfile.tar.gz /path/to/dir/
不带“*”的文件,以防止文件以“。”开头。从被包括在内。如果您想更新现有
tarfile.tar.gz
文件(即向其中添加更多文件),您将需要一个小技巧来更新它,因为 tar 在更新“gzipped”文件时会遇到麻烦。这个oneliner“解压缩、更新和压缩”文件或创建一个新文件。最简单的选择是使用
tar uf tarfile.tar /path/to/dir/
which 创建文件或更新它。之后您需要手动压缩它(可能先将其复制到不同的位置)。