GNU tar可以将多个文件添加到存档中,并在添加时删除每个文件吗?
当没有足够的磁盘空间来容纳整个tar存档和原始文件时,这很有用 - 因此,在以通常的方式创建存档后,无法简单地手动删除文件。
答案 0 :(得分:63)
使用GNU tar,使用option --remove-files
。
答案 1 :(得分:3)
我有一个任务 - 归档文件然后删除到没有GNU选项的操作系统安装“tar”。
使用“xargs”
假设我们有一个包含文件的目录。
需要将所有文件移动到tar中并将其删除。
我做了一个存档(arc.tar)并添加了文件。 (您可以尝试每次创建新档案)
find ./ -mtime +7 | xargs -I % sh -c 'tar -rf arc.tar % ; rm -f %'
答案 2 :(得分:2)
对于非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
答案 3 :(得分:0)
我不确定你是否可以在没有先提取的情况下将文件添加到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 files。问题是bzip2为单个文件添加了多少开销。这需要进行测试。