我正在尝试使用rsnapshot将远程文件同步到我自己的计算机上。 但是,当我需要访问非远程计算机的SSH用户所拥有的文件时,我遇到了一些麻烦。
我的/etc/rsnapshot.conf如下所示:
config_version 1.2 snapshot_root /shared/.backup/ cmd_cp /bin/cp cmd_rm /bin/rm cmd_rsync /usr/bin/rsync cmd_ssh /usr/bin/ssh cmd_logger /usr/bin/logger cmd_du /usr/bin/du retain hourly 6 retain daily 7 retain weekly 4 retain monthly 3 verbose 2 loglevel 5 logfile /shared/.backup/rsnapshot.log ssh_args -i ~/.ssh/id_rsa -p 62222 # BACKUP DEFINITIONS backup [email protected]:/ dev.local.root/ exclude_file=/shared/.backup/exclude.root,+rsync_long_args=--rsync-path='sudo rsync',rsync_short_args=-zalhHx
rsnapshot hourly运行rsnapshot hourly后,我看到这个错误:
bash: sudo rsync: command not found rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] rsync error: remote command not found (code 127) at io.c(226) [Receiver=3.1.0] ---------------------------------------------------------------------------- rsnapshot encountered an error! The program was invoked with these options: /usr/bin/rsnapshot hourly ---------------------------------------------------------------------------- ERROR: /usr/bin/rsync returned 127 while processing [email protected]:/
如果我检查我的rsnapshot.log文件,我可以看到rsnapshot尝试了这个命令:
/usr/bin/rsync -zalhHx --delete --numeric-ids --relative --delete-excluded --exclude-from=/shared/.backup/exclude.root --rsync-path='sudo rsync' --rsh=/usr/bin/ssh -i ~/.ssh/id_rsa -p 62222 [email protected]:/ /shared/.backup/hourly.0/dev.local.root/
如果我尝试在terminal中运行相同的命令,我得到这个错误:
Unexpected remote arg: [email protected]:/ rsync error: syntax or usage error (code 1) at main.c(1348) [sender=3.1.0]
但是,如果我把引号括起来 – 部分一切正常工作:
/usr/bin/rsync -zalhHx --delete --numeric-ids --relative --delete-excluded --exclude-from=/shared/.backup/exclude.root --rsync-path='sudo rsync' --rsh='/usr/bin/ssh -i ~/.ssh/id_rsa -p 62222' [email protected]:/ /shared/.backup/hourly.0/dev.local.root/
一些事实
username ALL=(ALL) NOPASSWD:ALL 。 sudo命令,而不需要input密码。 PermitRootLogin on和AllowUsers username ,我无法以root用户身份AllowUsers username到远程计算机 ssh [email protected] -p 62222 -i ~/.ssh/id_rsa which rsync ,输出是/usr/bin/rsync ssh [email protected] -p 62222 -i ~/.ssh/id_rsa echo $PATH ,输出是/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games 所以….我的问题很简单:我如何在rsnapshot正确构造这个rsync命令?
感谢帮助!
我有完全一样的错误,我不得不指定一个手动脚本
--rsync-path='sudo rsync' > --rsync-path='/usr/local/bin/rsync'
与/ usr / local / bin / rsync在远程
#! /bin/sh exec /usr/bin/sudo /usr/bin/rsync "$@"