Настройка резервного копирования файлов проектов (tar)
Дата публикации: 24.04.2026

Настройка резервного копирования файлов проектов (tar)

ccb9a536


Резервное копирование проектов с помощью tar: ваш спасательный круг в мире веб-разработки

Представьте: вы месяцами работали над проектом, настраивали сервер, оптимизировали код, а в один "прекрасный" день жёсткий диск умирает. Или хакер шифрует ваши файлы. Или вы случайно удалили критически важную папку командой rm -rf. Без резервной копии — всё пропало.

Сегодня вы научитесь создавать надёжные архивы своих проектов с помощью утилиты tar — стандартного инструмента Linux, который: ✅ Сжимает файлы (экономит место на диске). ✅ Сохраняет права доступа (важно для безопасности). ✅ Работает с любыми типами файлов (от HTML до баз данных). ✅ Автоматизируется (можно запускать по расписанию).

Это как страховка для вашего бизнеса — дешёвая, но спасающая в критических ситуациях.


1. Почему именно tar? Альтернативы и их недостатки

Инструмент Плюсы Минусы Когда использовать
tar Сохраняет права доступа, работает с любыми файлами, поддерживает сжатие Не шифрует данные (нужно дополнительно) Основной инструмент для бэкапов
zip/unzip Прост в использовании, кроссплатформенный Не сохраняет права доступа (в Linux это критично) Для передачи файлов на Windows
rsync Синхронизирует только изменённые файлы Не создаёт единый архив (нужно дополнительно упаковывать) Для инкрементальных бэкапов
Облачные сервисы (AWS S3, Dropbox) Автоматизация, гео-резервирование Платно, зависимость от интернета Для долговременного хранения

Вывод: tar — оптимальный выбор для локальных бэкапов (на тот же сервер или другой диск). Для максимальной безопасности его комбинируют с шифрованием (gpg) и удалённым хранением (scp, rsync).


2. Базовые команды tar: создаём и распаковываем архивы

2.1. Создание архива (без сжатия)

Команда:

tar -cvf архив.tar /путь/к/папке
  • -c (create) — создать архив.
  • -v (verbose) — показывать процесс (чтобы видеть, какие файлы добавляются).
  • -f (file) — указать имя архива.

Пример:

tar -cvf my_project_backup.tar /var/www/my_project

→ Создаст файл my_project_backup.tar с содержимым папки /var/www/my_project.

⚠️ Важно: Архив не сжат — занимает столько же места, сколько оригинальные файлы.


2.2. Создание архива со сжатием (экономия места)

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

Опция Тип сжатия Расширение архива Скорость Степень сжатия
-z gzip .tar.gz или .tgz Быстро Средняя
-j bzip2 .tar.bz2 Медленно Высокая
-J xz .tar.xz Очень медленно Максимальная

Примеры:

# Сжатие gzip (рекомендуется для большинства случаев)
tar -czvf my_project.tar.gz /var/www/my_project

# Сжатие xz (если нужно максимально сжать, например, для долговременного хранения)
tar -cJvf my_project.tar.xz /var/www/my_project

💡 Совет: Для веб-проектов обычно хватает gzip (-z). Если архивируете логи или текстовую информацию, xz сэкономит до 30% места.


2.3. Распаковка архива

Команда:

tar -xvf архив.tar [-C /путь/куда/распаковывать]
  • -x (extract) — распаковать.
  • -C — указать целевую папку (если не указать, распакуется в текущую).

Примеры:

# Распаковка в текущую папку
tar -xvf my_project.tar.gz

# Распаковка в конкретную папку
tar -xvf my_project.tar.gz -C /backup/restored_project/

⚠️ Осторожно: Если распаковать архив поверх существующих файлов, они перезапишутся!


2.4. Просмотр содержимого архива (без распаковки)

Команда:

tar -tvf архив.tar
  • -t (list) — показать список файлов.

Пример:

tar -tvf my_project.tar.gz | grep "config"  # Найдёт все файлы с "config" в имени

3. Продвинутые приёмы: исключения, многотомные архивы, проверка целостности

3.1. Исключение ненужных файлов (экономия места и времени)

Допустим, вам не нужно бэкапить кэш, логи или временные файлы. Используйте --exclude:

tar -czvf my_project_clean.tar.gz /var/www/my_project \
  --exclude="*.log" \
  --exclude="cache/*" \
  --exclude="tmp/*"

Альтернатива: Создайте файл .tarignore (как .gitignore) и укажите его через --exclude-from:

tar -czvf my_project.tar.gz /var/www/my_project --exclude-from=.tarignore

3.2. Разбивка архива на части (для больших проектов)

Если архив больше 4 ГБ (ограничение FAT32) или нужно перенести его на флешку, разбейте на тома:

tar -czvf - /var/www/my_project | split -b 2G - my_project_part_
  • -b 2G — размер каждого тома (2 ГБ).
  • my_project_part_ — префикс для частей (получится my_project_part_aa, my_project_part_ab и т. д.).

Как собрать обратно?

cat my_project_part_* | tar -xzv

3.3. Проверка целостности архива

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

tar -tvfz my_project.tar.gz > /dev/null && echo "Архив цел" || echo "Архив повреждён"
  • Если архив цел, команда вернёт 0 (успех).
  • Если повреждён — ненулевой код.

💡 Совет: Автоматизируйте проверку в cron (см. раздел 4).


4. Автоматизация бэкапов: cron + tar

Ручные бэкапы — это риск забыть. Настроим автоматическое резервное копирование по расписанию.

4.1. Создание скрипта для бэкапа

Создайте файл /usr/local/bin/backup_project.sh:

#!/bin/bash

# Пути
SOURCE="/var/www/my_project"
BACKUP_DIR="/backup"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
BACKUP_NAME="my_project_$DATE.tar.gz"

# Создание архива
tar -czvf $BACKUP_DIR/$BACKUP_NAME $SOURCE --exclude="*.log" --exclude="cache/*"

# Удаление старых бэкапов (старше 30 дней)
find $BACKUP_DIR -name "my_project_*.tar.gz" -mtime +30 -delete

# Проверка архива
if tar -tvfz $BACKUP_DIR/$BACKUP_NAME > /dev/null; then
  echo "Бэкап $BACKUP_NAME создан успешно" >> $BACKUP_DIR/backup.log
else
  echo "ОШИБКА: Бэкап $BACKUP_NAME повреждён" >> $BACKUP_DIR/backup.log
fi

Сделайте скрипт исполняемым:

chmod +x /usr/local/bin/backup_project.sh

4.2. Настройка задачи в cron

Откройте крон:

crontab -e

Добавьте строку для ежедневного бэкапа в 3:00 ночи:

0 3 * * * /usr/local/bin/backup_project.sh

Формат:

минута час день_месяца месяц день_недели команда
  • * — любой.
  • 0 3 * * * — каждый день в 3:00.

💡 Совет: Для арбитражников полезно делать бэкапы перед запуском новых кампаний (например, в 8:00 и 20:00).


4.3. Удалённое хранение бэкапов (дополнительная защита)

Локальные бэкапы могут погибнуть вместе с сервером. Отправляйте их на другой сервер или в облако:

Вариант 1: Копирование по SSH (scp)

scp /backup/my_project_*.tar.gz user@remote_server:/remote_backup/

Вариант 2: Синхронизация с облаком (rclone)

rclone copy /backup my_google_drive:backups/

(Настройте rclone заранее: инструкция)


5. Восстановление из бэкапа: пошаговая инструкция

Допустим, проект сломался. Как вернуть всё назад?

Шаг 1: Остановите веб-сервер (если восстанавливаете живой проект)

systemctl stop nginx  # или apache2

Шаг 2: Распакуйте бэкап в временную папку

mkdir /tmp/restore
tar -xzvf /backup/my_project_2024-05-20.tar.gz -C /tmp/restore

Шаг 3: Проверьте содержимое

ls -la /tmp/restore

Шаг 4: Замените повреждённые файлы

rsync -av /tmp/restore/ /var/www/my_project/
  • -a — архивный режим (сохраняет права и владельцев).
  • -v — показывать процесс.

Шаг 5: Перезапустите сервер

systemctl start nginx

⚠️ Внимание: Если восстанавливаете базу данных, используйте mysql/mongorestore (это тема отдельного урока).


6. Типичные ошибки и как их избежать

Ошибка Причина Решение
Архив не создаётся Не хватает прав на папку chmod 755 /путь/к/папке
Файлы в архиве битые Диск переполнен Проверьте df -h, освободите место
Бэкап занимает слишком много места Не используется сжатие или исключения Добавьте -z и --exclude
Не распаковывается на другом сервере Разные версии tar или права доступа Используйте --numeric-owner при создании архива
Cron не выполняет скрипт Не указан полный путь к командам В скрипте используйте /usr/bin/tar вместо tar

Практика для закрепления

Упражнение 1: Базовый бэкап

  1. Создайте тестовую папку /home/user/test_backup с 3-5 файлами.
  2. Заархивируйте её в test.tar.gz с помощью tar -czvf.
  3. Удалите оригинальную папку и восстановите её из архива.

Вопрос: Какая команда покажет содержимое архива без распаковки?


Упражнение 2: Исключение файлов

  1. Добавьте в /home/user/test_backup файл secret.log.
  2. Создайте архив test_clean.tar.gz, исключив все .log файлы.
  3. Проверьте, что secret.log отсутствует в архиве.

Вопрос: Как исключить всю папку tmp при архивации?


Упражнение 3: Автоматизация с cron

  1. Напишите скрипт, который:
    • Архивирует /var/log (исключая *.gz файлы).
    • Сохраняет архив в /backup/logs_$(date +%F).tar.gz.
    • Удаляет архивы старше 7 дней.
  2. Настройте выполнение скрипта каждый день в 23:55.

Вопрос: Как проверить, что cron действительно запускает задачу? (Подсказка: grep CRON /var/log/syslog)


Упражнение 4: Многотомный архив

  1. Создайте архив папки /var размером 100 МБ на том.
  2. Проверьте, что все части (aa, ab и т. д.) существуют.
  3. Соберите архив обратно и убедитесь, что файлы целы.

Вопрос: Почему нельзя просто склеивать части архива через cat, если они были созданы без split?


Упражнение 5: Удалённое хранение

  1. Настройте автоматическую отправку бэкапов на другой сервер по scp.
  2. Проверьте, что файлы появляются в целевой папке.

Вопрос: Как защитить передачу бэкапов от перехвата? (Подсказка: ssh-keygen + отключение парольной аутентификации)


Итоги урока

✅ Вы научились:

  • Создавать и распаковывать архивы tar с разными типами сжатия.
  • Исключать ненужные файлы для экономии места.
  • Автоматизировать бэкапы с помощью cron.
  • Восстанавливать проекты из архивов.
  • Защищать бэкапы от потери (удалённое хранение).

🚀 Следующий шаг: Комбинируйте tar с шифрованием (gpg) и инкрементальными бэкапами (rsync). Это темы следующих уроков!


Вопросы? Пишите в комментариях — разберём сложные моменты! 🛠️


Генератор паролей с длинной 64 символа
Женская одежда с бахромой
Кадастровые работы в Бийске
Как Aptum хостинг помогает малым бизнесам в управлении CRM-системами
Как выбрать планировку сайта для блогов на DreamHost
Как выбрать Vdsina вечный хостинг для своего проекта
Казань окна VEKA - профессионализм и опыт
Курьерская вода
Новостройки Оренбурга: недвижимость с отличной ценой
Онлайн чат-партнерство
Пиломатериалы для возведения бани
Почему VDSina — лучший выбор хостинга
Секреты Вконтакте: тонкости и хитрости
Скидки до 50% на тур в Коста-Рике
Видеочат рулетка бесплатно
рейтинг хостингов 2026 Быстрые VDS серверы