2012-07-21 66 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 

如果远程目录不存在,它将被创建。