В системе Linux регулярное резервное копирование имеет решающее значение для защиты ваших данных, обеспечения их сохранности и упрощения восстановления в случае сбоя. Независимо от того, работаете ли вы с личными файлами, настраиваете среду разработки или управляете серверами, вам нужен надёжный план резервного копирования.
Один из самых простых и гибких способов резервного копирования — написание собственного сценария, который позволяет вам решать, что именно будет копироваться, когда и где это будет храниться. Это также экономит время и снижает риск потери данных.
В этой статье вы узнаете, как создать простой сценарий оболочки, который автоматически создаёт резервные копии важных файлов.
Зачем использовать сценарий резервного копирования?
Использование сценария резервного копирования в Linux даёт системным администраторам больше возможностей и гибкости при защите важных данных.
Вот почему это разумный ход:
- Автоматическое резервное копирование: вы можете запланировать выполнение скрипта с помощью таких инструментов, как cron, чтобы вам не приходилось вручную создавать резервные копии.
- Полный контроль: вы сами решаете, что создавать в резервных копиях, куда их сохранять и как часто. Будь то ежедневные копии
/etc
, еженедельные снимки домашних каталогов или просто выборочные каталоги.
Создание сценария резервного копирования важных файлов
Откройте терминал и перейдите в каталог, в котором вы хотите сохранить скрипт (например, в ваш домашний каталог или /usr/local/bin/
для доступа из всей системы).
Создайте файл сценария с помощью текстового редактора, например nano или vim:
nano backup_script.sh
Ниже приведен базовый скрипт, который создает резервные копии файлов в указанный каталог.
#!/bin/bash # Определите исходный и целевой каталоги SOURCE_DIR="/home/user/Documents" # Исходный каталог для резервного копирования BACKUP_DIR="/home/user/backups" # Целевой каталог для резервных копий # Создайте метку времени для папки с резервными копиями TIMESTAMP=$(date +'%Y%m%d%H%M%S') # Создайте новую папку с резервными копиями с меткой времени BACKUP_FOLDER="$BACKUP_DIR/backup_$TIMESTAMP" mkdir -p "$BACKUP_FOLDER" # Скопировать файлы в папку с резервными копиями cp -r "$SOURCE_DIR"/* "$BACKUP_FOLDER" # Записать в журнал завершение резервного копирования echo "Резервное копирование завершено в $TIMESTAMP" >> "$BACKUP_DIR/backup_log.txt" # Необязательно: удалите резервные копии старше 30 дней find "$BACKUP_DIR" -type d -name "backup_*" -mtime +30 -exec rm -rf {} \;
Объяснение сценария:
SOURCE_DIR
: Каталог, содержащий файлы, которые вы хотите создать резервную копию (например,/home/user/Documents
).BACKUP_DIR
: Каталог, в котором будут храниться резервные копии (например,/home/user/backups
).TIMESTAMP
Переменная, которая хранит текущую дату и время для уникальной идентификации каждой папки с резервными копиями.mkdir -p
: Создает папку резервной копии с меткой времени.cp -r
: Копирует все файлы и подкаталоги из исходного каталога в папку с резервными копиями.- Команда echo регистрирует завершение резервного копирования и добавляет метку времени в файл журнала.
- Команда find удаляет резервные копии старше 30 дней, чтобы каталог резервных копий не заполнялся старыми файлами.
Сохраните и закройте скрипт (в nano нажмите CTRL + X
, затем Y
для подтверждения и нажмите Enter).
Теперь, когда скрипт написан, вам нужно сделать его исполняемым.
chmod +x backup_script.sh
Теперь вы можете запустить скрипт вручную, выполнив:
./backup_script.sh
Если всё настроено правильно, он должен создать резервную копию ваших файлов в указанном каталоге для резервного копирования.
Запланируйте сценарий резервного копирования С помощью Cron
Чтобы автоматизировать процесс резервного копирования, вы можете запланировать выполнение сценария через определённые промежутки времени с помощью cron
, планировщика заданий Linux.
Откройте файл конфигурации cron, набрав:
crontab -e
Добавьте задание cron для запуска скрипта в указанное время. Например, чтобы запускать скрипт резервного копирования каждый день в 2 часа ночи, добавьте в файл cron следующую строку:
0 2 * * * /path/to/backup_script.sh
Теперь скрипт будет запускаться автоматически в указанное время.
Чтобы подтвердить создание резервной копии, вы можете проверить каталог резервных копий и убедиться, что резервные копии создаются должным образом, или просмотреть журналы cron, чтобы убедиться, что сценарий резервного копирования запускается в запланированное время.
grep CRON /var/log/syslog
Добавьте сжатие с помощью tar и gzip
Вместо того чтобы копировать файлы напрямую, вы можете сжать всю резервную копию в архив .tar.gz
для экономии места и поддержания порядка.
Модифицированный скрипт со сжатием:
# Определите исходный и целевой каталоги SOURCE_DIR="/home/user/Documents" BACKUP_DIR="/home/user/backups" # Создайте метку времени TIMESTAMP=$(date +'%Y%m%d%H%M%S') # Определите имя файла резервной копии BACKUP_FILE="$BACKUP_DIR/backup_$TIMESTAMP.tar.gz" # Создайте каталог резервных копий, если он не существует mkdir -p "$BACKUP_DIR" # Создайте сжатый архив исходного каталога tar -czf "$BACKUP_FILE" -C "$SOURCE_DIR" . # Запишите в журнал завершение резервного копирования echo "Сжатая резервная копия создана в $TIMESTAMP" >> "$BACKUP_DIR/backup_log.txt" # Необязательно: удалите старые резервные копии (более 30 дней назад) find "$BACKUP_DIR" -type f -name "backup_*.tar.gz" -mtime +30 -exec rm -f {} \;
Отправка резервной копии на удаленный сервер с помощью scp
Если вы хотите хранить резервные копии на удалённом сервере (например, на резервном VPS или NAS), вы можете загрузить архив с помощью команды scp.
Добавьте следующее в конец скрипта:
# Задайте информацию об удалённом сервере REMOTE_USER="ваш_пользователь" REMOTE_HOST="ваш_сервер_ip" REMOTE_DIR="/удаленный/резервная_копия/местоположение" # Отправьте файл резервной копии на удалённый сервер scp "$BACKUP_FILE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"
Настройте аутентификацию по ключу SSH между вашим локальным компьютером и удалённым сервером, чтобы не вводить пароли вручную.
Заключение
Создание сценария резервного копирования в Linux — это простой и практичный способ защитить ваши данные от случайной потери. Запланировав выполнение сценария с помощью cron
, вы можете автоматизировать процесс резервного копирования, чтобы важные файлы регулярно сохранялись без необходимости делать это вручную.