无法让 sftp 上的 rsync 工作

无法让 sftp 上的 rsync 工作

我正在尝试使用 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 的手册页中还有更多示例。

在第二个示例中,它将文件同步到名为[电子邮件保护]位于直接。为了指定远程服务器,您应该在规范中的某处使用冒号。

相关内容