Linux: Как архивировать с помощью zip

Приветствую всех.

На самом деле, всё описанное тут, весьма тривиально, но, лично у меня, возникли достаточно большие проблемы как с попыткой интуитивного использования командной утилиты для архивирования zip, так и с чтением документации. Почему-то, tar и gzip для меня гораздо проще и понятней, а для того чтобы заархивировать директорию с помощью zip ушло далеко не 5 минут и наш диалог с zip, какое-то время, заканчивался заявлениями «zip error: Nothing to do!» — мол, ничего не поделать тут. Man-pages для zip тоже показались весьма запутанными. Поэтому, чтобы не гуглить в следующий раз, выкладываю краткую инструкцию по архивирования с помощью zip’а в linux из-под консоли.

Ставим сам пакет, для дистрибутивов на основе debian это выглядит так:
sudo apt-get install zip

Архивируем нужную папку:
zip -9 zetblog.zip -r zetblog -x "*.git*" -x "*.venv*" -z

Небольшое пояснение к аргументам zip:

  • -9 — задаёт степень сжатия, 9 — самое сильное и самое медленное;
  • zetblog.zip — имя архива который надо создать;
  • -r — флаг рекурсивного обхода;
  • zetblog — диреткория, которую будем архивировать;
  • -x — не добавлять в архив файлы и директории, которые попадают под указанную маску;
  • -z — этот флаг означает что мы хотим ввести комментарий для архива, комментарий будет считан из stdin, для завершения ввода нужно ввести строку содержащую одну точку и больше ничего.

Остальное можно подглядеть читая man zip.

Понравилась статья? Поделиться с друзьями:
Комментариев: 1
  1. Олег

    Спасибо за статью — единственное что-то достойное нашёл в сети именно у Вас по описанию терминальной команды ZIP.
    Сам выбрал архиватор ZIP потому что, если делать бэкапы стандартной утилитой tar, то на выходе идут крякозябры в русских именах. А с утилитой ZIP получаем сразу 3 плюса:
    1. можно открыть архив с помощью Windows даже не имея на борту архиватора.
    2. русские имена файлов и папок вкладывает в архив в нормальной кодировке.
    3. степень сжатия выше чем у tar.

    Сам же я модифицировал Ваш пример вот так:
    zip -9 /backups/backups_date +%Y.%m.%d_%H_%M.zip -r /fileshare ,
    где
    -9 — описано выше в статье
    /backups/ — папка с подмонтированным сетевым диском в ntfs;
    backups_date +%Y.%m.%d_%H_%M.zip — имя файла, в котором date +%Y.%m.%d_%H_%M обозначает, что к имени файла будет приплюсована дата и время создания;
    -r — описано выше в статье
    /fileshare — сетевая папка, подлежащая архивированию.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: