Работа с архивами в Linux: различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
| Строка 34: | Строка 34: | ||
tar -C /home/user -cJv ./ > archive.tar.xz | tar -C /home/user -cJv ./ > archive.tar.xz | ||
tar -C /home/user -cJvf archive.tar.xz ./ | tar -C /home/user -cJvf archive.tar.xz ./ | ||
| + | </pre> | ||
| + | '''Разреженные файлы (sparse)''' | ||
| + | <pre> | ||
# в архиве файлы сохраняется как sparse | # в архиве файлы сохраняется как sparse | ||
# при восстановлении из такого архива файлы будут записываться на диск как sparse, даже если опция --sparse не указана | # при восстановлении из такого архива файлы будут записываться на диск как sparse, даже если опция --sparse не указана | ||
| Строка 41: | Строка 44: | ||
# (не проверено) предположительно будет восстанавливать все файлы с конвертацией в sparse, даже если архивировались без sparse | # (не проверено) предположительно будет восстанавливать все файлы с конвертацией в sparse, даже если архивировались без sparse | ||
tar --sparse -xJvf /home/user/archive.tar.xz | tar --sparse -xJvf /home/user/archive.tar.xz | ||
| − | |||
</pre> | </pre> | ||
Версия 02:38, 24 июля 2025
часто используемые
В Linux классические утилиты архивации и сжатия данных разделены.
Команда tar архивирует каталоги в один файл без сжатия, хотя в ней есть опции позволяющие задействовать утилиты сжатия.
-c создание архива -x распаковка архива -v подробно выводить информацию -z использовать gzip -J использовать xz -C <path> на время выполнения команды меняет текущий каталог на указанный -f <path_to_arch_file> файл архива, можно использовать вместо перенаправления потока
Утилиты сжатия, принимают данные из стандартного входа и выдают результат на стандартный выход
- gzip - жмет быстро но слабо
- xz - жмет хорошо но медленно
По умолчанию данные сжимаются, для обратного процесса используется опция -d (--decompress)
Архивация
# идентичные команды без сжатия 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