使用rsync将文件从远程服务器复制到本地计算机


318

将ssh放入远程服务器后,将所有文件从目录复制到计算机上的本地目录的命令是什么?


4
因为您可以rsync直接从本地计算机。
Johnsyweb

2
哦,是的,我可以。我现在看到其他答案。谢谢。
markstewie'2

17
这是(Web)开发的常见任务,并且有很好的答案。我不明白为什么它仍然关闭。
d.raev

6
我认为@ d.raev指的是该问题已被关闭,这是一个离题的话题(如果我没记错的话,我标记为将该问题迁移到SuperUser,我认为它更合适),而不是没有被接受的答案。仍然……很高兴一直接受我的回答。:-)
Johnsyweb 2014年

3
@markstewie没有不好的感觉,这是一个很好的问题,它对我有所帮助(似乎也有很多其他问题),但是此“关闭”使其看起来不值得信任,因此我希望对此有所注意。
d.raev

Answers:


575

在本地计算机上:

rsync -chavzP --stats user@remote.host:/path/to/copy /path/to/local/storage

从具有非标准ssh端口的本地计算机上:

rsync -chavzP -e "ssh -p $portNumber" user@remote.host:/path/to/copy /local/path

或从远程主机,假设您确实想以这种方式工作,并且本地计算机正在侦听SSH:

rsync -chavzP --stats /path/to/copy user@host.remoted.from:/path/to/local/storage

请参阅参考资料man rsync,以了解我通常的开关。


255
该命令的说明:explainshell.com/…–
Beefsack

118
哇,explainshell网站真棒。
gosukiwi

2
@cmcdragonkai:确实,本地主机必须正在运行ssh服务器,并且可以被远程主机访问。这是我选择第一种解决方案而不是第二种解决方案的原因之一。
Johnsyweb 2015年

16
与尾部反斜杠同步时要小心。Johnnysweb给出的命令将创建一个名为copy inside的目录/path/to/local/storage。像这样/path/to/local/storage/copy。如果那是您想要的好。但是,更常见的情况是您要将远程目录的内容复制到本地目录中。然后,您可以/path/to/copy/将内容放置在目录中,/path/to/local/storage而无需创建本地副本目录。
2015年

16
我是来这里执行rsync命令的,而我使用了explainshell.com。谢谢@beefsack!
Cyphase '17

50

如果您具有SSH访问权限,则无需先进行SSH再复制,只需从目标位置使用安全复制(SCP)

scp user@host:/path/file /localpath/file

支持通配符,因此

scp user@host:/path/folder/* /localpath/folder

将复制该文件夹中的所有远程文件。如果复制多个目录,则复制一个目录。

注意-r也将复制所有子文件夹和内容。


6
为什么使用scp而不是rsync?另外,注意不要user@host:/path/folder/*通过使用单引号(')扩展外壳程序。
Johnsyweb

我发现从目标位置更容易使用scp。...本质上,它是通过ssh复制文件,但不必首先建立ssh连接。
Tezyn

8
我知道是什么scp,这不是我的问题。你为什么不使用rsync?这就是问题所要的,不需要建立的SSH会话并且通常比更快,更高效scp
Johnsyweb

26
请记住,scp遵循符号链接,而不是复制它们。这可能会导致复制数量超出您的预期,并导致符号链接丢失(它们变成普通的文件夹/文件)。
蒙丹2014年

2
Mondane的回复正是我找到此帖子的原因。通常,我对所有内容都使用scp,但是我需要保留服务器之间的权限和符号链接。而且,速度差异很大(不列颠哥伦比亚我的新手自己肯定先爬了)。
凯尔2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.