我正在尝试使用 rsync 和 sftp 设置从 Ubuntu 服务器到 Synology NAS(DS413j)的备份系统。
我为此创建了一个用户,我们可以将其称为 ubuntu-backup。我在 ubuntu-backup 主目录中有一个名为 www 的目录,备份将保存在该目录中。我已在 DSM 中启用网络备份,用户 ubuntu-backup 对其主目录具有完全访问权限
这是我在 Synology NAS 上的 rsync 配置文件:
#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/ [email protected]:./
结果:
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/ [email protected]
看起来它正在发送文件。没有错误。但我在 NAS 上找不到任何东西。
答案1
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 不会为您提供 shell,因此它不适用于 rsync。您需要 SSH 连接。
允许 SSH 连接后,可能需要明确告知 rsync 使用 SSH。有几种方法可以做到这一点:
rsync -aHvhiPb --rsh=ssh /var/www/ [email protected]:./
或者
rsync -aHvhiPb "ssh -l ubuntu-backup" /var/www/ backup.example.com:./
rsync 的手册页中还有更多示例。
在第二个示例中,它将文件同步到名为[电子邮件保护]位于直接。为了指定远程服务器,您应该在规范中的某处使用冒号。