Scp
如何將文件從多個伺服器複製到本地系統?
我們在 app00、app01 等伺服器上多次部署了一個應用程序。我需要將所有這些伺服器中的單個日誌文件複製到我的本地 Mac 上,以便我可以執行一些 grepping 和切割。
我使用 csshX 來查看這個文件,但我找不到 scp 的等價物。我基本上想要兩件事:
- 能夠連接到 n 個此類伺服器並複製文件
- 通過在日誌文件前加上伺服器主機名來避免本地命名衝突
我該怎麼做呢?
這對於一個小腳本來說是微不足道的。例如:
for server in app0 app1 app4 app5 appN; do scp user@$server:/path/to/log/file /local/path/to/"$server"_file done
以上將依次從每個伺服器複製文件並命名
SERVERNAME_file
。因此,來自的文件app0
將是app0_file
等。您顯然可以將名稱更改為您想要的任何名稱。
使用GNU 並行:
parallel -j0 scp {}:/remote_path file_from_{} ::: host1 host2 host3 # and so on
與使用 a 的解決方案不同
for
,這將並行執行所有下載