簡體   English   中英

Bash腳本:通過SSH遍歷目錄並將其下載到本地計算機

[英]Bash script: Looping through directories over SSH and downloading them to local machine

我正在嘗試編寫一個bash腳本:

  • 循環瀏覽SSH服務器上文件夾中的所有目錄
  • 將每個文件夾中的文件(標題為“ foo”)下載到本地計算機。

目前,我有:

ssh username@server "for dir in ~/directoryname/*; (... something here!); done"

但是,我認為我無法在訪問SSH服務器時使用scp。 有沒有一種方法可以循環瀏覽並在此處下載所有內容?

僅當遠程服務器可以訪問您自己的系統時,才能遠程運行scp 讓我們假設沒有。

您可以分兩步進行操作:

ssh username@server "... some script that just echos the paths ..." > log
for line in $(<log); do scp username@server:$line ./dir/$line; done

或者您可以研究功能非常強大的rsync 它具有--include--exclude選項,使您可以執行以下操作:

rsync -av username@server:~/somepath/ ./somepath/ [--exclude/--include flags]

是的,該腳本是傳遞給ssh的參數,並且在遠程計算機上運行,​​這意味着您不能輕易引用自己的計算機來告訴它要將文件復制到何處。

您可以嘗試在本地運行的bash腳本來獲取要搜索的目錄結構,並使用scp復制任何您想要檢索的內容。

或者,根據涉及的大小,遍歷所有directoryname/ ,然后從中獲取所需內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM