递归scp除当前目录

时间:2012-07-21 18:20:00

标签: unix scp

是否有办法scp递归到远程计算机的目录中的所有文件并保留其原始文件名但不复制它所在的目录?

dir1/file
dir1/dir2/file2

所以dir1的内容只会被复制。不会创建dir1。尽管如此,dir2目录将在file2内创建。

我已尝试scp -r dir1 remote:/newfolder,但在dir1的{​​{1}}目录中创建/newfolder。我不希望它创建remote目录。只需将dir1内的所有文件放入dir1

3 个答案:

答案 0 :(得分:19)

cd dir1
scp -r . remote:/newfolder

这样可以避免scp在远程计算机上使用名称dir1执行任何操作。您可能也更喜欢:

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

这使得shell保留在原始目录中,同时工作(因为它启动了执行cdscp操作的子shell)。

答案 1 :(得分:9)

这意味着将shell扩展dir1 / *创建的文件列表复制到远程位置remote:/ newfolder

scp -r dir1/* remote:/newfolder

答案 2 :(得分:1)

您可以将点语法与相对路径一起使用。

<response>
<lst name="responseHeader"><int name="status">400</int><int name="QTime">111</int></lst><lst name="error"><lst name="metadata"><str name="error-class">org.apache.solr.common.SolrException</str><str name="root-error-class">org.apache.solr.common.SolrException</str></lst><str name=
"msg">ERROR: [doc=0553573403] unknown field 'cat'</str><int name="code">400</int></lst>
</response>

如果远程目录不存在,则会创建它。