- Linux zip запаковать файл
- Практические примеры команды zip
- Есть много вещей, которые вы можете сделать с помощью команды Linux zip
- Как создать архив всех файлов в папке
- Как включить скрытые файлы в архив
- Как архивировать все файлы и подпапки в Zip-файле
- Как добавить новые файлы в существующий архивный архив
- Как обновить существующие файлы в заархивированном архиве
- Как удалить файлы из архива
- Как скопировать файлы из одного Zip-файла в другой
- Как использовать Pattern Matching и Piping для создания архива
- Как создать сплит архив
- Как настроить отчет о ходе процесса архивирования
- Как исправить файл Zip
- Как зашифровать архив
- Как показать, что будет в архиве
- Как проверить архив
- Как исключить файлы
- Как указать уровень сжатия
- Как создавать и распаковывать архивы zip в консоли Linux
- Формат сжатого архива ZIP
- zip, unzip и другие утилиты
- Как создать ZIP-файл с помощью команды zip
- Включение каталогов в ZIP-файлы
- Установка уровня сжатия
- Добавление паролей к ZIP-файлам
- Как распаковать ZIP-файл с помощью команды unzip
- Извлечение файлов в целевой каталог
- Извлечение защищенных паролем ZIP-файлов
- Исключение файлов
- Перезапись файлов
- Глядя внутрь ZIP-файла
- Добавить пароль с помощью команды zipcloak
- Просмотр сведений о файле с помощью команды zipdetails
- Поиск внутри файла с помощью команды zipgrep
- Просмотр информации с помощью команды zipinfo
- Разделить файл командой zipsplit
Linux zip запаковать файл
Сжатые файлы занимают меньше места на диске и загружаются из сети быстрее, чем большие, несжатые файлы. Вы можете сжать файлы Linux свободно распространяемыми утилитами сжатия Gzip или Zip , такой формат распознаётся большинством операционных систем.
По умолчанию, сжатые файлы получают расширение .gz . Команда Gzip создаёт сжатый файл с расширением .gz ; Gunzip извлекает сжатые файлы и удаляет файл .gz .
Чтобы сжать файл, в приглашении оболочки введите следующая команду:
Файл будет сжат и сохранён под именем filename.ext.gz .
Чтобы развернуть сжатый файл введите:
Файл filename.ext.gz при этом удаляется и заменяется файлом filename.ext .
Если вы обмениваетесь файлам с пользователям не Linux, вероятно лучше использовать zip , чтобы избежать проблем совместимости. Red Hat Linux может легко открыть zip или gzip файлы, но не Linux операционные системы могут не справиться с файлами gzip.
Чтобы сжать файл с помощью zip , введите:
zip -r filename.zip files
В этом примере filename определяет имя создаваемого файла, а files определяет какие файлы вы хотите включить в архив:
Чтобы извлечь содержимое файла zip, введите:
Вы можете сжать с помощью zip или gzip сразу несколько файлов. Перечислите имена файлов, разделив их пробелами.
gzip filename.gz file1 file2 file3 /user/work/school
Приведённая выше команда сожмёт file1 , file2 , file3 и содержимое каталога /user/work/school и поместит их в файл filename.gz .
Tar сохраняет несколько файлов или содержимое каталога или каталогов в одном файле. Это хороший способ создавать резервные копии и архивы. Обычно файлы, сделанные tar, имеют расширение .tar .
Чтобы создать файл tar, введите:
tar -cvf filename.tar files/directories
В этом примере filename.tar определяет имя создаваемого файла, а files/directories определяет какие файлы или каталоги вы хотите включить в новый архив.
Вы можете использовать абсолютные или относительные пути для этих файлов или каталогов (чтобы узнать больше о путях, обратитесь к разделу Смена каталогов с помощью cd в Главе 10 ). Разделите имена файлов и каталогов пробелами.
В показанном ниже примере показано создание файла с абсолютными путями:
tar -cvf foo.tar /home/mine/work /home/mine/school
Указанная выше команда поместит все файлы каталога /work и подкаталога /school в новый файл foo.tar в текущем рабочем каталоге.
Команда tar -cvf foo.tar file1.txt file2.txt file3.txt поместит файлы: file1.txt , file2.txt и file3.txt в новый файл foo.tar .
Чтобы просмотреть содержимое файла tar, введите:
Чтобы извлечь содержимое файла tar, введите:
Эта команда не удаляет файл .tar , а извлекает содержимое .tar в текущий рабочий каталог.
Команда tar не автоматического выполняет сжатия файлов. Вы можете сжать файлы tar выполнив:
tar -czvf foo.tar
Сжатые файлы обычно имеют расширение .tgz и сжимаются при помощи gzip.
Источник
Практические примеры команды zip
Есть много вещей, которые вы можете сделать с помощью команды Linux zip
Существует несколько различных способов сжатия файлов с помощью командной строки Linux. Эта статья содержит практические примеры, которые показывают, как использовать команду zip для сжатия и организации файлов в вашей файловой системе.
Сжатые файлы используются, когда вам нужно сэкономить место и копировать большие файлы из одного места в другое.
Если у вас есть 10 файлов размером 100 мегабайт, и вам нужно перенести их на FTP-сайт, передача может занять значительное время в зависимости от скорости вашего процессора. Если вы сжимаете все 10 файлов в один заархивированный архив, и сжатие уменьшает размер файла до 50 МБ на файл, то вам нужно только передать половину данных.
Как создать архив всех файлов в папке
Представьте, что у вас есть папка песен со следующими MP3-файлами:
Шоссе AC/DC в ад
Люблю голодного мужчину.mp3
Прогуляйся по тебе.mp3
Если тебе нужна кровь, ты ее получишь .mp3
Покажите вниз в огне.mp3
Сенсорный слишком много .mp3
Биение вокруг bush.mp3
Girls Got Rhythm.mp3
Эта простая команда Linux, которая иллюстрирует, как создать архив всех файлов в текущей папке с именем ACDC_Highway_to_Hell.zip:
Текст прокручивается вверх по экрану, показывая файлы по мере их добавления.
Как включить скрытые файлы в архив
Предыдущая команда хороша для архивирования всех файлов в папке, но она включает только файлы, которые не скрыты. Это не всегда так просто. Представьте, что вы хотите сжать домашнюю папку, чтобы ее можно было сохранить на USB-накопитель или внешний жесткий диск. Ваша домашняя папка содержит скрытые файлы.
Чтобы сжать все файлы, включая скрытые файлы в папке, выполните следующую команду:
Это создает файл с именем home.zip со всеми файлами в домашней папке. (Вы должны быть в домашней папке, чтобы это работало). Проблема этой команды в том, что она включает в себя только файлы в домашней папке, а не в папках, что приводит нас к следующему примеру.
Как архивировать все файлы и подпапки в Zip-файле
Чтобы включить все файлы и подпапки в архив, выполните следующую команду:
Как добавить новые файлы в существующий архивный архив
Если вы хотите добавить новые файлы в существующий архив или обновить файлы в архиве, используйте то же имя для файла архива при запуске команды zip.
Например, представьте, что у вас есть музыкальная папка с четырьмя альбомами в ней, и вы создаете архив с именем music.zip для хранения в качестве резервной копии. А теперь представьте, через неделю вы скачаете два новых альбома. Чтобы добавить новые альбомы в zip-файл, просто запустите ту же команду zip, что и на предыдущей неделе.
Для создания оригинального музыкального архива запустите следующий код:
zip -r music/home/yourname/music/
Чтобы добавить новые файлы в архив, снова запустите ту же команду.
Если в zip-файле содержится список файлов, а один из файлов на диске изменился, то исправленный файл обновляется в zip-файле.
Как обновить существующие файлы в заархивированном архиве
Если у вас есть zip-файл, который должен каждый раз содержать одни и те же имена файлов, и вы хотите обновить этот файл любыми изменениями, внесенными в эти файлы, то переключатель -f поможет вам сделать это. ,
Например, представьте, что у вас есть заархивированный файл со следующими файлами:
Теперь представьте, что в течение недели вы добавили два новых файла и изменили два файла так, чтобы папка/home/yourname/documents теперь выглядела так:
/home/ваше имя/документы/file4 (обновлено)
/home/ваше имя/документы/file5 (обновлено)
Когда вы выполните следующую команду, zip-файл будет содержать обновленные файлы (file4 и file5), но file7 и file8 не будут добавлены.
zip zipfilename -f -r/home/yourname/documents
Как удалить файлы из архива
Итак, вы создали большой zip-файл с сотнями файлов и теперь понимаете, что в zip-файле есть четыре или пять файлов, которые вам там не нужны. Без необходимости снова архивировать все эти файлы, вы можете просто запустить команду zip с переключателем -d следующим образом:
zip zipfilename -d [имя файла в архиве]
Например, если у вас есть файл в архиве с именем home/documents/test.txt, вы удалите его с помощью этой команды:
zip zipfilename -d home/documents/test.txt
Как скопировать файлы из одного Zip-файла в другой
Если у вас есть файлы в одном zip-файле, и вы хотите скопировать их в другой zip-файл, не извлекая их сначала и не разархивируя, используйте переключатель -u .
Предположим, у вас есть zip-файл с именем «Variousmusic.zip» с музыкой от разных исполнителей, одним из которых является AC/DC. Вы можете скопировать песни AC/DC из файла Variousmusic.zip в файл ACDC.zip, используя следующую команду:
zip Variousmusic.zip -U —out ACDC.zip «Back_In_Black.mp3»
Приведенная выше команда копирует файл «Back_In_Black.mp3» из различных музыкальных файлов.zip в ACDC.zip. Если zip-файл, в который вы копируете, не существует, он создается.
Как использовать Pattern Matching и Piping для создания архива
Следующий переключатель действительно полезен, потому что он позволяет вам использовать выходные данные других команд для вставки файлов в ваш zip-файл. Предположим, вы хотите создать файл с именем lovesongs.zip, который содержит каждую песню, в названии которой есть слово «любовь».
Чтобы найти файлы с любовью в заголовке, вы можете использовать следующую команду:
find/home/yourname/Music -name * love *
Приведенная выше команда не идеальна на 100 процентов, потому что она также подбирает слова типа «клевер», но вы поняли идею. Чтобы добавить все возвращенные результаты из вышеприведенной команды в zip-файл с именем lovesongs.zip, выполните эту команду:
find/home/yourname/Music -name * love * | zip lovesongs.zip — @
Как создать сплит архив
Если вы создаете резервную копию своего компьютера, но единственный носитель, на который у вас есть резервные копии, – это набор чистых DVD-дисков, у вас есть выбор. Вы можете сохранять файлы до тех пор, пока размер zip-файла не достигнет 4,8 гигабайта, и записать DVD-диск или создать нечто, называемое разделенным архивом, который продолжает создавать новые архивы в наборе после того, как он достигнет установленного вами предела.
zip mymusic.zip -r/home/myfolder/Music -s 670 м
Как настроить отчет о ходе процесса архивирования
Существуют различные способы настройки вывода, который появляется во время выполнения архивирования.
Доступны следующие переключатели:
- -db = показывает, сколько байтов было заархивировано и сколько осталось
- -dc = отображает количество заархивированных файлов и сколько их осталось
- -dd = отображает точки для каждых 10 МБ файла, который был заархивирован
- -ds = устанавливает частоту появления точек
- -du = отображает несжатый размер каждого файла
zip myzipfilename.zip -dc -r/home/music
Как исправить файл Zip
Если у вас поврежден zip-архив, вы можете попытаться исправить его с помощью команды -F , а в случае неудачи – команды FF .
Это полезно, если вы создали разделенный архив с помощью переключателя -s и потеряли один из файлов архива.
Например, попробуйте сначала это:
zip -F myfilename.zip —out myfixedfilename.zip
zip -FF myfilename.zip —out myfixedfilename.zip
Как зашифровать архив
Если у вас есть конфиденциальная информация, которую вы хотите сохранить в zip-файле, используйте команду -e для ее шифрования. Вас попросят ввести пароль и повторить пароль.
zip myfilename.zip -r/home/wikileaks -e
Как показать, что будет в архиве
Если вы знаете, что собираетесь создавать большой архив, убедитесь, что в zip-файл будут добавлены правильные файлы. Вы можете увидеть ожидаемые результаты команды zip, указав переключатель – sf .
zip myfilename.zip -r/home/music/-sf
Как проверить архив
После резервного копирования файлов в zip-файл заманчиво сэкономить место на диске, удалив исходные файлы. Прежде чем сделать это, рекомендуется проверить работоспособность zip-файла.
Вы можете использовать переключатель -T для проверки правильности zip-файла.
zip myfilename.почтовый индекс -T
Вывод этой команды, когда архив недействителен, может выглядеть примерно так:
- предупреждение zip: отсутствует подпись конца – вероятно, не zip-файл
Помните, что вы можете попробовать команду -F, чтобы исправить поврежденные zip-файлы.
Стоит отметить, что -T может выдавать ложные срабатывания в том смысле, что он говорит, что zip-файл поврежден, хотя при его открытии вы можете извлечь все файлы.
Как исключить файлы
Иногда вы хотите исключить определенные файлы из zip-файла. Например, если вы копируете файлы со своего телефона или цифровой камеры, у вас есть смесь видео и изображений. Возможно, вы захотите сжать фотографии в photos.zip и видео в videos.zip.
Вот один из способов исключить видео при создании photos.zip
zip photos.zip -r/home/photos/-x * .mp4
Как указать уровень сжатия
Когда вы сжимаете файлы в zip-файл, система решает, следует ли сжимать файл или просто сохранить его. Например, файлы MP3 уже сжаты, поэтому нет смысла их дополнительно сжимать; они обычно хранятся как внутри zip-файла.
Однако вы можете указать уровень сжатия от 0 до 9 для дальнейшего сжатия файла. Это занимает больше времени, но может значительно сэкономить место.
Источник
Как создавать и распаковывать архивы zip в консоли Linux
ZIP-файлы — это универсальный архив, обычно используемый в системах Windows, macOS и даже Linux. Вы можете создать zip-архив или распаковать файлы из одного с помощью некоторых общих команд терминала Linux.
Формат сжатого архива ZIP
Благодаря доминированию формата ZIP в области Windows, файлы ZIP, вероятно, являются наиболее распространенной формой сжатых архивов в мире.
Хотя файлы .tar.gz и tar.bz2 распространены в Linux, пользователи Windows, вероятно, отправят вам архив в формате ZIP. И, если вы хотите заархивировать некоторые файлы и отправить их пользователю Windows, формат ZIP будет самым простым и наиболее совместимым решением для всех.
zip, unzip и другие утилиты
Возможно, вы уже знаете, что Linux и Unix-подобные операционные системы, такие как macOS, имеют инструменты, позволяющие создавать ZIP-файлы и извлекать из них файлы, называемые zip и unzip . Но есть целый ряд связанных утилит, таких как zipcloak , zipdetails, zipsplit и zipinfo.
Мы проверили некоторые дистрибутивы Linux, чтобы увидеть, включают ли они эти утилиты в стандартную установку. Все утилиты присутствовали в Ubuntu 19.04, 18.10 и 18.04. Они также присутствовали в Манджаро 18.04. Fedora 29 включала zip и unzip , но ни одну из других утилит, и это также относится к CentOS.
Чтобы установить недостающие элементы в Fedora 29, используйте следующую команду:
Чтобы установить недостающие элементы в CentOS 7, используйте следующую команду:
Если какая-либо из утилит zip отсутствует в дистрибутиве Linux, который не был упомянут выше, используйте инструмент управления пакетами этого дистрибутива Linux для установки необходимого пакета.
Как создать ZIP-файл с помощью команды zip
Чтобы создать ZIP-файл, необходимо указать zip имя файла архива и какие файлы включить в него. Вам не нужно добавлять расширение «.zip» к имени архива, но это не повредит.
Чтобы создать файл с именем source_code.zip содержащий все файлы исходного кода C и заголовочные файлы в текущем каталоге, вы должны использовать эту команду:
Каждый файл указан как добавленный. Отображается имя файла и степень сжатия, достигнутая в этом файле.
Если вы посмотрите на новый ZIP-архив, то увидите, что расширение «.zip» было автоматически добавлено zip.
Если вы не хотите видеть вывод из zip при создании ZIP-файла, используйте параметр -q (quiet).
Включение каталогов в ZIP-файлы
Чтобы включить подкаталоги в ZIP-файл, используйте параметр -r (рекурсивный) и укажите имя подкаталога в командной строке. Чтобы создать ZIP-файл, как и раньше, а также включить подкаталог архива, используйте эту команду.
Чтобы быть внимательным к человеку, который будет извлекать файлы из создаваемого вами ZIP-файла, часто вежливо создавать ZIP-файлы с файлами внутри них, содержащимися в каталоге. Когда человек, получивший ZIP-файл, извлекает его, все файлы аккуратно помещаются в каталог на своем компьютере.
В следующей команде мы собираемся заархивировать work каталог и все подкаталоги. Обратите внимание, что эта команда выполняется из родительского каталога work папки.
Установка уровня сжатия
Вы можете установить степень сжатия файлов при их добавлении в ZIP-архив. Диапазон составляет от 0 до 9, где 0 вообще не компрессирует. Чем выше степень сжатия, тем больше времени требуется для создания файла ZIP. Для ZIP-файлов небольшого размера разница во времени не является существенным штрафом. Но тогда, для ZIP-файлов небольшого размера, сжатие по умолчанию (уровень 6), вероятно, достаточно хорошо в любом случае.
Чтобы заставить zip использовать определенный уровень сжатия, передайте число в качестве параметра в командной строке с помощью «-», например:
Уровень сжатия по умолчанию равен 6. Нет необходимости -6 опцию -6 , но это не принесет вреда.
Максимальный уровень сжатия — уровень 9.
При выборе файлов и каталогов, которые здесь архивируются, разница между отсутствием сжатия (уровень 0) и сжатием по умолчанию (уровень 6) составляет 400 КБ. Разница между сжатием по умолчанию и самым высоким уровнем сжатия (уровень 9) составляет всего 4K.
Это может показаться незначительным, но для архивов, содержащих сотни или даже тысячи файлов, небольшое количество дополнительного сжатия на файл может привести к экономии места.
Добавление паролей к ZIP-файлам
Добавить пароли к ZIP-файлам легко. Используйте параметр -e (зашифровать), и вам будет предложено ввести пароль и повторно ввести его для проверки.
Как распаковать ZIP-файл с помощью команды unzip
Чтобы извлечь файлы из ZIP-файла, используйте команду unzip и укажите имя ZIP-файла. Обратите внимание, что вам нужно предоставить расширение «.zip».
По мере извлечения файлов они отображаются в окне терминала.
ZIP-файлы не содержат информации о владельце файла. Все извлеченные файлы имеют владельца, назначенного пользователю, который их извлекает.
Как и в zip , у unzip есть опция -q (quiet), поэтому вам не нужно видеть список файлов, когда файлы извлекаются.
Извлечение файлов в целевой каталог
Чтобы файлы были извлечены в определенном каталоге, используйте опцию -d (directory) и укажите путь к каталогу, в который вы хотите извлечь архив.
Извлечение защищенных паролем ZIP-файлов
Если ZIP-файл был создан с паролем, unzip попросит вас указать пароль. Если вы не введете правильный пароль, unzip файлы не удастся.
Если вас не волнует, что ваш пароль видят другие — и не хранится ли он в истории команд — вы можете указать пароль в командной строке с параметром -P (пароль). (Вы должны использовать заглавную «P.»)
Исключение файлов
Если вы не хотите извлекать определенный файл или группу файлов, используйте параметр -x (исключить). В этом примере мы хотим извлечь все файлы, кроме тех, которые заканчиваются расширением «.h».
Перезапись файлов
Предположим, вы распаковали архив, но по ошибке удалили несколько извлеченных файлов.
Быстрое решение этой проблемы — извлечь файлы еще раз. Но если вы попытаетесь извлечь ZIP-файл из той же директории, что и раньше, unzip предложит вам принять решение относительно перезаписи файлов. Ожидается один из следующих ответов.
Помимо ответа r (переименование), эти ответы чувствительны к регистру.
- y: да, переписать этот файл
- n: нет, не перезаписывать этот файл
- A: Все, переписать все файлы
- N: Нет, перезаписать ни один из файлов
- r: переименовать, распаковать этот файл, но дать ему новое имя. Вам будет предложено ввести новое имя.
Чтобы заставить unzip перезаписывать любые существующие файлы, используйте опцию -o (перезапись).
Наиболее эффективный способ заменить отсутствующие файлы — unzip только те файлы в архиве, которые не находятся в целевом каталоге. Для этого используйте параметр -n (никогда не перезаписывать).
Глядя внутрь ZIP-файла
Часто полезно и поучительно видеть список файлов внутри ZIP-файла перед его извлечением. Вы можете сделать это с опцией -l (архив списка). Это запускает less чтобы сделать вывод управляемым.
Вывод показывает каталоги и файлы в ZIP-файле, их длину и время и дату, когда они были добавлены в архив. Нажмите «q», чтобы выйти из less.
Как мы увидим, есть другие способы заглянуть внутрь ZIP-файла, который предоставляет различные типы информации.
Добавить пароль с помощью команды zipcloak
Если вы создали ZIP-файл, но забыли добавить пароль, что вы можете сделать? Вы можете быстро добавить пароль в ZIP-файл с помощью команды zipcloak . Передайте имя файла ZIP в командной строке. Вам будет предложено ввести пароль. Вам необходимо подтвердить пароль, введя его во второй раз.
Просмотр сведений о файле с помощью команды zipdetails
Команда zipdetails покажет вам много информации о ZIP-файле. Единственный разумный способ обработать количество вывода, которое может дать эта команда, состоит в том, чтобы передать его через less.
Обратите внимание, что информация будет содержать имена файлов, даже если ZIP-файл защищен паролем. Информация этого типа хранится в ZIP-файле в виде метаданных и не является частью зашифрованных данных.
Поиск внутри файла с помощью команды zipgrep
Команда zipgrep позволяет вам искать файлы в ZIP-файле. В следующем примере мы хотим знать, какие файлы в ZIP-файле содержат текст «keyval.h».
Мы видим, что файлы slang.c и getval.c содержат строку «keyval.h». Мы также видим, что в ZIP-файле есть две копии каждого из этих файлов в разных каталогах.
Просмотр информации с помощью команды zipinfo
Команда zipinfo дает вам еще один способ заглянуть внутрь ZIP-файла. Как и прежде, мы транслируем вывод через less.
Слева направо вывод показывает:
- Файл разрешений
- Версия инструмента, использованного для создания файла ZIP
- Исходный размер файла
- Файловый дескриптор (описан ниже)
- Метод сжатия (в данном случае дефляция)
- Данные и отметка времени
- Название файла и любой каталог
Дескриптор файла состоит из двух символов. Первым символом будет «t» или «b» для обозначения текстового или двоичного файла. Если это заглавная буква, файл зашифрован. Второй символ может быть одним из четырех символов. Этот символ представляет тип метаданных, включаемых в этот файл: нет, расширенный локальный заголовок, «дополнительное поле» или оба.
- -: если ни один не существует, символ будет дефисом
- l: если есть расширенный локальный заголовок, но нет дополнительного поля
- x: если расширенного локального заголовка нет, но есть дополнительное поле
- X: если есть расширенный локальный заголовок и есть дополнительное поле
Разделить файл командой zipsplit
Если вам нужно отправить ZIP-файл кому-либо, но существуют ограничения по размеру или проблемы с передачей файла, вы можете использовать команду zipsplit чтобы разделить исходный ZIP-файл на набор меньших ZIP-файлов.
Опция -n (размер) позволяет вам установить максимальный размер для каждого из новых файлов ZIP. В этом примере мы source_code.zip файл source_code.zip . Мы не хотим, чтобы новые ZIP-файлы были больше 100 КБ (102400 байт).
Выбранный вами размер не может быть меньше размера любого из файлов в ZIP-файле.
Используя эти команды, вы можете создавать свои собственные ZIP-файлы, распаковывать полученные ZIP-файлы и выполнять с ними различные другие операции, даже не покидая терминал Linux.
Источник