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