我正在尝试使用 rsnapshot 设置备份系统,它将文件从远程位置复制到本地位置。我已经设置了 rsnapshot,就我所见,但当我运行 rsnapshot configtest 时,它说
'backup web3:backups/ web3/ - Source directory "web3:backups/ " doesn't exist'
我使用的配置行是:
backup web3:backups/ web3/
它在 hosts 文件中使用了别名。但是,我也尝试过使用 ip 地址并在命令中定义用户名,但这些都不起作用(同样的错误)。我还检查了 cmd_ssh 是否已启用并指向有效文件。
有人知道是什么原因造成的吗?现在这变得相当令人沮丧,因为我已经设法让大多数备份系统正常工作,而且我确信我以前也曾这样做过。我尝试过使用 ssh 和 rsync,它们似乎都将 web3:backups 视为有效的网络位置
答案1
最好先测试一下配置的语法。
rsnapshot -c /usr/local/etc/rsnapshot.conf configtest
就我而言,“源目录......不存在”的问题已通过删除尾随空格得到解决。
答案2
虽然 rsync 的文档说它接受 host:path 参数并使用 rsh,但我在代码中找不到该支持的证据。
在发出您看到的消息之前,它会对源参数进行一系列测试:
换句话说:
if ( is_real_local_abs_path($src) )
elsif ( is_ssh_path($src) )
elsif ( is_anon_rsync_path($src) )
elsif ( is_cwrsync_path($src) )
elsif ( is_linux_lvm_path($src) )
else print "Source directory $src doesn't exist"
这些模式都不是您的主机:路径
如果可以,请在 web3 上使用 ssh 或 rsync 守护程序。
对于在本地文件系统上遇到此错误的其他用户,请确保在确认目录确实存在时始终跟踪符号链接。例如,我遇到此错误,因为 /mydir 指向 /data/mydir,它存在...但实际上 root 无法读取,因为 encfs 会隐藏用户挂载的目录,即使 root 也无法读取,而无需使用此选项-o allow_others
。
答案3
除了本地文件系统上的完整路径外,您还可以使用 rsync 通过 ssh 备份远程系统。如果您已安装并启用 ssh(通过 cmd_ssh 参数),则可以指定如下路径:
备份 [电子邮件保护]:/etc/example.com/
您需要将远程添加username@
到字符串前面,因此如果您以 root 身份登录,那么您的配置文件将需要是:
backup root@web3:backups/ web3/
您可能还需要使用绝对路径(例如,/root/backups/
而不仅仅是backups/
)
答案4
就我而言,有两个问题:
- 远程服务器使用了自定义 SSH 端口;确保在里面
~/.ssh/config
或使用ssh_args=-p12345
- rsnapshot 似乎拒绝接受相对路径(即不以斜杠开头的路径),例如
[email protected]:public_html
。看到你尝试过web3:backups/
,你可能遇到了同样的问题