Как сделать резервную копию файлов с удаленного Linux VPS с помощью сценария Rsync
Скрипт резервного копирования Rsync для удаленного Linux VPS: пошаговое руководство
Резервные копии — это основа организации. Один из эффективных способов резервного копирования файлов — использование утилиты Rsync. Rsync — мощный инструмент для эффективной передачи файлов между компьютерами по сети. В этом руководстве вы узнаете, как выполнять резервное копирование файлов из удаленной системы Linux (VPS) в локальную систему с помощью простого сценария rsync. Вы также узнаете, как использовать сценарий как для аутентификации на основе пароля SSH, так и для аутентификации на основе ключей SSH.
Резервное копирование удаленного Linux VPS с помощью Rsync
Я регулярно использую этот скрипт для резервного копирования файлов с удаленного VPS на мой локальный рабочий стол Debian. Если вам нужен простой сценарий для резервного копирования удаленного Linux VPS с помощью Rsync, вы можете выбрать любой из следующих вариантов сценария.
1. Сценарий резервного копирования Rsync для аутентификации на основе пароля SSH.
Создайте текстовый файл, например «rsync_script_with_ssh_password.sh
», со следующим содержимым.
#!/bin/bash
Define source and destination directories
source_directory="/path/to/source"
destination_directory="/path/to/destination"
Define the SSH password
ssh_password="YourRootPassword"
Loop until rsync completes successfully
while true; do
# Perform the rsync operation with SSH password authentication and progress display
rsync -avz --partial --append --progress -e "sshpass -p '$ssh_password' ssh -p 2200 -o StrictHostKeyChecking=no" root@your_remote_vps_ip:"$source_directory" "$destination_directory"
# Check the exit status of rsync
if [ $? -eq 0 ]; then
echo "rsync completed successfully."
break # Exit the loop if rsync is successful
else
echo "rsync failed or was interrupted. Retrying in 5 seconds..."
sleep 5 # Wait for 5 seconds before retrying
fi
done
1.1. Объяснение сценария
Этот сценарий автоматизирует процесс использования команды rsync
для копирования файлов и каталогов с удаленного сервера в локальную систему, а также обрабатывает аутентификацию по паролю SSH и повторяет операцию rsync
, если это терпит неудачу.
Вот разбивка сценария:
1. Определите исходный и целевой каталоги:
source_directory="/path/to/source"
destination_directory="/path/to/destination"
Эти переменные хранят исходный и целевой каталоги для операции rsync
. Вам следует заменить их фактическими путями, которые вы хотите использовать.
2. Определите пароль SSH:
ssh_password="YourRootPassword"
Эта переменная содержит пароль SSH для аутентификации при подключении к удаленному серверу. Замените "YourRootPassword"
своим действительным паролем root.
3. Цикл до тех пор, пока rsync
не завершится успешно:
while true; do
Это запускает бесконечный цикл, который будет продолжаться до тех пор, пока операция rsync
не завершится успешно. Это позволяет сценарию повторить операцию в случае неудачи.
4. Выполните операцию rsync
:
rsync -avz --partial --append --progress -e "sshpass -p '$ssh_password' ssh -p 2200 -o StrictHostKeyChecking=no" root@your_vps_ip:"$source_directory" "$destination_directory"
Эта строка выполняет операцию rsync
со следующими параметрами и конфигурациями:
-avz
: режим архивирования с подробным выводом и сжатием.--partial
: позволяет возобновить частичную передачу.--append
: добавляет данные в файлы вместо того, чтобы начинать заново.--progress
: отображает информацию о ходе выполнения.-e "sshpass -p '$ssh_password' ssh -p 2200 -o StrictHostKeyChecking=no"
: указывает команду и параметры SSH, включая аутентификацию по паролю с использованиемsshpass
. Замените номер порта ssh2200
на свой собственный.
5. Проверьте статус завершения rsync
:
if [ $? -eq 0 ]; then
echo "rsync completed successfully."
break # Exit the loop if rsync is successful
else
echo "rsync failed or was interrupted. Retrying in 5 seconds..."
sleep 5 # Wait for 5 seconds before retrying
fi
После операции rsync
в этом разделе проверяется статус завершения rsync
. Если статус выхода равен 0 (что указывает на успех), он печатает сообщение об успехе и выходит из цикла. Если rsync
завершается неудачно (ненулевой статус выхода), он печатает сообщение об ошибке, ждет 5 секунд, а затем повторяет операцию rsync
.
6. Удалите ключ SSH из агента (при использовании ключей SSH):
ssh-agent -k
Если вы использовали ключи SSH для аутентификации и добавляли ключ SSH к агенту в начале каждой итерации цикла, эта строка удаляет ключ SSH из агента, чтобы гарантировать, что он не останется позади.
Этот сценарий по существу оборачивает операцию rsync
в цикл повтора, обрабатывая SSH-аутентификацию на основе пароля и отображая информацию о ходе выполнения. Он продолжает повторять операцию до тех пор, пока она не завершится успешно или пока вы вручную не завершите сценарий.
1.2. Сделайте скрипт исполняемым
Выполните следующую команду, чтобы сделать скрипт исполняемым:
chmod +x rsync_script_with_ssh_password.sh
1.3. Запустить сценарий
Запустите скрипт командой:
./rsync_script_with_ssh_password.sh
Это займет некоторое время в зависимости от размера данных и скорости сети.
После успешного завершения вы увидите примерно такой результат:
receiving incremental file list
./
ostechnix.tar.gz
11,151,804,222 100% 259.80kB/s 3:25:11 (xfr#1, to-chk=0/3)
sent 46 bytes received 3,271,217,407 bytes 265,445.49 bytes/sec
total size is 11,151,804,817 speedup is 3.41
rsync completed successfully.
Резервное копирование файлов с удаленного Linux VPS с использованием сценария Rsync
Помните, что использование паролей в скриптах может представлять угрозу безопасности, поэтому важно принять меры предосторожности для защиты ваших скриптов и учетных данных. Кроме того, рассмотрите возможность использования аутентификации на основе ключей SSH для повышения безопасности при работе с удаленными серверами.
2. Сценарий резервного копирования Rsync для аутентификации на основе ключей SSH.
Для повышения безопасности и удобства доступа без пароля наш второй скрипт использует аутентификацию на основе ключей SSH.
2.1. Настройка аутентификации на основе ключей SSH
Прежде всего, вам необходимо настроить аутентификацию на основе ключей SSH (также известную как аутентификация SSH без пароля). Если вы не знаете, как это сделать, перейдите по ссылке, приведенной ниже.
Как настроить аутентификацию на основе ключей SSH в Linux
2.2. Создать сценарий Rsync
Если вы хотите изменить сценарий для аутентификации на основе ключей SSH вместо аутентификации на основе пароля, вы можете сделать это, удалив код, связанный с паролем SSH. В частности, вы можете удалить часть sshpass
команды rsync
и связанную с ней переменную ssh_password
.
Ниже приведен модифицированный сценарий для аутентификации на основе ключей SSH.
Создайте текстовый файл (например, rsync_script_with_ssh_key
) со следующим содержимым.
#!/bin/bash
Define source and destination directories
source_directory="/path/to/source"
destination_directory="/path/to/destination"
Loop until rsync completes successfully
while true; do
# Perform the rsync operation with SSH key-based authentication and progress display
rsync -avz --partial --append --progress -e "ssh -i /path/to/your/private/key -p 2200 -o StrictHostKeyChecking=no" root@your_vps_ip:"$source_directory" "$destination_directory"
# Check the exit status of rsync
if [ $? -eq 0 ]; then
echo "rsync completed successfully."
break # Exit the loop if rsync is successful
else
echo "rsync failed or was interrupted. Retrying in 5 seconds..."
sleep 5 # Wait for 5 seconds before retrying
fi
done
В этом модифицированном скрипте:
- Команда
sshpass
и переменнаяssh_password
были удалены. - Команда
rsync
использует опцию-i
, чтобы указать путь к вашему личному ключу для аутентификации на основе ключей SSH.
Обязательно замените /path/to/your/private/key
фактическим путем к вашему секретному ключу. Этот скрипт будет использовать аутентификацию на основе ключей SSH для подключения к вашему VPS, что делает его более безопасным и удобным по сравнению с аутентификацией на основе пароля.
2.3. Сделайте скрипт исполняемым
Выполните следующую команду, чтобы сделать скрипт исполняемым:
chmod +x rsync_script_with_ssh_key.sh
2.4. Запустить сценарий
Запустите скрипт командой:
./rsync_script_with_ssh_key.sh
В зависимости от скорости сети и размера данных передача файлов может занять некоторое время.
Запланировать резервное копирование с помощью cron
Вы можете запланировать запуск сценария в определенное время с помощью утилиты cron в Linux. cron
позволяет автоматизировать выполнение задач, включая запуск сценариев, через заранее заданные интервалы или в определенное время. Вот как вы можете запланировать запуск сценария в определенное время:
1. Откройте конфигурацию Crontab:
Откройте конфигурацию crontab
вашего пользователя для редактирования. Вы можете сделать это, выполнив следующую команду:
crontab -e
Откроется файл конфигурации crontab
в текстовом редакторе по умолчанию.
2. Добавьте запланированное задание:
В файле crontab
добавьте строку, указывающую, когда и как часто вы хотите запускать скрипт. Формат строки задания cron
следующий:
* * * * * /path/to/script.sh
Вот что означает каждое поле:
- Первое поле (минуты) может быть числом от 0 до 59.
- Второе поле (часы) может быть числом от 0 до 23.
- Третье поле (дни месяца) может быть числом от 1 до 31.
- Четвертое поле (месяцы) может представлять собой число от 1 до 12 или трехбуквенное сокращение (например,
январь
,февраль
и т. д.). - Пятое поле (дни недели) может содержать число от 0 до 7, где 0 и 7 обозначают воскресенье, или трехбуквенное сокращение (например,
Вс
,Пн
). и т. д.).
Например, чтобы запускать скрипт каждый день в 2:00 ночи, вы можете добавить следующую строку в файл crontab
:
0 2 * * * /path/to/your/script.sh
Обязательно замените /path/to/your/script.sh
фактическим путем к вашему скрипту.
3. Сохранить и выйти:
Сохраните файл crontab
и выйдите из текстового редактора.
4. Проверьте запланированное задание:
Чтобы убедиться, что ваше задание cron
добавлено, вы можете просмотреть задания cron
вашего пользователя с помощью следующей команды:
crontab -l
Появится список запланированных задач для вашего пользователя.
Ваш скрипт теперь будет запускаться автоматически в указанное время каждый день. Вы можете настроить расписание, изменив значения в строке задания cron
в соответствии с вашими потребностями.
Заключение
Резервные копии необходимы любой организации, стремящейся защитить свои данные и обеспечить непрерывность своего бизнеса. К счастью, rsync
поможет вам, предложив надежные средства защиты ваших важных данных.
Если вы еще не создали резервную копию своей системы, настоятельно рекомендуется сделать это сейчас, прежде чем произойдут какие-либо непредвиденные события.