Rsync

從安全伺服器獲取文件列表

  • December 6, 2011

我正在嘗試從安全伺服器獲取文件列表,以將它們(使用差異)與我在本地版本上修改的文件進行比較(不幸的是,我工作的公司尚未使用 subversion 或 git)

我很容易得到文件列表:

find . -mtime -20 | grep "\.php\|\.js\|\.css" > changedfiles.log

我需要的是一個腳本,它將遍歷此列表並將它們中的每一個(scp 或 rsync)安全複製到本地目錄,保留相對路徑名。我試過:

for line in `cat changedfiles.log`
do
DIRPATH=`dirname "$line"`
`mkdir -p myfiles/$DIRPATH`
scp user@host:/remotepath/$line myfiles/$line
done

但 scp 一直問我密碼(我不想在沒有密碼的情況下為 scp 設置基於密鑰的身份驗證)

我不允許在遠端伺服器上 ssh,所以我不能只壓縮列表並在一個命令中下載它們

是否可以只輸入一次密碼?

與其設置無密碼密鑰,不如創建一個受密碼保護的密鑰並使用 ssh-agent 確保每個作業只需要輸入一次。

生成密鑰後,在腳本前加上以下內容:

# Start a new agent
eval `ssh-agent -s`

# add keys with a two-hour time limit
ssh-add -t 7200 ~/.ssh/id_rsa

此時,系統會提示您輸入密碼。腳本完成後,如果您不想讓它繼續執行,可以自動終止 ssh-agent:

# kill the agent
ssh-agent -k

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