В этой статье мы создадим Bash-скрипт, который будет создавать резервные копии важных файлов, архивировать их и отправлять на удаленный VPS-сервер по SSH. Этот скрипт особенно полезен для тех, кто хочет автоматизировать резервное копирование и хранить его в безопасном месте.
Шаг 1: Создание скрипта
Начнем с создания нового файла для нашего скрипта. Откройте терминал и выполните следующую команду:
touch backup_script_ssh.sh
Теперь откройте файл в текстовом редакторе, например, nano
:
nano backup_script_ssh.sh
Шаг 2: Написание скрипта
Вставьте следующий код в файл backup_script_ssh.sh
:
#!/bin/bash
# Указываем путь к папке, которую нужно архивировать
SOURCE_DIR="/path/to/important/files"
# Указываем путь для сохранения резервной копии
BACKUP_DIR="/path/to/backup"
# Указываем имя архива (с текущей датой и временем)
BACKUP_NAME="backup_$(date +%Y%m%d_%H%M%S).tar.gz"
# Указываем данные для подключения к VPS-серверу
SSH_USER="your_ssh_username"
SSH_HOST="your_vps_ip_or_hostname"
SSH_DIR="/path/to/remote/backup/directory"
# Создаем резервную копию
echo "Создание резервной копии..."
tar -czvf "$BACKUP_DIR/$BACKUP_NAME" "$SOURCE_DIR"
# Проверяем, успешно ли создана резервная копия
if [ $? -eq 0 ]; then
echo "Резервная копия успешно создана: $BACKUP_DIR/$BACKUP_NAME"
else
echo "Ошибка при создании резервной копии!"
exit 1
fi
# Отправляем резервную копию на VPS-сервер по SSH
echo "Отправка резервной копии на VPS-сервер..."
scp "$BACKUP_DIR/$BACKUP_NAME" "$SSH_USER@$SSH_HOST:$SSH_DIR"
# Проверяем, успешно ли отправлена резервная копия
if [ $? -eq 0 ]; then
echo "Резервная копия успешно отправлена на VPS-сервер."
else
echo "Ошибка при отправке резервной копии на VPS-сервер!"
exit 1
fi
echo "Скрипт завершен успешно!"
Шаг 3: Подробное объяснение кода
- Определение переменных:
SOURCE_DIR
— путь к папке, которую нужно архивировать.BACKUP_DIR
— путь для сохранения резервной копии.BACKUP_NAME
— имя архива, которое включает текущую дату и время.SSH_USER
,SSH_HOST
,SSH_DIR
— данные для подключения к VPS-серверу.
- Создание резервной копии:
- Команда
tar -czvf
создает сжатый архив (tar.gz
) из указанной папки. - Флаг
-c
создает новый архив,-z
сжимает его с помощью gzip,-v
выводит информацию о процессе,-f
указывает имя файла.
- Команда
- Проверка успешности создания резервной копии:
- Переменная
$?
содержит код завершения последней команды. Если он равен0
, значит команда выполнена успешно.
- Переменная
- Отправка резервной копии на VPS-сервер по SSH:
- Используется команда
scp
для копирования файла на удаленный сервер по SSH. - Синтаксис команды:
scp локальный_файл пользователь@хост:путь_на_сервере
.
- Используется команда
- Проверка успешности отправки:
- Аналогично проверке создания резервной копии, проверяется код завершения команды
scp
.
- Аналогично проверке создания резервной копии, проверяется код завершения команды
Шаг 4: Настройка прав доступа
Прежде чем запускать скрипт, необходимо установить правильные права доступа:
chmod +x backup_script_ssh.sh
Шаг 5: Настройка SSH-ключей (опционально)
Для удобства и безопасности рекомендуется настроить SSH-ключи. Это позволит избежать ввода пароля каждый раз при подключении к VPS.
- Сгенерируйте SSH-ключи, если они еще не созданы:
ssh-keygen -t rsa -b 4096
- Скопируйте публичный ключ на VPS-сервер:
ssh-copy-id $SSH_USER@$SSH_HOST
Теперь вы сможете подключаться к VPS без ввода пароля.
Шаг 6: Запуск скрипта
Теперь вы можете запустить скрипт:
./backup_script_ssh.sh
Если все настроено правильно, вы увидите сообщения о создании резервной копии и ее отправке на VPS-сервер.
Шаг 7: Автоматизация с помощью Cron
Чтобы скрипт выполнялся автоматически, добавьте его в расписание Cron. Откройте редактор Cron:
crontab -e
Добавьте строку, например, для ежедневного выполнения в 2:00 ночи:
0 2 * * * /path/to/backup_script_ssh.sh
Заключение
Теперь у вас есть полностью автоматизированный процесс резервного копирования важных файлов и их отправки на VPS-сервер по SSH. Этот скрипт можно легко адаптировать под другие задачи, например, для резервного копирования баз данных или синхронизации файлов.