В Linux, как архивировать и сжимать несколько файлов в один и удалять исходные файлы?

У меня есть файлы ниже в каталоге.

file001
file002
.
.
file009

Мне нужно сжать их в один и удалить исходные / исходные файлы (file001 .. file009) так что я могу освободить место на диске.

Вот что я сделал: заархивировал все файлы в один, используя команду ниже

tar -cvf file00.tar file00*

Затем сжал заархивированный файл с помощью команды ниже

xz file00.tar

ранее я архивировал и сжимал с помощью одной команды

tar -cJvf file00.tar.xz file00*

xz сделал хорошую работу, сжал 10 ГБ файл менее чем в 400 МБ, но у меня есть несколько проблем с этими методами:

  1. Старые / исходные файлы не удаляются
  2. 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-tarhttps://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.

Другие вопросы по тегам