我試圖獲取SCP從一臺服務器複製到另一臺服務器的文件列表,但該命令似乎沒有在read
循環中正確構建。在讀取循環中構建SCP命令語法時出錯
我有一個名爲diff_tapes.txt
文件,其中包含如下要複製的文件列表:
/VAULT14/TEST_V14/634001
/VAULT14/TEST_V14/634002
/VAULT14/TEST_V14/634003
/VAULT14/TEST_V14/634004
等等...
我使用bash命令行如下:
while read line; do scp -p [email protected]:$line $line;done < /home/bill/diff_tapes.txt
當我執行該命令行(我在CentOS所以基本上紅帽運行),我得到:
/VAULT14/TEST_V14/634001: No such file or directory
...對於每個單個文件。
如果我再跑加入-v
開關,以獲得更多的信息,我看到以下內容:
debug1: Sending command: scp -v -p -f /VAULT14/TEST_V14/634001
遠程服務器(lgrdcpvtsa)絕對有問題的文件:
[[email protected] TEST_V14]$ pwd
/VAULT14/TEST_V14
[[email protected] TEST_V14]$ ls -ll
total 207200
-rw------- 1 bill bill 27263700 Apr 26 11:16 634001
-rw------- 1 bill bill 27263700 Apr 26 11:16 634002
-rw------- 1 bill bill 27263700 Apr 26 11:16 634003
-rw------- 1 bill bill 27263700 Apr 26 11:16 634004
這是就好像我第二次在scp命令中有$line
一樣,它被忽略了。
任何想法有什麼問題的語法?
編輯:
爲了清楚起見,文件列表是更可能是這樣的:
/VAULT14/634100_V14/634001
/VAULT11/601100_V11/601011
/VAULT12/510200_V12/510192
而且/VAULT10
通過/VAULT14
都存在服務器上,它只是一個文件夾節點可能不。
這些文件是在本地和遠程計算機上標記爲不同的文件,因此從遠程計算機複製是正確的數據源,所以遞歸複製在這裏不起作用(我認爲-r
交換機是從一個較早的測試,所以我已經從上面的代碼中刪除)。
有沒有辦法在運行時創建的目錄?如果不是,我想我需要首先解析文件列表以獲取目錄並創建它們是否不在本地,然後運行此操作,如果我可以在一個命令中執行操作,那麼將會很好。 –