Я пытаюсь настроить систему резервного копирования с сервера Ubuntu на Synology NAS (DS413j) с помощью rsync и sftp.
Я создал для этого пользователя, которого мы можем назвать ubuntu-backup. У меня есть каталог в домашнем каталоге ubuntu-backup под названием www, в котором будет сохранена резервная копия. Я включил сетевое резервное копирование в DSM. Пользователь ubuntu-backup имеет полный доступ к своему домашнему каталогу.
Вот мой файл конфигурации rsync на Synology NAS:
#motd file = /etc/rsyncd.motd
#log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
use chroot = no
[NetBackup]
path = /var/services/NetBackup
comment = Network Backup Share
uid = root
gid = root
read only = no
list = yes
charset = utf-8
auth users = root
secrets file = /etc/rsyncd.secrets
[ubuntu-backup]
path = /volume1/homes/ubuntu-backup/www
comment = Ubuntu Backup
uid = ubuntu-backup
gid = users
read only = false
auth users = ubuntu-backup
secrets file = /etc/rsyncd.secrets
Разрешения на / volume1 / homes / ubuntu-backup / www - ubuntu-backup: users 777
Вот команда, которую я выполняю.
rsync -aHvhiPb /var/www/ ubuntu-backup@backup.example.com:./
Результат:
sending incremental file list
ERROR: module is read only
rsync error: syntax or usage error (code 1) at main.c(1034) [Receiver=3.0.9]
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
Если я запускаю это:
rsync -aHvhiPb /var/www/ ubuntu-backup@backup.example.com
Похоже, он отправляет файлы. Ошибок нет. Но я ничего не могу найти на NAS.
rsync не поддерживает SFTP. На странице руководства:
There are two different ways for rsync to contact a remote system:
using a remote-shell program as the transport (such as ssh or rsh) or
contacting an rsync daemon directly via TCP.
SFTP не предоставляет оболочку, следовательно, не работает с rsync. Вместо этого вам понадобится SSH-соединение.
После того, как вы разрешили SSH-соединения, вам может потребоваться специально указать rsync использовать SSH. Есть несколько способов сделать это:
rsync -aHvhiPb --rsh=ssh /var/www/ ubuntu-backup@backup.example.com:./
или
rsync -aHvhiPb "ssh -l ubuntu-backup" /var/www/ backup.example.com:./
На странице руководства по rsync есть гораздо больше примеров.
Во втором примере файлы синхронизируются в каталог с именем ubuntu-backup@backup.example.com, расположенный в директории. Чтобы указать удаленный сервер, вы должны использовать двоеточие где-нибудь в спецификации.