В Linux, как архивировать и сжимать несколько файлов в один и удалять исходные файлы?
У меня есть файлы ниже в каталоге.
file001
file002
.
.
file009
Мне нужно сжать их в один и удалить исходные / исходные файлы (file001 .. file009
) так что я могу освободить место на диске.
Вот что я сделал: заархивировал все файлы в один, используя команду ниже
tar -cvf file00.tar file00*
Затем сжал заархивированный файл с помощью команды ниже
xz file00.tar
ранее я архивировал и сжимал с помощью одной команды
tar -cJvf file00.tar.xz file00*
xz
сделал хорошую работу, сжал 10 ГБ файл менее чем в 400 МБ, но у меня есть несколько проблем с этими методами:
- Старые / исходные файлы не удаляются
- XZ занимает огромное время
У меня вопрос, есть ли способ архивировать и сжимать несколько файлов в один, используя одну команду, которая также удалит исходные файлы? Есть ли другой инструмент сжатия, который эффективен как xz, но работает быстрее?
Я видел на некоторых других сайтах, что я могу использовать несколько ядер / потоков для ускорения процесса xz, но сам не пробовал.
Заранее спасибо.
1 ответ
Вы можете попробовать pixz
который является параллельным вариантомxz
инструмент (илиpxz
параллельный вариант xz)):
tar -Ipixz -cf foo.tpxz foo/`
Есть-I compressor
опция tar для выбора нестандартного компрессора, и так должно быть раньшеf
опция как опция f требует строкового аргумента.
А для удаления есть опция в GNU Tar https://www.gnu.org/software/tar/manual/html_node/remove-files.html(почему это в "4.4 Опции, используемые --extract
" раздел??)
Удаление файлов
Смотрите раздел слишком кратко.Что еще добавить?Пример, может быть?
--remove-files
Удалите файлы после добавления их в архив.
Я не проверял его, но он был указан в https://serverfault.com/questions/283355/correct-way-of-using-the-remove-files-option-with-tar(и https://superuser.com/questions/96860) снова используется раньше-f
опция:
tar --remove-files -cvfj archive.tar.bz2 archive/
Итак, совмещая оба варианта (после установки pixz
; это еще можно открыть классическимxz
инструмент, и может быть переименован вarchive.tar.xz
тоже):
tar -Ipixz --remove-files -cJvf file00.tpxz file00*
или сxz
:
tar -Ixz --remove-files -cJvf file00.tar.xz file00*
PS: Есть и другие параллельные компрессоры:pigz
(формат gzip), pbzip2 и lbzip2 (формат bzip2, не такой компактный и медленнее, чем xz и gzip). Есть также быстрые компрессоры, такие как lz4
/ lz5
или фейсбукzstd
, И естьlrzip
который может использовать несколько потоков для сжатия и может находить повторы данных на большом расстоянии, а затем сжимать, используя lzma ( по умолчанию, xz-подобный метод) или классический gz или более быстрый LZO или очень медленный и эффективный ZPAQ.