Настройка резервного копирования файлов проектов (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). Это темы следующих уроков!


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


Регистрация на 🏰 VDSina без номера телефона (через почту)
Как не попасть на деньги при посуточной оплате (баланс и блокировки)
Обзор панели управления: где что лежит
Выбор тарифа: на что влияют vCPU, RAM и SSD
Разница между VDS и обычным хостингом (на пальцах)
Как выбрать операционную систему для новичка: Ubuntu vs Debian vs AlmaLinux
Установка сервера в один клик: кнопка «Создать»
Что такое root-пароль и где его сохранить
Первый вход по SSH через командную строку Windows
Первый вход по SSH через PuTTY (простая инструкция)
Первый вход по SSH через Termius (для телефона и ПК)
Как обновить пароль root в панеле VDSina
Базовые команды Linux: ls, cd, sudo, apt update
Как проверить, сколько ресурсов жрет ваш сервер (htop, free -h)
Установка панели управления сервером (ISPmanager) за 5 минут
Установка бесплатной панели FastPanel от 🏰 VDSina (родная)
Установка панели HestiaCP (бесплатно и просто)
Настройка файрвола (UFW) чтобы не взломали в первый же час
Как открыть порты 80 и 443 для сайта
Установка LAMP (Linux, Apache, MySQL, PHP) одной командой
Установка LEMP (Nginx вместо Apache) одной командой
Как забросить сайт на WordPress через панель 🏰 VDSina (готовый шаблон)
Ручная установка WordPress на чистый сервер
Создание базы данных MySQL для сайта через командную строку
Как привязать домен к серверу (настройка A-записи)
Выпуск бесплатного SSL-сертификата от Let's Encrypt
Настройка cron (заданий по расписанию) на VDSina
Автоматическое резервное копирование (бэкапы) в панеле VDSina
Как восстановить сервер из бэкапа за 2 минуты
Настройка VPN на 🏰 VDSina (OpenVPN) для новичка
Настройка WireGuard на 🏰 VDSina (быстрее и проще)
Как проверить, не заблокирован ли ваш IP в РФ
Смена IP-адреса сервера в панеле 🏰 VDSina (если заблокировали)
Как привязать свой ISO-образ для установки Windows Server
Установка бота для Telegram на Python на VDSina
Как запустить бота в фоне (screen и systemd для чайников)
Мониторинг сервера через встроенные графики VDSina
Как не переплатить: выключение сервера при простое (посуточная оплата)
Повышение тарифа без перезагрузки сервера (горячий апгрейд)
Как настроить уведомления о падении сервера в Telegram
Безопасность: запрет входа под root через SSH
Создание нового пользователя с правами sudo
Защита от DDoS (включение защиты в панеле VDSina)
Подключение сетевых дисков (блочные устройства) для дополнительного места
Миграция сайта с другого хостинга на 🏰 VDSina (пошагово)
Как удалить сервер и не забыть отключить оплату
Где брать помощь: техподдержка VDSina, чаты и форумы
Бонус: установка игрового сервера Minecraft (для друзей)
Бесплатный курс: "VDSina для чайников: Сервер за 5 минут: Эффективно и быстро"
Бесплатный виджет обратной связи для JavaScript
Чатрулетка: новый способ общения
Что такое видеочат рулетка и зачем
Фототехника для пейзажей
Как выбрать лучший render хостинг для 3D рендеров с Eevee
Логистика с Excel: бесплатный курс учёта остатков и подбора транспорта
Онлайн генератор паролей для Windows
Онлайн Сплетница субтитры
Оптимизация обработки форм GEO проекта
Пасхалки в сериале Dexter: раскрытие тайн
Погода в Ревде вечером
Родительский портал Воронеж
Роллы, которые не требуют рекламы
SEO-принципы для нейросетевых разработчиков
Собери 10 пакетов перцев с теплицы
Создание мемов без фотошопа: простые приемы
Сравнение Arsys хостинг сервисов для блогеров с WordPress на 2023 год
VDSina для новичков: советы для начала
Весь экран под циферблат
Видеочат с минимальной задержкой
Виртуальная девушка ИИ
Вложения в компании
Введение в нейросети бесплатно
рейтинг хостингов 2026 Быстрые VDS серверы