Bash

腳本中 rsync 的使用者名和密碼

  • June 29, 2020

我正在創建一個 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)

您是否嘗試過類似的方法:

rsync -rltvvv --password-file=/root/secret . user@host::dest

使用export RSYNC_PASSWORD=pass而不是RSYNC_PASSWORD=pass.

引用自:https://serverfault.com/questions/127209