Copying files using rsync from remote server to local machine
一旦我将ssh连接到远程服务器上,将目录中的所有文件复制到我机器上的本地目录将是什么命令?
- 我为什么不上厕所?否则,我将如何获得对服务器的命令行访问权限?
- 因为您可以直接从本地机器上执行cx1〔0〕。
- 哦。。。是的,我会。我现在看到其他答案了。谢谢。
- 乐于助人:)
- 这是(Web)开发的常见任务,有一个很好的答案。我不明白为什么它还关着。
- 我认为@d.raev指的是这个问题被作为非主题关闭(如果我记得正确的话,我标记这个问题迁移到超级用户,我认为它更适合),而不是没有被接受的答案。还是…很高兴在这之后我的回答被接受了。-)
- 你说得对@jonsyweb,对不起…有一天早上,我突然下了结论。
- @Markstewie没有什么不好的感觉,这是一个很好的问题,它帮助了我(似乎其他很多人也一样),但这个"封闭"让它看起来不值得信任,所以我就不会去关注它。
从本地计算机:
从具有非标准ssh端口的本地计算机:
或者从远程主机,假设您真的想这样工作,并且您的本地计算机正在监听ssh:
关于我常用的开关的解释,请参阅man rsync。
- 您打算-h做什么,引用似乎说明它将显示帮助文件,但这对我没有意义?
- @马尔洛:啊,是的,我以前见过这种情况(我认为是太阳神)。根据我答案中的链接:h output numbers in a human-readable format。
- 啊,我明白了,我没有注意到-h引用,因为有两个引用指向那个标志。啊,一定会用的。
- 命令说明:explainshell.com/…
- 哇,那个解释性网站太棒了。
- [email protected]是什么?我的本地机器上是否需要一个ssh服务器(而不仅仅是一个ssh客户机)才能工作?
- @cmcdragonkai:实际上,本地主机必须运行ssh服务器,并且可以被远程主机访问。这是我喜欢第一个解决方案而不是第二个解决方案的原因之一。
- 我发现您可以在现有的ssh会话中运行本地命令。因此,我可以在不离开ssh会话/终端的情况下(从本地机器)运行相同的命令。
- 与尾随斜杠同步时要小心。johnnysweb给出的命令将在/path/to/local/storage中创建一个名为copy的目录。像这样,埃多克斯1〔2〕。如果这是你想要的,那就太好了。但是,更常见的情况是,您希望将远程目录的内容复制到本地目录中。然后执行/path/to/copy/,将内容放在目录/path/to/local/storage中,而不创建本地副本目录。
- 我来这里是为了一个rsync命令,带着explainshell.com离开了。谢谢@beefsack!
- 这个解释性网站改变了游戏规则:o
- 我说,所有命令都显示在上,因此应该自动超链接到explainshell:-)
如果您有ssh访问权,则不需要先进行ssh,然后再进行复制,只需使用目的地的安全复制(scp)。
1
| scp user@host:/path/file /localpath/file |
支持通配符,因此
1
| scp user@host:/path/folder/* /localpath/folder |
将复制该文件夹中的所有远程文件。如果复制多个目录,则复制一个目录。
注意-r也会复制所有子文件夹和内容。
- 为什么使用scp而不是rsync?另外,请注意,您的shell不会尝试扩展user@host:/path/folder/*,可能使用单引号(')。
- 我发现目的地的SCP更容易使用……本质上,它是通过ssh进行的文件复制,但首先必须建立ssh连接。
- 我知道scp是什么,这不是我的问题。你为什么不使用rsync?这就是问题所要求的,不需要建立ssh会话,而且通常比scp更快、更高效。
- 虽然标题中包含rsync,但我将实际问题理解为"复制所有文件的命令是什么…",因为无法通过注释来澄清问题,我扩展了我的答案,冒着脱离基础的风险,我的答案将不再有用。在我上面的评论中,我并不想像我试图教育你关于SCP的那样离开。我想说的是"cp over ssh"。我可以在任何地方使用它,本地使用cp,但在主机之间使用。
- 记住,SCP遵循符号链接而不是复制它们。这会导致复制比预期更多,并且丢失符号链接(它们成为普通文件夹/文件)。
- 蒙丹的回答正是我找到这篇文章的原因。通常,我对所有内容都使用scp,但我需要保留从服务器到服务器的权限和symlink。此外,速度差异(我的新手自己肯定先SCPED)是巨大的。
- 当涉及的文件非常大并且正在执行更新时,与scp相比,rsync可能更可取。也就是说,大多数大型文件已经复制了一次,只需要传输差异。