Бэкап на NAS Synology через rsync
4 ноября 2012
Понадобилось организовать регулярный бэкап в локальной сети через rsync. Так как уже имеется NAS Synology DS212+, буду использовать его.
Источников данных несколько. Пусть это будут сайты. Для каждого необходимо взять файлы и дамп базы.
Настройка NAS
Control panel -> File Services -> rsync -> Enable rsync service
.- Создаём нового пользователя
Control panel -> Users -> Create
. - Имя обязательно должно быть
rsync
, группаusers
, права на чтение/запись шарыNetBackup
и разрешение использоватьrsync
. Control panel -> File Services -> rsync -> Enable rsync account
.
Особенности
- Synology создаёт одну шару
NetBackup
как модуль rsync. Других по умолчанию нет. - По умолчанию можно использовать либо пользователя
admin
, что не очень безопасно, либо создать пользователяrsync
. Именно с таким именем. - Указывать наш NAS rsync-у будем в виде
[email protected]::NetBackup/
. - У пользователя rsync должны быть права на
NetBackup
.
Linux
Напишем скриптик и поставим на крон.
#!/bin/bash export RSYNC_PASSWORD=your_rsync_user_password backupServer=rsync@nas.ip::NetBackup/ currentDate=`date +%F` currentMonth=`date +%Y-%m` rsyncTmp=/tmp/rsync/ rsyncMkdir=${rsyncTmp}mkdir/ rsyncDB=${rsyncTmp}db/ # логин-пароль рута mysql dbusername=root dbpassword=mysql_root_password # rsync не умеет создавать директории. Немного извернёмся. # # rsync_mkdir relative/path destinationPath rsync_mkdir () { mkdir -p ${rsyncMkdir}$1 rsync -v --archive --compress --progress ${rsyncMkdir} $2 rm -R ${rsyncMkdir} } # Делаем дамп БД, сжимаем, отсылаем на NAS. # # rsync_db dbname destinationPath rsync_db () { mkdir -p ${rsyncDB} mysqldump -u $dbusername --password=$dbpassword $1 | gzip -9 > ${rsyncDB}${1}_${currentDate}.sql.gz; rsync -v --archive --compress --progress --partial ${rsyncDB} $2 rm -R ${rsyncDB} } # Отсылаем всю директорию на NAS. # # --delete-after --force после завершения копирования удаляет на NAS всё, чего # больше нет в исходнике. # --partial позволяет докачивать прерванные загрузки. Полезно, если соединение не очень. # --compress жать перед отправкой, разжимать на NAS. # --archive сохраняем атрибуты файлов. # -v --progress показываем прогресс загрузки и другие сообщения. # # rsync_dir sourcePath destinationPath rsync_dir () { rsync -v --archive --compress --progress --delete-after --force --partial $1 $2 } ### example.com ### backupdir=example.com/ backupdirMonth=${backupdir}${currentMonth}/ rsync_mkdir ${backupdirMonth} ${backupServer} rsync_db example_com1 ${backupServer}/${backupdir} rsync_db example_com2 ${backupServer}/${backupdir} rsync_dir /var/www/example.com/ ${backupServer}/${backupdirMonth}
Windows
Под Windows я попробовал DeltaCopy. Бесплатная, работает. Настраивается вот так.
Комментарии RSS по email OK
Deltacopy уже больше года используется на серверах, работает в вариантах Windows->FreeBSD и Windows->Windows.
Есть только одно большое НО: комплект программ из поставки не поддерживает длинные имена файлов и кириллицу. Пришлось на просторах интернета найти замену некоторым EXE и DLL файлам.
rsync_dir - это опечатка? такой функции в скрипте нет
ppa, исправил. CTRL+F5.
Вот спасибо, бро! Полдня провёл в думах почему permision denied если ssh работает...