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

mar*_*wie 292 ssh rsync

一旦我进入我的远程服务器,该命令将目录中的所有文件复制到我的机器上的本地目录中?

Joh*_*web 530

从您当地的机器:

rsync -chavzP --stats user@remote.host:/path/to/copy /path/to/local/storage
Run Code Online (Sandbox Code Playgroud)

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

rsync -chavzP -e "ssh -p $portNumber" user@remote.host:/path/to/copy /local/path
Run Code Online (Sandbox Code Playgroud)

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

rsync -chavzP --stats /path/to/copy user@host.remoted.from:/path/to/local/storage
Run Code Online (Sandbox Code Playgroud)

有关man rsync我常用开关的说明,请参阅.

  • 该命令的解释:http://explainshell.com/explain?cmd = rsync + -chavzP + --stats+user%40remote.host%3A%2Fpath%2Fto%2Fcopy +%2Fpath%2Fto%2Flocal%2Fstorage (235认同)
  • 哇,Explahell网站很棒. (107认同)
  • 我来到这里是为了一个rsync命令,我带着[explainhell.com](http://explainshell.com)离开了.谢谢@beefsack! (13认同)
  • 使用尾部斜杠进行rsyncing时要小心.Johnnysweb给出的命令将在`/ path/to/local/storage`中创建一个名为copy的目录.就像这样`/ path/to/local/storage/copy`.如果这就是你想要的伟大.但是,更常见的情况是您希望将远程目录的内容复制到本地目录中.然后你会做`/ path/to/copy /`这会将内容放在目录`/ path/to/local/storage`中而不创建本地拷贝目录. (12认同)
  • @cmcdragonkai:实际上,本地主机必须运行ssh服务器并且可以被远程主机访问.这是我更喜欢第一种解决方案而不是第二种解决方案的原因之一. (2认同)

Tez*_*zyn 48

如果您具有SSH访问权限,则无需首先通过SSH进行复制,只需使用目的地的安全复制(SCP).

scp user@host:/path/file /localpath/file
Run Code Online (Sandbox Code Playgroud)

支持通配符,所以

scp user@host:/path/folder/* /localpath/folder
Run Code Online (Sandbox Code Playgroud)

将复制该文件夹中的所有远程文件.如果复制多个目录.

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

  • 请记住,scp遵循符号链接而不是复制它们.这可能导致复制超出您的预期和丢失符号链接(它们成为普通的文件夹/文件). (24认同)
  • 我知道`scp`是什么,这不是我的问题.你为什么不用[`rsync`](http://en.wikipedia.org/wiki/Rsync)?这就是问题所要求的,不需要建立的SSH会话*和*通常比`scp`更快,更有效. (8认同)
  • 为什么使用`scp`而不是`rsync`?另外,请注意你的shell不会尝试扩展`user @ host:/ path/folder/*`,也许是使用单引号(```). (5认同)
  • Mondane的回应正是我发现这篇文章的原因.通常,我使用scp来处理所有事情,但我需要保留从服务器到服务器的权限和符号链接.此外,速度差异(我的新手自我肯定是第一次被削减)是巨大的. (2认同)
  • rsync 也比 scp 快得多。 (2认同)

Gry*_*ryu 7

我认为最好从本地计算机复制文件,因为如果文件数量或文件大小很大,如果当前的 ssh 会话丢失(管道损坏或其他任何情况),复制过程可能会中断。

如果您已配置 ssh 密钥来连接到远程服务器,则可以使用以下命令:

rsync -avP -e "ssh -i /home/local_user/ssh/key_to_access_remote_server.pem" remote_user@remote_host.ip:/home/remote_user/file.gz /home/local_user/Downloads/
Run Code Online (Sandbox Code Playgroud)

其中v选项是--verbosea选项是--archive- 存档模式,选项与- 保留部分传输的文件P相同,选项是- 指定要使用的远程 shell。--partiale--rsh=COMMAND

rsync 手册页