заглянуть

Работа с 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

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

uzverss: (Default)
uzverss

December 2024

S M T W T F S
12345 67
891011121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 01:18 pm
Powered by Dreamwidth Studios