Работа с архивами в Linux: различия между версиями
Перейти к навигации
Перейти к поиску
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
| Строка 10: | Строка 10: | ||
-J использовать xz | -J использовать xz | ||
-C <path> меняет текущий каталог на указанный для следующих далее параметров, в одной команде может использоваться несколько раз | -C <path> меняет текущий каталог на указанный для следующих далее параметров, в одной команде может использоваться несколько раз | ||
| − | -f <path_to_arch_file> файл | + | -f <path_to_arch_file> направляет поток архивируемых данных у указанный файл, по умолчанию направляется на стандартный вывод |
</pre> | </pre> | ||
| − | Утилиты сжатия | + | '''Утилиты сжатия''' |
| − | + | <pre> | |
| − | + | # gzip - использует метод сжатия zip, жмет быстро но слабо | |
| + | # xz - использует метод сжатия lzma, жмет хорошо но медленно | ||
| − | + | # сжатие данных из стандартного ввода и направление результата на стандартный вывод | |
| + | cat /path/to/file | gzip > /path/to/file.gz | ||
| + | cat /path/to/file | xz > /path/to/file.xz | ||
| + | |||
| + | # сжатие файлов | ||
| + | # указанные файлы сжимаются с добавлением соответствующего расширения, исходные файлы удаляются | ||
| + | gzip /path/to/file | ||
| + | xz /path/to/file | ||
| + | |||
| + | # для распаковки используется опция -d (--decompress) | ||
| + | cat /path/to/file.gz | gzip -d > /path/to/file | ||
| + | cat /path/to/file.xz | xz -d > /path/to/file | ||
| + | gzip -d /path/to/file.gz | ||
| + | xz -d /path/to/file.xz | ||
| + | |||
| + | </pre> | ||
'''Архивация''' | '''Архивация''' | ||
Версия 03:05, 24 июля 2025
часто используемые
В Linux классические утилиты архивации и сжатия данных разделены.
Команда tar архивирует каталоги в один файл без сжатия, хотя в ней есть опции позволяющие задействовать утилиты сжатия.
-c создание архива -x распаковка архива -v подробно выводить информацию -z использовать gzip -J использовать xz -C <path> меняет текущий каталог на указанный для следующих далее параметров, в одной команде может использоваться несколько раз -f <path_to_arch_file> направляет поток архивируемых данных у указанный файл, по умолчанию направляется на стандартный вывод
Утилиты сжатия
# gzip - использует метод сжатия zip, жмет быстро но слабо # xz - использует метод сжатия lzma, жмет хорошо но медленно # сжатие данных из стандартного ввода и направление результата на стандартный вывод cat /path/to/file | gzip > /path/to/file.gz cat /path/to/file | xz > /path/to/file.xz # сжатие файлов # указанные файлы сжимаются с добавлением соответствующего расширения, исходные файлы удаляются gzip /path/to/file xz /path/to/file # для распаковки используется опция -d (--decompress) cat /path/to/file.gz | gzip -d > /path/to/file cat /path/to/file.xz | xz -d > /path/to/file gzip -d /path/to/file.gz xz -d /path/to/file.xz
Архивация
# идентичные команды без сжатия tar -C /home/user -cv ./ > archive.tar tar -C /home/user -cvf archive.tar ./ # идентичные команды сжатия gzip tar -C /home/user -cv ./ | gzip > archive.tar.gz tar -C /home/user -czv ./ > archive.tar.gz tar -C /home/user -czvf archive.tar.gz ./ # идентичные команды сжатия xz tar -C /home/user -cv ./ | xz > archive.tar.xz tar -C /home/user -cJv ./ > archive.tar.xz tar -C /home/user -cJvf archive.tar.xz ./
Разреженные файлы (sparse)
# в архиве файлы сохраняется как sparse # при восстановлении из такого архива файлы будут записываться на диск как sparse, даже если опция --sparse не указана tar --sparse -cJvf /home/user/archive.tar.xz ./ # (не проверено) предположительно будет восстанавливать все файлы с конвертацией в sparse, даже если архивировались без sparse tar --sparse -xJvf /home/user/archive.tar.xz
Распаковка
# идентичные команды распаковки gzip cat archive.tar.gz | gzip -d | tar -C /home/user -xv zcat archive.tar.gz | tar -C /home/user -xv cat archive.tar.gz | tar -C /home/user -xzv tar -C /home/user -xzvf archive.tar.gz # идентичные команды распаковки xz cat archive.tar.xz | xz -d | tar -C /home/user -xv xzcat archive.tar.xz | tar -C /home/user -xv cat archive.tar.xz | tar -C /home/user -xJv tar -C /home/user -xJvf archive.tar.xz
Разделение функций дает большую гибкость. Утилиты сжатия потока данных можно применять для сжатия проходящего трафика и прочих потоковых операциях.
Но есть и недостаток. Проблематично добавлять или изменять файлы в больших сжатых архивах. Для этих целей лучше использовать другие форматы архивов и другие утилиты совмещающие в себе функции архивации и сжатия. Например, zip или 7zip.
zip -r arch.zip /home/user 7za a arch.7z /home/user
cpio
cpio это более древний аналог tar
# вывод списка файлов в архиве cpio -it -F file.cpio # создать архив ls | cpio -ov > archive.cpio # распаковать архив в текущую директорию cpio -idv < /path/to/archiv.cpio