Zip запаковать всю папку linux

Как заархивировать файлы и каталоги в Linux

Zip — это наиболее широко используемый формат архивных файлов, поддерживающий сжатие данных без потерь.

Zip-файл — это контейнер данных, содержащий один или несколько сжатых файлов или каталогов. Сжатые (заархивированные) файлы занимают меньше места на диске, их можно перенести с одного компьютера на другой быстрее, чем несжатые файлы. Zip-файлы можно легко извлечь в Windows, macOS и Linux с помощью утилит, доступных для всех операционных систем.

В этом руководстве мы покажем вам, как архивировать (сжимать) файлы и каталоги в Linux с помощью команды zip .

zip Команда

zip — это утилита командной строки, которая помогает создавать Zip-архивы.

Команда zip имеет следующий синтаксис:

zip OPTIONS ARCHIVE_NAME FILES 

Чтобы создать Zip-архив в определенном каталоге, пользователю необходимо иметь права на запись в этот каталог.

Zip-файлы не поддерживают информацию о владельце в стиле Linux. Извлеченные файлы принадлежат пользователю, выполняющему команду.

Чтобы сохранить право собственности на файл и права доступа, используйте команду tar .

Утилита zip не устанавливается по умолчанию в большинстве дистрибутивов Linux, но вы можете легко установить ее с помощью диспетчера пакетов вашего дистрибутива.

Установите Zip в Ubuntu и Debian

Установите Zip на CentOS и Fedora

Как архивировать файлы и каталоги

Чтобы заархивировать один или несколько файлов, укажите файлы, которые вы хотите добавить в архив, через пробел, как показано ниже:

zip archivename.zip filename1 filename2 filename3
adding: filename1 (deflated 63%) adding: filename2 (stored 0%) adding: filename3 (deflated 38%) 

По умолчанию команда zip печатает имена файлов, добавленных в архив, и метод сжатия. Мы объясним методы и уровень сжатия позже в этом руководстве.

При указании имени архива Zip, если вы опускаете расширение .zip оно будет добавлено автоматически, если имя архива не содержит точки. zip archivename.zip filename создаст архив с тем же именем, что и zip archivename filename .

Чтобы подавить вывод команды zip , используйте параметр -q :

zip -q archivename.zip filename1 filename2 filename3

Часто вы создаете Zip-архив каталога, включающего содержимое подкаталогов. Параметр -r позволяет рекурсивно просматривать всю структуру каталогов.

Чтобы создать Zip-архив каталога, вы должны использовать:

zip -r archivename.zip directory_name

Вы также можете добавить несколько файлов и каталогов в один архив:

zip -r archivename.zip directory_name1 directory_name2 file1 file1

Методы и уровни сжатия

Метод сжатия Zip по умолчанию — deflate . Если утилита zip определяет, что файл нельзя сжать, она просто сохраняет файл в архиве, не сжимая его с помощью метода store . В большинстве дистрибутивов Linux утилита zip также поддерживает метод сжатия bzip2 .

Читайте также:  Загрузчик windows 10 добавление linux

Чтобы указать метод сжатия, используйте параметр -Z .

zip -r -Z bzip2 archivename.zip directory_name
. adding: sub_dir/ (stored 0%) adding: sub_dir/file1 (bzipped 52%) adding: sub_dir/file2 (bzipped 79%) 

Команда zip позволяет указать уровень сжатия с помощью числа с префиксом от 0 до 9. Уровень сжатия по умолчанию -6 . При использовании -0 все файлы будут сохраняться без сжатия. -9 заставит команду zip использовать оптимальное сжатие для всех файлов.

Например, чтобы использовать уровень сжатия -9 , введите что-то вроде этого:

zip -9 -r archivename.zip directory_name

Чем выше уровень сжатия, тем интенсивнее процесс архивирования, и для его завершения потребуется больше времени.

Создание ZIP-файла, защищенного паролем

Если у вас есть конфиденциальная информация, которую необходимо сохранить в архиве, вы можете зашифровать ее с помощью параметра -e :

zip -e archivename.zip directory_name

Вам будет предложено ввести и подтвердить пароль архива:

Enter password: Verify password: 

Создание разделенного Zip-файла

Представьте, что вы хотите сохранить Zip-архив на сервисе хостинга файлов, который имеет ограничение на размер загружаемого файла 1 ГБ, а ваш Zip-архив — 5 ГБ.

Вы можете создать новый разделенный Zip-файл, используя параметр -s с указанием размера. Множитель может быть k (килобайты), m (мегабайты), g (гигабайты) или t (терабайты).

zip -s 1g -r archivename.zip directory_name

Приведенная выше команда продолжит создание новых архивов в наборе после достижения указанного предельного размера.

archivename.zip archivename.z01 archivename.z02 archivename.z03 archivename.z04 

Примеры ZIP

Создайте Zip-архив с именем archivename.zip, содержащий все файлы в текущем каталоге.

То же, что и выше, включая скрытые файлы (файлы, начинающиеся с точки):

Создайте Zip-архив с именем archivename.zip содержащий все файлы MP3 в текущем каталоге, без сжатия файлов.

Выводы

В Linux вы можете создавать Zip-архивы с помощью команды zip .

Чтобы распаковать ZIP-архив в системе Linux, вы можете использовать команду unzip .

Если вы хотите узнать больше о Zip, посетите страницу Zip Man .

Источник

How to Zip Files and Folders in Ubuntu Command Line

Sagar Sharma

Zip command in Ubuntu

The above command will create a compressed output_file.zip file with file1, file2 and contents of folder1.

I recommend using the recursive option -r as it allows you to add folders and their content. Without this option, you’ll be adding the folder to the zipped file but the directory contents won’t be included.

Let me show the zip command usage in detail with some actual examples.

Using zip command

You should first ensure that you have the zip command installed on your system.

If the above command returns ‘command ‘zip’ not found’ error, you should install it like this:

Now, I don’t intend to confuse you, but having a basic idea of syntax will always be beneficial.

zip [option] [output_file_name] [input1] [input2]
  • [option] will be used to accomplish different outcomes regarding zipping files, such as setting up passwords.
  • [output_file_name] is the name of your zipped file. You can add .zip extension to the output file but if you don’t, it is added automatically.
  • [input1] [input2] can be various directories and files you want to compress into one zip file

Let’s see some examples now.

Zip a single file

I am starting with the simplest example; zipping a single file in the current directory.

zip output_file.zip input_file
[email protected]:~# zip log_compressed auth.log adding: auth.log (deflated 89%)

The zip command output mentions the compression ratio.

Читайте также:  Void linux kde plasma

Did you notice that it automatically added the .zip extension to the output filename even though I didn’t mention it?

Zip multiple files

You can provide multiple files the same way.

zip output_file.zip input_file1 input_file2 input_file3

It will show the compression levels for all files.

[email protected]:~# zip compressed_log auth.log fontconfig.log alternatives.log adding: auth.log (deflated 89%) adding: fontconfig.log (deflated 86%) adding: alternatives.log (deflated 39%) 

You can use the zipinfo command to list the contents of a zipped file without extracting it on the disk.

Zip a folder

Like many other Linux commands, you need to use the recursive option -r while dealing with the directories.

To zip a folder, just add the -r in the command:

zip -r output_folder input_folder
[email protected]:~# zip -r logs.zip logs updating: logs/ (stored 0%) adding: logs/alternatives.log (deflated 39%) adding: logs/auth.log (deflated 89%) adding: logs/fontconfig.log (deflated 86%)

If you miss the -r option, you’ll get the zipped folder but it won’t copy any files.

[email protected]:~# zip logs.zip logs adding: logs/ (stored 0%) [email protected]:~# zipinfo logs.zip Archive: logs.zip Zip file size: 160 bytes, number of entries: 1 drwxr-xr-x 3.0 unx 0 bx stor 22-Aug-22 12:54 logs/ 1 file, 0 bytes uncompressed, 0 bytes compressed: 0.0% [email protected]:~# 

Zip files from multiple files and folders

You’ll think that you can combine files from multiple folders and directories into a single zip file like this:

zip -r output_file file1 folder1 folder2/file2

You are not wrong but there could be a potential problem with that approach that you may not like.

I’ll show an example so that you understand it better. I zip a file, a folder and a file from another folder together.

[email protected]:~# zip -r combined new_file logs/ toto/routes.yaml adding: new_file (stored 0%) adding: logs/ (stored 0%) adding: logs/alternatives.log (deflated 39%) adding: logs/auth.log (deflated 89%) adding: logs/fontconfig.log (deflated 86%) adding: toto/routes.yaml (deflated 27%) 

If you look at the contents of the output zip file, you’ll see that routes.yml from the toto directory is named toto/routes.yml. Which means

[email protected]:~# zipinfo combined.zip Archive: combined.zip Zip file size: 89379 bytes, number of entries: 6 -rw-r--r-- 3.0 unx 1 tx stor 22-Jul-21 14:03 new_file drwxr-xr-x 3.0 unx 0 bx stor 22-Aug-22 12:54 logs/ -rw-r--r-- 3.0 unx 178 tx defN 22-Aug-22 12:54 logs/alternatives.log -rw-r----- 3.0 unx 806718 tx defN 22-Aug-22 12:54 logs/auth.log -rw-r--r-- 3.0 unx 2791 tx defN 22-Aug-22 12:54 logs/fontconfig.log -rw-r--r-- 3.0 unx 143 tx defN 22-Jun-06 15:14 toto/routes.yaml 6 files, 809831 bytes uncompressed, 88425 bytes compressed: 89.1%

This means that if you extract the combined.zip folder, it will have routes.yaml file in toto subdirectory.

[email protected]:~# tree combined combined ├── logs │ ├── alternatives.log │ ├── auth.log │ └── fontconfig.log ├── new_file └── toto └── routes.yaml 

While that may be desirable in a few cases, sometimes you just want the files from different folders combined into a single folder, without their directory name and structure.

And in those cases, you combine the -r with -j . The -j option leaves out the path and directory names.

zip -rj output_file file1 folder1 folder2/file2

This way, you only get the files.

[email protected]:~# zip -rj combined_out new_file logs/ toto/routes.yaml adding: new_file (stored 0%) adding: alternatives.log (deflated 39%) adding: auth.log (deflated 89%) adding: fontconfig.log (deflated 86%) adding: routes.yaml (deflated 27%) [email protected]:~# zipinfo combined_out.zip Archive: combined_out.zip Zip file size: 89201 bytes, number of entries: 5 -rw-r--r-- 3.0 unx 1 tx stor 22-Jul-21 14:03 new_file -rw-r--r-- 3.0 unx 178 tx defN 22-Aug-22 12:54 alternatives.log -rw-r----- 3.0 unx 806718 tx defN 22-Aug-22 12:54 auth.log -rw-r--r-- 3.0 unx 2791 tx defN 22-Aug-22 12:54 fontconfig.log -rw-r--r-- 3.0 unx 143 tx defN 22-Jun-06 15:14 routes.yaml 5 files, 809831 bytes uncompressed, 88425 bytes compressed: 89.1% 

Remove files from existing zip file

Added something that should not have been added? You can easily remove unnecessary files from the existing zip file.

zip -d existing_zip File_to_remove_1 File_to_remove_2

Let me show with an example.

Читайте также:  Oracle linux версия ядра

Here’s the content of the miscallaneous.zip file:

Use zipinfo to list files within zip file

Now I want to remove files named «HelloWorld.txt» and «Ringtone.mp3»:

zip -d miscellaneous.zip HelloWorld.txt Ringtone.mp3

You can see that those files were no longer present in the zip file.

Remove files from zip file in command line

Add additional files to an existing zip file

I often find myself in situations where I forget to add files while zipping them. No worries. You can add extra files to a zipped file thanks to the update option -u .

zip -u existing_zip File_to_add_1 File_to_add_2

Let’s say I want to add two images to a zip file named «miscellaneous.zip» :

zip -u miscellaneous.zip Burj_Khalifa.jpeg Taj_Mahal.jpeg

You can see that the files have been added to the existing zip file.

Add files to existing zip file in command line

Encrypt zip file with password

This is my favorite feature from the entire catalog of zip utility. It may sound complex, but trust me, it’s not!

Add -e option along with -r and it’ll ask for an encryption key phrase before proceeding to zip given files.

zip -r -e output_file input_files input_folders

Here’s an example screenshot. You can see that it asks for the password twice before initiating the zipping process.

Encrypt zip file in command line

When you use the unzip command to extract this zip file, it asks for the passcode.

Encrypted zip file needs password while etracting

⚠️ Move the files into the zip file

By default, the zip utility creates a copy of the original file to make a zip file. If you want, you can avoid this by using -m which will move files directly into the zipped file.

For example, I’ll be adding three random files to a zip file named NoCopiesLeft:

zip -m NoCopiesLeft helloworld.txt list.txt Snake_plant.jpg

As you can see, there were three files in the working directory and after making the zip file, no original copies were left.

Zip file in command line wihout making copy of original file

In the end .

Zip is an excellent tool for reducing directory size. There are many more options and usage of the zip command. You can always refer to the man page for additional information.

Here. I covered the most common examples of the zip command in Ubuntu. I hope you find it helpful.

Источник

Оцените статью
Adblock
detector