
заглянуть
Работа с TAR
В двух словах о самом формате tar
http://ru.wikipedia.org/wiki/Tar писал(а):
...в настоящее время tar используется для хранения нескольких файлов внутри одного файла, для распространения программного обеспечения, а также по прямому назначению — для создания архива файловой системы.
Например чтобы запаковать текущую папку в tar-архив напишем
tar -cvf foo.tar ./
где foo.tar имя которое будет присвоено полученному архиву, а "./" указание папки
А для распаковки этого архива будем использовать
tar -xvf foo.tar
Работа с TAR/GZ и TAR/BZIP2
- Tar-архив может быть дополнительно сжат одним из поддерживаемых архиваторов: gzip, bzip2 и др.
Для указания архиватора указывается один из дополнительных параметров, например:
запаковать gzip'ом foo.tar.gz
tar -cvzf foo.tar.gz ./
запаковать bzip2'ом foo.tar.bz2
tar -cvjf foo.tar.bz2 ./
запаковать xz
tar -Jcvf foo.tar.xz ./
распаковать запакованный gzip'ом foo.tar.gz
tar -xvzf foo.tar.gz
универсальная распаковка tar.gz tar.bz и тд
tar -xavf foo.tar
Запаковать несколько папок в один архив:
tar -czvf папка.tar.gz папка1 папка2 папка3
tar -xvzf $HOME/Downloads/архив.tar.gz -C $HOME/папка/
Unix. tar.gz. Как разархивировать отдельную папку или файл
При большом размере файла бэкапа не всегда есть необходимость разархивировать все файлы, вполне достаточно всего одного файла или папки.
Для этого необходимо выполнить следующую команду:
tar -zxvf mytar.ball.tar.gz -C /tmp dir-name
При этом необходимо указывать путь к папке, как он сохранен в архиве. Посмотреть можно следующей командой:
tar -ztf backup.tar.gz |grep dir-name
Пример
tar -zxvf mytar.ball.tar.gz -C /tmp www/domain.com/data/
Разархивирует содержимое папки www/domain.com/data/ в папку /tmp
Основные опции команды tar:
https://www.dmosk.ru/miniinstruktions.php?mini=tar-unix
-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.
Работа с ZIP
- Запаковать текущую папку с подпапками в zip-архив folder.zip
zip -r folder.zip ./
Распаковать архив folder.zip в папку folder
unzip ./folder.zip -d ./folder
Распаковать архив c кодировкой не utf-8
unzip -l -O cp1251 folder.zip -d ./folder
unzip -l -O koi8-r folder.zip -d ./folder
unzip -l -O cp866 folder.zip -d ./folder
unzip -l folder.zip -d ./folder
Работа с многотомными архивами tar.gz
Допустим нам надо запаковать содержимое папки /var/www, исключив папку /var/www/test и все zip архивы, в многотомный архив с размером тома 1024 Мб. Делается это командой
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
ещё примеры
https://www.oslogic.ru/knowledge/473/shpargalka-po-arhivatoru-zip/
Создание архива. Необходимо сделать архив всех папок и файлов из директорий /var/www/ и /etc/nginx/ кроме директории /var/www/old_site/:
$ zip -r -9 www-archive.zip /var/www/* /etc/nginx/* -x "/var/www/old_site/*"
где
-r – архивировать рекурсивно
-9 – степень сжатия от 1 до 9. 0 – “архивирование” совсем без сжатия.
www-archive.zip – имя архива
/var/www/* /etc/nginx/* – архивируемые директории через пробел. * – все файлы
-x “/var/log/apt/*” – опция, позволяющая исключить указанную папку или файл из архива
Для того, чтобы запаролить архив необходимо указать опцию -e:
$ zip -e mypass -r -9 www-archive.zip /var/www/* /etc/nginx/* -x "/var/www/old_site/*"
Распаковка архива. unzip обычно уже установлен в Ubuntu. Если нет – установить из репозитория.
$ unzip www-archive.zip
– распаковать архив в текущую директорию
$ unzip www-archive.zip -d /temp/
– распаковать содержимого архива в директорию /temp/
Распаковка отдельного файла из архива.
$ unzip www.archive.zip my-file.php
– распаковка файла my-file.php из архива в текущую директорию
Для того, чтобы просмотреть содержание архива zip без распаковки:
$ unzip -l archive.zip
– просмотр содержимого архива zip
Для получения более детальной информации во время разархивирования, можно использовать опцию -v:
$ unzip -v www-archive.zip
Проверка целостности архива без распаковки:
$ unzip -t archive.zip
Работа с 7zip
- Создание многотомного архива arch.7z папки soft/
7z a -v100m arch.7z soft/
в результате будут созданы файлы arch.7z.001 arch.7z.002 arch.7z.003 ..., размер каждого 100 Мб (опция -v100m).
Чтобы распаковать многотомный архив arch.7z.001, достаточно поместить все части архива в текущую папку и дать команду
7z x arch.7z.001
Как распаковать запароленный архив
7z e -pПароль archive.7z
unrar e -p"Пароль" archive.rar
между вашим паролем и ключем -p не должно быть пробелов, в кавычки надо брать если в пароле используется например дефис или другой системный символ
создание и распаковка архива с паролем через 7zip
7za a -mhe=on -ms=on -p Documents.7z Documents/
пароль будет запрошен системой
7za x Documents.7z
пароль также спросит система после ввода команды
работа с GZIP (упаковка файлов)
- gzip test.sql – упакует, добавит gz и УДАЛИТ! файл
gunzip test.sql.gz – распакует и УДАЛИТ! test.sql.gz
Прочесть сжатый GZIP файл
gzip 123.txt - упаковать текстовой файл
zcat 123.txt.gz - прочесть его
работа с xz
Как упаковывать и распаковывать архивы *.xz (без tar и вместе с ним)
sudo apt install xz-utils
1. Упаковать файл file.txt:
xz file.txt
или
xz --compress file.txt
Получится упакованный файл file.txt.xz. Исходный файл file.txt будет удален.
2. Распаковать файл file.txt.xz:
unxz file.txt.xz
или
xz --decompress file.txt.xz
Получится файл file.txt. Исходный архив file.txt.xz будет удален.
3. Упаковать все файлы в текущем каталоге и всех подкаталогах:
tar -Jcvf allfiles.tar.xz *
Исходные файлы удаляться не будут.
Архиватор xz умеет использовать многопоточность при упаковке. Для использования одного потока на одно физическое ядро, можно воспользоваться опцией -T0. Чтобы tar передал xz опцию использования многопоточности для упаковки файлов, команда упаковки будет выглядеть так:
tar -cvf allfiles.tar.xz --use-compress-program='xz -T0' *
Чтобы видеть информацию о ходе упаковки, можно пользоваться опцией -v:
tar -cvf allfiles.tar.xz --use-compress-program='xz -vT0' *
4. Распаковать архив формата *.tar.xz:
tar -Jxvf allfiles.tar.xz
Исходный архив allfiles.tar.xz удален не будет.
поиск файла по архивам
https://man-linux.ru/man/list/zgrep/
Поиск по шаблону “gfx” в текущем каталоге:
zgrep -l -e gfx *
zgrep -l -e gfx ./*
работа с архивами в интерпретаторе Python
- $ python3
>>> import shutil
>>> shutil.make_archive('/home/user/каталог/имя_архива', 'zip', '/home/user/path')
сделает архив содержимого каталога path и положит в указанном месте с указанным именем, добавив расширение сжатия (zip)
форматы сжатия zip gztar bztar
$ python3
>>> import zipfile
>>> zipfile.ZipFile('/home/user/file.zip').extractall('/home/user/tmp/new')
распакует архив в папку new, папка будет создана, если её нет
или просто в консоли использовать модули python:
$ python3 -m tarfile -c $HOME/tmp/new_archiv.tar.bz2 $HOME/tmp/rt/ - создать архив
$ python3 -m tarfile -e $HOME/tmp/new_archiv.tar.bz2 $HOME/tmp/rt/1 - распаковать архив
аналогично для форматов tar.gz и tar.xz
разное
Алгоритм сжатия Хаффмана
Что такое ZIP-бомба и почему ее не нужно бояться
Ещё лучшая ZIP-бомба
Защищаем сайт с помощью ZIP-бомб
dd if=/dev/zero bs=1M count=10240 | gzip > 10G.gzip
Zip-файлы: история, объяснение и реализация
Создание инкрементальных и дифференциальных архивов при помощи tar в Linux
Работа с архиваторами (tar, zip, gz, bzip2) из консоли Linux
Использование утилиты tar по сети через SSH
https://docs.python.org/3/library/tarfile.html
http://uzverss.livejournal.com/33187.html#archive