添加到tar存档后删除文件

Ror*_*ory 46 unix compression bash tar

GNU tar可以将多个文件添加到存档中,在添加时删除每个文件吗?

当没有足够的磁盘空间来容纳整个tar存档和原始文件时,这很有用 - 因此,在以通常方式创建存档后,无法简单地手动删除文件.

Fre*_*Foo 70

使用GNU tar,使用该选项 --remove-files.

  • @EugeneS:我检查了GNU tar源代码,归档和删除之间存在一些(可配置的)延迟,但tar不会等待创建整个tarball. (8认同)
  • 您确定通过使用此标志将每个文件添加到存档后删除而不是删除过程结束时的所有文件吗? (3认同)

小智 6

我有一个任务 - 归档文件,然后将其删除到操作系统安装的“tar”中,而无需使用 GNU 选项。

方法:

使用“xargs”

假设我们有一个包含文件的目录。
需要在一周内将所有文件移动到 tar 中并将其删除。
我制作了一个存档 (arc.tar) 并向其中添加了文件。(您每次尝试都可以创建新的存档)

解决方案:

find ./ -mtime +7 | xargs -I % sh -c 'tar -rf arc.tar % && rm -f %'
Run Code Online (Sandbox Code Playgroud)

  • 1. 我会在 `tar` 和 `rm` 命令之间使用 `&&` 而不是 `;`,因此只有在文件添加到存档成功时才删除文件。2. 如果您的“find”有“-exec”选项,请考虑使用该选项。/sf/answers/423072751/ (6认同)