2012-07-21 87 views
9

有沒有一種方法可以將scp目錄中的所有文件以遞歸方式遞歸到遠程機器並保留它們的原始文件名但不復制它所在的目錄?遞歸地scp除當前目錄外

dir1/file 
dir1/dir2/file2 

因此dir1的內容將僅被複制。 dir1不會被創建。但dir2目錄將在file2之內創建。

我試過scp -r dir1 remote:/newfolder,但它創建dir1/newfolder目錄remote。我不希望它創建dir1目錄。只需將dir1中的所有文件放入newfolder即可。

回答

19
cd dir1 
scp -r . remote:/newfolder 

這避免給scp機會做任何與名字dir1在遠程機器上。你可能還喜歡:

(cd dir1; scp -r . remote:/newfolder) 

這將使你的炮彈在其原來的目錄,而工作是相同的(因爲它啓動一個子shell,做的cdscp操作)。

8

這意味着複製由shell擴展取得的文件列表DIR1/*到遠程位置遠程:/ newfolder

scp -r dir1/* remote:/newfolder 
+0

我喜歡這個答案,因爲它避免了必須做'cd'。如果你在'scp'之後的下一個語句要求你在原來的目錄下,那麼你必須再做一次'cd'回到它。 – jreancsu 2016-11-30 20:19:07

1

您可以在相對路徑中使用點語法。

scp -r dir1/. remote:/newfolder 

如果遠程目錄不存在,它將被創建。