Необходимость упаковывать и сжимать файлы в единый архив существует с тех пор, как компьютеры впервые получили жесткие диски, и эта потребность сохраняется до сегодняшнего дня. Все, от документов и фотографий до программного обеспечения и драйверов устройств, загружается и загружается в виде архивов каждый день. Большинство пользователей компьютеров знакомы с файлами .zip, но архивы - это не только скромный .zip. В этом руководстве мы покажем вам различные команды архивирования и сжатия в Linux и как их правильно использовать.
Tar и gzip
Исторически в Linux инструментом архивирования по умолчанию является команда tar
. Первоначально это означало "Ленточный архив", но это было еще тогда, когда ленты были основным носителем для перемещения данных. Команда tar
очень гибкая и может создавать, сжимать, обновлять, извлекать и тестировать архивные файлы. Расширением по умолчанию для несжатого tar-архива (иногда называемого tar-файлом или tarball) является .tar, в то время как сжатые tar-архивы чаще всего используют расширение .tgz (то есть файл tar, сжатый с помощью GNU zip). Tar на самом деле предлагает несколько различных методов сжатия, включая bzip2, zip, LZW и LZMA.
Чтобы создать несжатый архив всех файлов в каталоге, используйте следующую команду:
tar cvf somefiles.tar *
c
означает создание, v
означает подробный (это означает, что команда tar перечислит файлы, которые она архивирует), а f
сообщает tar, что следующий параметр - это имя файла архива, в данном случае "somefiles.tar". Подстановочный знак * означает все файлы в каталоге, как и для большинства команд оболочки Linux.
Архив "somefiles.tar" создается в локальном каталоге. Теперь его можно сжать с помощью таких инструментов, как gzip, zip, compress или bzip2. Например:
gzip somefiles.tar
gzip сожмет архив и добавит расширение .gz. Теперь в локальном каталоге есть файл somefiles.tar.gz
вместо файла somefiles.tar
.
Этот двухэтапный процесс, создание архива и его сжатие, можно свести к одному шагу, используя встроенное сжатие tar:
tar cvzf somefiles.tgz *
В результате будет создан архивный архив, сжатый с помощью gzip, с именем somefiles.tgz
. Дополнительная опция z
заставляет tar сжимать архив. Вместо z
вы можете использовать j
, J
или Z
, который сообщает tar использовать сжатие bzip2, xz и LZW. соответственно. xz реализует сжатие LZMA2 по тому же алгоритму, что и популярная программа Windows 7-Zip.
7-молния
7zr
command. To create a .7z archive use: 7zr a somefiles.7z *
Параметры a
означают добавить, т.е. добавить все локальные файлы в архив somefiles.7z. Затем этот файл можно отправить пользователю Windows, и он сможет без проблем извлечь его содержимое.
Не рекомендуется использовать 7zr для резервного копирования в Linux, поскольку 7-zip не хранит информацию о владельце / группе архивируемых файлов. Можно использовать 7zr для сжатия архива (который хранит информацию о владельце). Вы можете сделать это с помощью канала Unix следующим образом:
tar cvf - *| 7zr a -si somefiles.tar.7z
Дефис после параметра f
указывает tar отправлять свой вывод в stdout
Unix, а не в файл. Поскольку мы используем канал, вывод tar будет передан в 7zr, который ожидает ввода от stdin
из-за параметра -si
. Затем 7zr создаст архив с именем somefiles.tar.7z
, который будет содержать tarball, который, в свою очередь, содержит файлы. Если вы не знакомы с использованием каналов, вы можете создать стандартный tarball, а затем сжать его с помощью 7zr, выполнив два шага:
tar-cvf somefiles.tar *7zr a somefiles.tar.7z somefiles.tar
Добыча
Извлечь файлы из этих разных архивов также очень просто, вот краткая шпаргалка по извлечению различных файлов, созданных выше.
Чтобы извлечь простой tar-архив, используйте:
tar xvf somefiles.tar
Где x
означает извлечение.
Чтобы распаковать сжатый архив, используйте:
tar xvzf somefiles.tgz
Параметр z
сообщает tar, что для сжатия исходного архива использовался gzip. Вместо z
вы можете использовать j
, J
или Z
в зависимости от алгоритма сжатия, использованного при создании файла. .
Чтобы извлечь файлы из файла 7-Zip, используйте:
7zr и somefiles.tar.7z
Заключение
Linux предлагает широкий набор команд архивирования и сжатия. Попробуйте поэкспериментировать с командами zip и xz, они работают аналогично другим упомянутым здесь инструментам. Если вы застряли, попробуйте прочитать справочную страницу, например man xz
за дополнительной помощью.
3 комментария
Комментарии закрыты.
Сжатие также полезно, если вы загружаете файлы из удаленной сети. Отличная статья
rsync также может использовать сжатие для передачи файлов.
-z или –compress
С указанным выше параметром rsync сжимает данные при их отправке на конечный компьютер.
Спасибо, этот сайт очень практичный.