Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssh 使用rsync将文件从远程服务器复制到本地计算机_Ssh_Rsync - Fatal编程技术网

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

Ssh 使用rsync将文件从远程服务器复制到本地计算机,ssh,rsync,Ssh,Rsync,一旦我通过ssh连接到远程服务器,将所有文件从目录复制到我机器上的本地目录的命令是什么?从本地机器: 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 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

有关我常用的交换机的说明,请参阅。

如果您具有SSH访问权限,则不需要先使用SSH,然后再进行复制,只需从目标使用即可

scp user@host:/path/file /localpath/file
支持通配符,因此

scp user@host:/path/folder/* /localpath/folder
将复制该文件夹中的所有远程文件。如果复制多个目录


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

我认为最好从本地计算机复制文件,因为如果文件数量或文件大小非常大,如果当前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/
其中
v
选项为
--详细
a
选项为
--存档
--存档模式,
p
选项与
--部分
--保留部分传输的文件相同,
e
选项为
--rsh=命令
--指定要使用的远程shell


因为您可以直接从本地机器上进行同步。哦。。。是的,我能。我现在看到了其他答案。谢谢。这是(web)开发的常见任务,有一个很好的答案。我不明白为什么它仍然是关闭的。我想@d.raev指的是这个问题被关闭为非主题的事实(如果我没记错的话,我标记这个问题迁移到超级用户,我认为它更适合),而不是没有被接受的答案。还是。。。经过这么长时间,我的答案终于被接受了,真是太好了。:-)@markstewie没有不好的感觉,这是一个很好的问题,它帮助了我(似乎还有很多其他人),但这个“封闭”的问题让它看起来不值得信任,所以我想引起一些注意。为什么要使用
scp
而不是
rsync
?另外,请注意shell不会试图展开
user@host:/path/folder/*
,可能是通过使用单引号(
)实现的。我发现从目标位置使用scp更容易。。。。本质上是通过ssh复制文件,但不必首先建立ssh连接。我知道什么是
scp
,这不是我的问题。你为什么不使用?这就是问题所要求的,不需要建立SSH会话,并且通常比
scp
更快、更高效。请记住,scp遵循符号链接,而不是复制它们。这可能会导致复制的内容超过预期,并导致符号链接丢失(它们会变成普通的文件夹/文件)。Mondane的回应正是我找到这篇文章的原因。通常,我使用scp处理所有事情,但我需要保留服务器之间的权限和符号链接。此外,速度差异也很大(bc我的新手肯定是scped第一个)。对该命令的解释是:哇,explainshell站点太棒了。@CMCDRANGKAI:事实上,本地主机必须运行ssh服务器,并且可以被远程主机访问。这是我更喜欢第一种解决方案而不是第二种解决方案的原因之一。与尾部斜杠同步时要小心。Johnnysweb给出的命令将在
/path/to/local/storage
内创建一个名为copy的目录。像这样
/path/to/local/storage/copy
。如果这是你想要的,很好。但是,更常见的情况是,您希望将远程目录的内容复制到本地目录中的目录中。然后您可以执行
/path/to/copy/
,将内容放在目录
/path/to/local/storage
中,而无需创建本地副本目录。谢谢@beefsack!