Ssh
通過保留其相對路徑的列表獲取遠端文件,並在遠端電腦上執行
1)我在遠端客戶端上執行 SSH 會話以從伺服器獲取文件。
2)有一個伺服器,它保持一個非常廣泛的目錄結構。
- 我有一個包含數千個伺服器上文件的路徑名的列表。然而,它們只是伺服器全部內容的一小部分。因此,文件將一個接一個地獲取,而不是通過目錄,沒有萬用字元。
任務:按列表獲取所有文件並將它們放置在客戶端電腦上,並在客戶端創建所有相對路徑。
我遇到的問題是 sftp 無法在不存在的目錄中寫入文件:
get -p /q/w/e/r/t/y/file /base/q/w/e/r/t/y/file
不會在 /base/ 中創建所有 q/w/e/r/t/y/ 序列(甚至不是 1-st 子目錄)
注意:解決方案也可能適用於單個文件。我會嘗試在它之後製作批次。
不重要的說明:實際上,我不需要這些路徑 - 但可能有同名的文件,它們不應該在新位置發生衝突。因此,將所有文件排空到一個普通目錄中的想法是不可接受的。
在執行 sftp 之前使用 mkdir 和 dirname 的組合
mkdir -p $(dirname /base/q/w/e/r/t/y/file)
dirname
將提取文件的完整目錄路徑mkdir -p
將確保創建整個目錄樹(即使它部分可用)