添加到tar存档后删除文件

时间:2012-05-28 08:34:06

标签: bash unix compression tar

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

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

4 个答案:

答案 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为单个文件添加了多少开销。这需要进行测试。