В этой статье рассмотрим простейший вариант создания архива tar
в Linux из командной строки. На самом деле, утилита tar
имеет очень большое количество опций и настроек. Наверняка этому вопросу даже посвящены отдельные книги, но в частном случае требуется всего лишь создать архив папки на сервере для того, чтобы эту папку можно было скачать всю и сразу, а не по одному файлу. Поэтому разберём процесс архивирования именно в этом ключе. Если будут нужны подробности, есть help по tar: tar --help
или и того круче, есть мануал: man tar
.
Опции архиватора tar
, которые могут пригодиться при создании архива на сервере
Вызов утилиты архивирования tar
в Linux крайне прост:
tar опции файл_архива /путь_до_того,_что_нужно_архивировать
- tar — это вызов утилиты
tar
- опции — указание того, как использовать утилиту
tar
(рассмотрим ниже) - файл_архива — путь к файлу (не обязательно, если отсутствует, архив будет создан в текущей директории) и название файла, куда поместить готовый архив
- /путь_до_того,_что_нужно_архивировать — путь до папки (с указанием самой папки) или файла (с указанием имени файла), которые должны быть помещены в архив
tar
Список опций, которые могут потребоваться при использовании архиватора tar
- A — добавить файл к архиву
- c — создать архив в linux
- d — сравнить файлы архива и распакованные файлы в файловой системе
- j — сжать архив с помощью Bzip
- z — сжать архив с помощью Gzip
- r — добавить файлы в конец архива
- t — показать содержимое архива
- u — обновить архив относительно файловой системы
- x — извлечь файлы из архива
- v — показать подробную информацию о процессе работы
- f — файл для записи архива
- -C — распаковать в указанную папку
- --strip-components — отбросить n вложенных папок
Примеры использования утилиты tar
для создания архива
На самом деле, всё можно выяснить экспериментальным путём, но надо же с чего-то начать. Заархивируем папку user в домашней директории пользователя root:
root@server:~# tar -zcvf user.tar.gz ~/user
tar: Removing leading `/' from member names
/root/user/
/root/user/delete-mysql.sh
/root/user/create-mysql.sh
/root/user/user+domain.sh
/root/user/user+terminate.sh
/root/user/user+main.sh
Используем опции:
z
для создания Gzip-архива,c
указываем, что создаём архив,v
чтобы видеть, что будет помещаться в архив,f
поместим результат работы архиватора в файл.
Примечательным в этом примере является то, что tar
полностью копирует файловую структуру по указанному пути. Для того, чтобы нагляднее пояснить это, рассмотрим ещё пару примеров. Укажем относительный, (а не абсолютный, как в примере выше) путь до папки, которую помещаем в архив. Получаем вообще странную картину папок, попадающих в архив:
root@server:~# tar -zcvf user.tar.gz ./user
./user/
./user/delete-mysql.sh
./user/create-mysql.sh
./user/user+domain.sh
./user/user+terminate.sh
./user/user+main.sh
В общем, так можно, но лучше не делать. =)
Ну и рабочий вариант: просто указать имя папки, которую нужно поместить в архив, а сам архив поместим в папку var
:
root@server:~# tar -zcvf /var/user.tar.gz user
user/
user/delete-mysql.sh
user/create-mysql.sh
user/user+domain.sh
user/user+terminate.sh
user/user+main.sh
Архив действительно будет находиться в папке var и содержать именно то, что нужно - папку user со всем её содержимым.
Резюме
Таким способом можно создавать архивы папок на сервере с помощью стандартной для linux утилиты архивации tar
.
Для того, чтобы в будущем не было путаницы, что это за файлы, нужно правильно указывать расширения файлов. Хотя tar
создаст файл именно с тем расширением, которое будет прописано при его вызове. И даже вообще без расширения. Всё же, рекомендую придерживаться привычной практики и таким архивам давать расширение .tar.gz
. Это расширение даже WinRAR понимает. ;)
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)