it-swarm.com.ru

Удаление файлов после добавления в архив tar

Может ли GNU tar добавить много файлов в архив, удаляя каждый из них по мере добавления?

Это полезно, когда на диске недостаточно места для хранения всего архива tar, а также исходных файлов.

43
Rory

С помощью GNU tar используйте параметр --remove-files.

60
Fred Foo

У меня была задача - заархивировать файлы и затем удалить в ОС установленный «tar» без GNU-параметров. 

Метод:

Используйте "xargs" 

Предположим, у нас есть каталог с файлами.
Нужно переместить все файлы, за неделю в tar и удалить его.
Я делаю один архив (arc.tar) и добавляю в него файлы. (Вы можете создать новый архив при каждой попытке) 

Решение:

find ./ -mtime +7 | xargs -I % sh -c 'tar -rf arc.tar % ; rm -f %'
3
Vladimir Azarov

Для не 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
1
E D

Я не уверен, что вы можете добавлять файлы в архивы 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 добавляет к отдельным файлам. Это должно быть проверено.

0
Tobbe