如何将多个文件上传到服务器并使用 scp 保留其目录结构?

如何将多个文件上传到服务器并使用 scp 保留其目录结构?

我有一些本地文件:

/doc/dir-monkey/monkey.txt
/doc/dir-monkey/monkey.xml

/doc/dir-dog/dog.txt
/doc/dir-dog/dog.xml

/doc/dir-cat/cat.txt
/doc/dir-cat/cat.xml

现在我想通过 scp 将它们上传到远程服务器

我想以相同的方式保留目录,并在必要时覆盖旧文件。我知道我一次只能上传一个文件,我发现了一些关于之前压缩文件然后远程解压缩它们的技巧。有这方面的详细说明吗?

我目前使用的是MacOSX 10.10,远程服务器如下:

Distributor ID: Debian
Description:    Debian GNU/Linux 7.5 (wheezy)
Release:    7.5
Codename:   wheezy

答案1

由于可用参数和选项各不相同,因此请务必参阅您的发行版的手册。使用man scp

对于 OSX 中使用 SCP 的递归复制,以下应该可以工作:

scp -r /local/directory [email protected]:/remote/directory

答案2

如 jas 所述, scp -r localDir user@server:remoteDir 应该执行递归复制。如果您担心文件的时间戳,请添加 -p 标志,并且它们也会保留在本地服务器上(否则它们将更改为复制时间)。
这对于少量数据来说是没问题的。如果您必须定期对大量(大量文件)执行此操作并且只想更新已更改的内容,那么我建议使用 rsync。

它会像这样工作:

rsync -avz locaDir user@remoteServer:remoteDir

不过,您的 osx 和 ubuntu 上需要 rsync(这是可能的;))。

答案3

我无法判断这是结构中的所有内容还是只是一个组件。如果这就是一切,你可以做类似的事情scp -r /doc remote:/doc_copy

如果这只是一个子集,那么在 scp 中完成这一切就更困难了。有些选项可能是一次 scp 一个,或者使用类似的东西rsync(及其更具表现力的包含/排除界面)。

相关内容