Ssh

通過保留其相對路徑的列表獲取遠端文件,並在遠端電腦上執行

  • September 16, 2019

1)我在遠端客戶端上執行 SSH 會話以從伺服器獲取文件。

2)有一個伺服器,它保持一個非常廣泛的目錄結構。

  1. 我有一個包含數千個伺服器上文件的路徑名的列表。然而,它們只是伺服器全部內容的一小部分。因此,文件將一個接一個地獲取,而不是通過目錄,沒有萬用字元。

任務:按列表獲取所有文件並將它們放置在客戶端電腦上,並在客戶端創建所有相對路徑

我遇到的問題是 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將確保創建整個目錄樹

(即使它部分可用)

引用自:https://unix.stackexchange.com/questions/541951