Как организовать бэкап ваших данных на FTP хранилище
Организация резервного копирования недорого и надёжно
Сценарии резервного копирования могут быть самыми разными. Вы можете резервировать только важные для вас данные (например, каталоги с сайтами) или все каталоги и файлы вашего сервера и так часто как вам необходимо. Следует только учитывать,что копирование файлов которые открыты и используются системой может быть неполным. Особенно это касается файлов баз данных и временных файлов.
Мы расскажем о довольно простой, но эффективной реализации резервного копирования на примере сервера с установленной операционной системой Ubuntu 20. Статья не претендует на охват всех возможных вариантов настройки, но даёт понимание того, в каком направлении вам следует работать.
Прежде всего, нам нужно будет подключить FTP хранилище как удалённый диск, чтобы мы могли работать с ним, как с локальным диском: читать, записывать и удалять с него каталоги и файлы. Для этого нам нужно будет установить пакет curlftpfs. Также нам понадобится пакет rsync для копирования вашх данных. Установить оба пакета можно следующей командой:
apt-get install curlftpfs rsync
Создайте точку монтирования для удалённого диска:
mkdir /mnt/ftpbackup
После установки пакетов, необходимо настроить соединение с удалённым диском. Curlftpfs имеет множество опций, но мы используем только те, которые нам необходимы в данном примере. Опции можно задавать как с командной строки (настройки сохранятся до первой перезагрузки вашего сервера):
curlftpfs -v userXXXX:PASSWORD@FTPSERVERADDRESS /mnt/ftpbackup -o fsname=fuse -o disable_epsv -o allow_other -o umask=027 -o uid=500 -o gid=500
так и указать их в файле /etc/fstab (в этом случае настройки сохранятся и после перезагрузки вашего сервера):
curlftpfs#FTPSERVERADDRESS /mnt/ftpbackup fuse user=userXXXX:PASSWORD,allow_other,default_permissions,umask=022,_netdev 0 0
где:
- FTPSERVERADDRESS - адрес вашего FTP хранилища;
- userXXXX - имя пользователя FTP хранилища;
- PASSWORD - пароль пользователя FTP хранилища;
- /mnt/ftpbackup - точка монтирования куда будет подключен удалённый диск;
- umask=022 - маска устанавливающая права на каталоги 755.
После настройки, в выоде команды mount вы увидите что-то наподобии следующей строки:
curlftpfs#ftp://FTPSERVERADDRESS/ on /mnt/ftpbackup type fuse (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other)
Вы можете проверить работу удалённого диска создав, модифицировав или удалив каталог или папку в каталоге /mnt/ftpbackup.
Если всё команды прошли успешно, можно приступать к настройке собственно резервного копирования. Например, она может быть такой:
rsync -avz --recursive /SOURCEDATA /mnt/ftpbackup
где SOURCEDATA - это путь к каталогу, который вы хотите архивировать. Будут скопированы сам каталог и рекурсивно все каталоги и файлы находящиеся в нём. Обратите внимание на то, что если вы указали корневой каталог, то вам понадобится удалённый диск размером как минимум в два раза большим, чем занимают ваши данные. Проверить сколько места занимают ваши данные можно командой:
du --si --max=1 /SOURCEDATA
Для экономии места или для большего удобства, вы можете использовать несколько команд, указав другие каталоги в качестве /SOURCEDATA. Например, если вы хотите резервировать только данные ваших сайтов и они размещены в папке /var/www можно использовать команду:
rsync -avz --recursive /var/www /mnt/ftpbackup
Указанные выше команды можно выполнить с командной строки и проверить результаты их выполнения.
Чтобы резервное копирование осуществлялось без вашего участия, необходимо создать задание cron. Для этого необходимо перейти в cron командой crontab -e м добавить строку с заданием, например, таким:
0 7 * * * rsync -T=/tmp -avz /SOURCEDATA /mnt/ftpbackup
После сохранения задания каждый день в 7 часов утра каталог /SOURCEDATA будет копироваться на удалённый диск.
В дальнейшем, мы добавим в статью несколько слов о том, как ротировать резервные копии.