GNU tar 可以将许多文件添加到存档中,并在添加时删除每个文件吗?
当没有足够的磁盘空间来保存整个 tar 存档和原始文件时,这很有用 - 因此不可能在以通常的方式创建存档后简单地手动删除文件。
GNU tar 可以将许多文件添加到存档中,并在添加时删除每个文件吗?
当没有足够的磁盘空间来保存整个 tar 存档和原始文件时,这很有用 - 因此不可能在以通常的方式创建存档后简单地手动删除文件。
对于 GNU tar,使用选项 --remove-files
.
我有一个任务 - 存档文件,然后在没有 GNU 选项的情况下将其删除到安装了“tar”的操作系统中。
使用“xargs”
假设我们有一个包含文件的目录。
需要在一周内将所有文件移动到 tar 中并将其删除。
我做了一个存档(arc.tar)并向其中添加了文件。(您可以每次尝试创建新存档)
find ./ -mtime +7 | xargs -I % sh -c 'tar -rf arc.tar % && rm -f %'
对于非 GNU tar,您可以使用“-u”循环处理每个文件的文件
tar -cf archive.tar afile
for myfile in dir/*.ext
do
tar -uf archive.tar $myfile && rm $myfile || echo "error tar -uf archive.tar $myfile"
done
我不确定您是否可以在不先解压缩的情况下将文件添加到 bzip2 档案中。然而,这是我刚刚想到的一种解决方案(给你伪算法):
1. For each [file] in [all small files]
1.1 compress [file] into [file].bz2
1.2 (optionally verify the process in some way)
1.3 delete [file]
2. For each [bzfile] in [all bzip files from step 1]
2.1 append to tar (tar rvf compressedfiles.tar [bzfile]
2.2 (optionally verify the process in some way)
2.3 delete [bzfile]
现在您应该有一个 tar 文件,其中包含单独的所有文件 bzip2:ed 文件。问题是 bzip2 给单个文件增加了多少开销。这需要测试。