Резервне копіювання файлів FTP
Резервне копіювання файлів FTP

У попередній статті “Частина 1. Резервне копіювання бази” ми описали етапи резервного копіювання сайту:

1. Резервне копіювання бази
2. Резервне копіювання файлів по FTP
3. Автоматизація запуску за допомогою cron

Перейдемо до другого етапу – створення дзеркала за допомогою FTP.

Встановлення необхідного пакету

Для роботи знадобиться пакет lftp – консольний FTP-клієнт. Якщо в системі він не встановлений, виконайте команду:

sudo apt-get install lftp

Скрипт, що виконує резервне копіювання

Створимо файл з bash-скриптом в папці /etc/init.d:

sudo nano /etc/init.d/rsync_yourdomain 

В файл внесемо наступний код. Не забудьте замінити параметри на власні:

  • sync_yourdomain.log -назва log файлу, куди будуть писатись звіти про синхронізацію
  • /backup/yourdomain – локальна папка, куди буде збережено резервну копію
  • email  – ім’я користувача FTP на вашому сервері
  • password – пароль користувача FTP на вашому сервері
  • url  – FTP адреса вашого сервера, наприклад ftp://ftp.exampledomain.com
# Очищення лог-файлу
LOG_FILE="/var/log/lftp/sync_yourdomain.log"
cp /dev/null "$LOG_FILE"

# Виконання резервного копіювання через lftp
/usr/bin/lftp -e 'mirror -e --delete --log=/var/log/lftp/sync_yourdomain.log / /backup/yourdomain; bye;' -u email,password url
# Запис часу завершення
echo 'Finished at ' >> "$LOG_FILE"
date >> "$LOG_FILE"

Після створення файлу не забудьте надати йому права на виконання:

sudo chmod +x /etc/init.d/rsync_yourdomain 

lftp man

Опція Опис
-e "команда" Виконати команду та не завершувати з’єднання.
-c "команда" Виконати команду та завершити з’єднання.
-f файл Виконати команди зі скриптового файлу.
--help Показати довідку.
-u user[,password] Задати ім’я користувача та пароль для FTP/FTPS/SFTP.
-p порт Вказати порт підключення.
--norc Не читати налаштування з ~/.lftprc.
--version Показати версію lftp.

 

Команди для дзеркального копіювання (mirror)

Опція Опис
mirror /віддалений /локальний Завантажити каталог з сервера.
mirror -R /локальний /віддалений Завантажити локальний каталог на сервер.
mirror -e Видалити зайві файли у цільовій папці (дзеркальне видалення).
mirror --delete Видалити файли, яких немає у вихідній папці.
mirror --continue Продовжити перерване завантаження.
mirror --only-newer Завантажувати лише нові файли.
mirror --parallel=5 Використовувати 5 потоків для завантаження.

Перед першим запуском не забудьте створити локальну папку (local_folder), наприклад /backup/yourdomain, в яку складатиметься бекап, та /var/log/lftp/, до якої будуть писатися логи. Перевірте права доступу до цих папок для користувача, який запускає скрипти.

Зворотна синхронізація (відновлення з бекапу)

Якщо раптом потрібно синхронізувати віддалений сервер з локальним, тобто залити зміни на сервер, скрипт зміниться таким чином (додається ключ -R і міняються місцями локальна та віддалена папки):

/usr/bin/lftp -e 'mirror -e -R  --log=/var/log/lftp/sync_yourdomain.log /backup/yourdomain / ; bye;' -u email,password url

Вимкнення перевірки SSL

На деяких серверах за замовчуванням увімкнено перевірку SSL-сертифікатів при підключенні по FTP. Якщо підключення не вдається через помилку сертифіката, спробуйте примусово вимкнути SSL.

Для цього створіть або відредагуйте файл ~/.lftp/rc і додайте такі рядки:

set ssl:verify-certificate off
set ftp:ssl-allow no
set ftp:ssl-allow-anonymous no
set ftp:ssl-auth TLS
set ftp:ssl-copy-sid no
set ftp:ssl-data-use-keys no

Або ж додайте ключ безпосередньо в запит:

/usr/bin/lftp -e 'set ssl:verify-certificate no; mirror -e --delete --log=/var/log/lftp/sync_yourdomain.log / /backup/yourdomain; bye;' -u email,password url

Це дозволить підключатися без перевірки сертифіката та уникнути помилок автентифікації.

Таким чином, ми налаштували резервне копіювання файлів сайту по FTP, що дозволяє автоматично створювати дзеркало сайту на локальному сервері.

Від Тетяна

IT-спеціалістка, викладачка, фанатка сучасних технологій. З 2009 року занурена у світ цифрового дизайну, веб-розробки та адміністрування систем. Ділюсь знаннями про веб-технології, IT-інструменти та корисні лайфхаки, викладаю студентам, навчаюсь сама.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *