ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Пятница, 9 мая, 2025

Как создать скрипт резервного копирования важных файлов в Linux

Как создать скрипт резервного копирования важных файлов в Linux

В системе Linux регулярное резервное копирование имеет решающее значение для защиты ваших данных, обеспечения их сохранности и упрощения восстановления в случае сбоя. Независимо от того, работаете ли вы с личными файлами, настраиваете среду разработки или управляете серверами, вам нужен надёжный план резервного копирования.

Один из самых простых и гибких способов резервного копирования — написание собственного сценария, который позволяет вам решать, что именно будет копироваться, когда и где это будет храниться. Это также экономит время и снижает риск потери данных.

В этой статье вы узнаете, как создать простой сценарий оболочки, который автоматически создаёт резервные копии важных файлов.

 

Зачем использовать сценарий резервного копирования?

Использование сценария резервного копирования в Linux даёт системным администраторам больше возможностей и гибкости при защите важных данных.

Вот почему это разумный ход:

 

Создание сценария резервного копирования важных файлов

Откройте терминал и перейдите в каталог, в котором вы хотите сохранить скрипт (например, в ваш домашний каталог или /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 {} \;

 

Объяснение сценария:

 

Сохраните и закройте скрипт (в 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, вы можете автоматизировать процесс резервного копирования, чтобы важные файлы регулярно сохранялись без необходимости делать это вручную.

Exit mobile version