我正在尝试使用 NAS 提供的“备份站”将 NAS(QNAP TS-469 Pro)的备份设置到运行 Ubuntu 16.10 的 PC 上。
如果我 ssh 到 NAS 并运行以下命令,rsync 就会起作用:
touch file.txt # Create "file.txt" on the QNAP
rsync file.txt username@ipaddress:~ # Backup "file.txt" on the backup PC
但是,当我从 NAS 的 GUI(在浏览器中)设置备份时,我收到错误
端口号无效或服务已禁用。
我读了一些关于端口 873 或运行 rsync 守护程序的内容,但这些对我来说都很不清楚。
为什么手动运行rsync
可以工作,而“备份站”却出现错误?当然,最终我感兴趣的是让自动备份工作。
答案1
Rsync 可以以两种不同的模式工作:
- 通过 SSH:SSH 隧道(基本上使用管道)内的 Rsync 连接(用于控制和数据传输)。由于 SSH 访问的普遍性和安全性,这通常是首选方法。但是,要真正透明和自动化(无需密码),您必须设置 RSA 身份验证。此外,由于所有数据都通过 SSH 加密,因此它可能比其他方法慢;
- 通过守护进程(或服务)模式:在远程系统上,Rsync 作为守护程序/服务运行,监听 TCP 873 端口。此模式没有内置加密,因此比 SSH 隧道更快,但安全性更低。这是 QNAP 用于本地和远程备份的模式。要让 QNAP 使用您的 PC 作为其备份目标(即:在 PC 上备份 NAS),您需要启用 Rsync 服务在您的电脑上。虽然不难,但它肯定比简单的 SSH 隧道更复杂。您可以在网上找到更多信息,例如这里。
答案2
您可能感到rsync over rsync
困惑rsync over ssh
。
通过 SSH 进行 Rsync(使用你的 ssh 配置)
rsync -av file.txt username@ipaddress:~
此方法穿越 SSH 通道并且是加密的。
Rsync 与 Rsync 的关系使用标准 rsync 协议
rsync -av file.txt ipaddress::myhome/.
后者假设您已设置 rsyncd.conf 并启动 rsync 作为守护进程。作为守护进程,所有身份验证/安全性均在 rsyncd.conf 中定义,并且不使用加密。
发现差异的简单方法是地址后面的两个冒号和两个冒号后面的共享名称。
这是一个非常简单和危险的rsyncd.conf 的示例(简单,因为 root 和权限不是问题。危险,因为以 root 身份运行而不是 chroot)
uid = root
gid = root
use chroot = no
max connections = 64
lock file = /var/tmp/rsyncd.lock
syslog facility = local5
pid file = /var/tmp/rsyncd.pid
strict modes = false
hosts allow = 192.168.120.2
timeout = 60
dont compress = *.xz *.gz *.tgz *.zip *.rpm *.bz2 *.7z *.rar *.jp* *.gif *.png *.avi *.mp* *.wmv *.asf *.flv *.m4v *.mkv *.mov *.ogm *.rm *.3g*
#refuse options = checksum delete
refuse options = delete
#
[myhome]
list = false
comment = "myhome"
path = /home/myself/mydir
read only = no
下面是我启动上述守护进程的过程:
#!/bin/bash
set -o posix
set -u
# keep nagios happy
renice 19 -p $$ > /dev/null 2>&1
ionice -c3 -p $$ > /dev/null 2>&1
rsync --daemon --ipv4 --address=192.168.120.1 --config=/home/myhome/rsyncd.conf --log-file=/dev/shm/rsync.log