脚本中 rsync 的用户名和密码

脚本中 rsync 的用户名和密码

我正在创建一个 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

最后更改端口

相关内容