Создание простого архива tar директории в Linux

В этой статье рассмотрим простейший вариант создания архива tar в Linux из командной строки. На самом деле, утилита tar имеет очень большое количество опций и настроек. Наверняка этому вопросу даже посвящены отдельные книги, но в частном случае требуется всего лишь создать архив папки на сервере для того, чтобы эту папку можно было скачать всю и сразу, а не по одному файлу. Поэтому разберём процесс архивирования именно в этом ключе. Если будут нужны подробности, есть help по tar: tar --help или и того круче, есть мануал: man tar.

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Опции архиватора 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 понимает. ;)

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню