我正在创建一个 cron 作业来保持两个目录同步。我正在使用 rsync。我正在运行 rsync守护进程。我读了手册,上面写着:
RSYNC_PASSWORD
Setting RSYNC_PASSWORD to the required password allows you to
run authenticated rsync connections to an rsync daemon without
user intervention. Note that this does not supply a password to
a shell transport such as ssh.
USER or LOGNAME
The USER or LOGNAME environment variables are used to determine
the default username sent to an rsync daemon. If neither is
set, the username defaults to 'nobody'
我有类似的东西:
#!/bin/bash
USER=name
RSYNC_PASSWORD=pass
DEST="myhost::mymodule"
/usr/bin/rsync -rltvvv . $DEST
我还尝试导出(我知道这很危险)USER 和 RSYNC_PASSWORD。我还尝试导出 LOGNAME。但都不起作用。我这样做对吗?
编辑(为了澄清)
我在linux下使用rsync版本2.6.9。
该命令有效:
/usr/bin/rsync -rltvvv . myuser@myhost::mymodule
系统提示我输入密码,输入密码后,传输就开始了。
这是我通过脚本尝试时遇到的错误:
opening tcp connection to myhost port 873
opening connection using --server -vvvltr . mymodule
@ERROR: auth failed on module mymodule
rsync error: error starting client-server protocol (code 5) at main.c(1383) [sender=2.6.9]
_exit_cleanup(code=5, file=main.c, line=1383): about to call exit(5)
答案1
您是否尝试过类似这样的事情:
rsync -rltvvv --password-file=/root/secret . user@host::dest
答案2
使用export RSYNC_PASSWORD=pass
而不是RSYNC_PASSWORD=pass
。
答案3
试试这个,它有效
RSYNC_PASSWORD="yourpasswd"; rsync -rtv -e user@host:/source /dest -p numberofport
最后更改端口