Gzip linux многотомный архив

GZip every file separately

Easy and very fast answer that will use all your CPU cores in parallel:

GNU Parallel is a fantastic tool that should be used far more in this world where CPUs are only getting more cores rather than more speed. There are loads of examples that we would all do well to take 10 minutes to read. here

Knew about parallel, but keep forgetting to use it! Ran the accepted answer then scrolled down to see your answer. saved lots of hours! Maybe a good idea to make your comment an edit to your answer?

Is there a way to use parallel if the argument list is too long? Have about 60k files that I need individually compressed.

After seven years, this highly upvoted comment still doesn’t have its own full-fledged answer, so I’m promoting it now:

This has two advantages over the currently accepted answer: it works recursively if there are any subdirectories, and it won’t fail from Argument list too long if the number of files is very large.

Does this keep or delete the files? Do you still need to add the -k option mentioned in the other answer.

If you want to gzip every file recursively, you could use find piped to xargs:

$ find . -type f -print0 | xargs -0r gzip 

@musiphil: good point about protecting for spaces in file names! I just edited the answer to integrate your comment (waiting for peer review).

$ for file in *; do gzip "$file"; done 

Or, if you have pigz (gzip utility that parallelizes compression over multiple processors and cores)

The following command can run multiple times inside a directory (without «already has .gz suffix» warnings) to gzip whatever is not already gzipped.

find . -maxdepth 1 -type f ! -name '*.gz' -exec gzip "<>" \; 

A more useful example of utilizing find is when you want to gzip rolling logs. E.g. you want every day or every month to gzip rolled logs but not current logs.

# Considering that current logs end in .log and # rolled logs end in .log.[yyyy-mm-dd] or .log.[number] find . -maxdepth 1 -type f ! -name '*.gz' ! -name '*.log' -exec gzip "<>" \; 

Источник

Gzip linux многотомный архив

Краткая памятка по работе с архиваторами (программами управления файловыми архивами) из консоли в Linux.

Читайте также:  Как определить дистрибутив линукс

    В двух словах о самом формате tar

http://ru.wikipedia.org/wiki/Tar писал(а): . в настоящее время tar используется для хранения нескольких файлов внутри одного файла, для распространения программного обеспечения, а также по прямому назначению — для создания архива файловой системы.

где foo.tar имя которое будет присвоено полученному архиву, а «./» указание папки

А для распаковки этого архива будем использовать

-A, —catenate, —concatenate
склеить файлы tar в один архив

-c, —create
создать новый архив

-d, —diff, —compare
найти различия между архивом и файловой системой

—delete
удалить из архива (не применяется к магнитным лентам!)

-r, —append
добавить файлы в конец архива

-t, —list
показать содержимое архива

-u, —update
добавить только новые версии файлов файлов

-x, —extract, —get
извлечь файлы из архива

-j, —bzip2
используется для создания/распаковки .bz2 файлов

-z, —gzip, —ungzip
используется для создания/распаковки .gz файлов

-M, —multi-volume
создать/показать/распаковать многотомный архив

Другие не менее интересные опции этой очень важной команды можно найти в руководстве пользователя — man tar.

tar -czvf - --exclude=www/test --exclude='*.zip' /var/www/ | split -b 1024m - ./backup.tar.gz

(«-» после -czvf говорит tar’у выводить в stdout, чтобы потом split мог его разбить на части(а «-» в split говорит ему брать из stdin)) В результате будут созданы файлы backup.tar.gzaa, backup.tar.gzab, backup.tar.gzac . размер каждого 1024 Мб. Именно последние две буквы в названии архива .tar.gzaa, .tar.gzab и т.д., указывают на то, что он разбит на части.

Склеить все части можно командой

cat часть1 часть2 часть3 > архив.tar.gz
cat backup.tar.gzaa backup.tar.gzab backup.tar.gzac > backup.tar.gz
cat backup.tar.* > backup.tar.gz

в результате будут созданы файлы arch.7z.001 arch.7z.002 arch.7z.003 . размер каждого 100 Мб (опция -v100m).

Чтобы распаковать многотомный архив arch.7z.001, достаточно поместить все части архива в текущую папку и дать команду

unrar e -p"Пароль" archive.rar

между вашим паролем и ключем -p не должно быть пробелов, в кавычки надо брать если в пароле используется например дефис или другой системный символ

создание и распаковка архива с паролем через 7zip

7za a -mhe=on -ms=on -p Documents.7z Documents/

Источник

How to gzip all files in all sub-directories into one compressed file in bash

This post describes how to gzip each file individually within a directory structure. However, I need to do something slightly different. I need to produce one big gzip file for all files under a certain directory. I also need to be able to specify the output filename for the compressed file (e.g., files.gz) and overwrite the old compressed file file if one already exists.

gzip by its very nature compresses only a single file. To put multiple files into one file for subsequent gzipping, use tar .

3 Answers 3

tar -zcvf compressFileName.tar.gz folderToCompress 

everything in folderToCompress will go to compressFileName

Edit: After review and comments I realized that people may get confused with compressFileName without an extension. If you want you can use .tar.gz extension(as suggested) with the compressFileName

Читайте также:  Apt get install linux tools

You’ll probably want to choose compressFileName so it includes the .tar.gz extension or you’ll drive everyone else crazy.

This also works for an arbitrary number of directories, e.g. tar -zcvf two-dirs.tar.gz dir-one dir-two will create an archive containing two directories.

there are lots of compression methods that work recursively command line and its good to know who the end audience is.

i.e. if it is to be sent to someone running windows then zip would probably be best:

zip -r file.zip folder_to_zip unzip filenname.zip 

for other linux users or your self tar is great

tar -cvzf filename.tar.gz folder tar -cvjf filename.tar.bz2 folder # even more compression #change the -c to -x to above to extract 

One must be careful with tar and how things are tarred up/extracted, for example if I run

cd ~ tar -cvzf passwd.tar.gz /etc/passwd tar: Removing leading `/' from member names /etc/passwd pwd 

this will create /home/myusername/etc/passwd

unsure if all versions of tar do this:

 Removing leading `/' from member names 

Источник

Команда gzip в операционной системе Linux

img

Gzip – один из самых популярных алгоритмов сжатия, который позволяет сократить размер файла, но при этом сохранить исходный файловый режим, владельца объекта и отметку времени.

Gzip

Gzip является отсылкой к формату файлов .gz и утилите gzip , используемой для сжатия и распаковки файлов.

В данной статье мы покажем, как использовать команду gzip .

Синтаксис команды gzip

Общий синтаксис команды gzip выглядит следующим образом:

Gzip сжимает отдельные файлы и создает сжатый файл для каждого заданного файла в отдельности. По определению имя файла, который был сжат с помощью Gzip, должно оканчиваться на .gz или .z .

Если вам необходимо сжать несколько файлов или каталогов в один файл, то для начала вам нужно создать архив Tar, а затем уже сжать файл с разрешением .tar с помощью Gzip. Файл, оканчивающийся на .tar.gz или .tgz , представляет собой архив Tar, сжатый с помощью Gzip.

Как правило, Gzip используют для сжатия текстовых файлов, архивов Tar и веб-страниц. Не нужно использовать Gzip для сжатия изображений, аудиофайлов, PDF-документов и других файлов в двоичном формате, поскольку они уже являются сжатыми.

gzip может сжимать только обычные файлы. символические ссылки он игнорирует.

Сжатие файлов с помощью gzip

Для того, чтобы сжать один файл, вызовите команду gzip , за которой следует имя файла:

gzip создаст файл с именем имя_файла.gz , а исходный файл удалит.

По умолчанию gzip сохраняет в сжатом файле временную метку, файловый режим, владельца объекта и имя исходного файла.

Сохранение исходного файла

Если вы хотите, чтобы исходный файл был сохранен, воспользуйтесь параметром –k :

Есть еще один вариант сохранить исходный файл – воспользоваться параметром -c , который сообщает gzip о необходимости записи в стандартный вывод и перенаправлении вывода в файл:

gzip -c имя_файла > имя_файла.gz

Подробный вывод

Если вы хотите увидеть процент уменьшения размера файла и имена обрабатываемых файлов, тогда воспользуйтесь параметром -v :

gzip -v имя_файла имя_файла: 7.5% -- replaced with имя_файла.gz

Сжатие нескольких файлов

В качестве аргументов команде вы можете передать несколько файлов. Например, чтобы сжать файлы с именами file1 , file2 , file3 , вам необходимо выполнить следующую команду:

Читайте также:  Linux install kernel rpm

После чего приведенная выше команда создаст три сжатых файла: file1.gz , file2.gz , file3.gz .

Сжатие всех файлов в каталоге

Для того, чтобы сжать все файлы в каталоге, воспользуйтесь параметром -r :

gzip рекурсивно пройдет через всю структуру каталогов и произведет сжатие всех файлов в каталоге и его подкаталогах.

Изменение уровня сжатия

gzip дает возможность указать уровень сжатия, его диапазон — от 1 до 9. -1 или —fast означает самую высокую скорость сжатия с минимальной степенью сжатия, -9 или —best — самую низкую скорость с максимальной степенью. По умолчанию уровень сжатия равен -6 .

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

Сжатие – это задача, интенсивно использующая ЦП. Соответственно, чем выше уровень сжатия, тем больше времени занимает процесс.

Использование стандартного ввода

Для того, чтобы создать файл расширения .gz из стандартного ввода, вам необходимо передать вывод команды gzip. Например, чтобы сжать резервную копию базы данных MySQL, вам необходимо запустить следующую команду:

mysqldump имя_базы_данных | gzip -c > имя_базы_данных.sql.gz

Вывод команда mysqldump послужит вводом для gzip.

Распаковка файлов с помощью gzip

Для того, чтобы распаковать файл с расширением .gz , воспользуйтесь параметром -d :

Есть также еще одна команда, которую вы можете использовать для распаковки файла Gzip, — это gunzip . Эта команда по сути является альтернативным вариантом команды gzip -d :

Сохранение сжатого файла

Здесь, как и при сжатии файла, для того, чтобы показать gzip, что входной файл (в данном случае это сжатый файл) нужно сохранить, необходимо воспользоваться параметром -k :

Распаковка нескольких файлов

Для того, чтобы распаковать несколько файлов одновременно, вам необходимо передать имена файлов в gzip в качестве аргументов:

gzip -d file1.gz file2.gz file3.gz

Распаковка всех файлов в каталоге

Для того, чтобы gzip рекурсивно распаковал все файлы в заданном каталоге, необходимо воспользоваться параметрами -d и -r :

Перечень содержимого сжатого файла

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

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

compressed uncompressed ratio uncompressed_name 130 107 7.5% имя_файла

Чтобы получить больше информации, добавьте параметр -v :

gzip -lv имя_файла method crc date time compressed uncompressed ratio uncompressed_name defla a9b9e776 Sep 3 21:20 130 107 7.5% имя_файла

Заключение

С помощью Gzip вы можете уменьшить размер определенного файла — команда gzip позволяет сжимать и распаковывать файлы.

Источник

Оцените статью
Adblock
detector