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

评论

因为您可以直接从本地计算机进行rsync。

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

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

我认为@ d.raev指的是该问题已被关闭,成为离题的话题(如果我没记错的话,我标记为将该问题迁移到SuperUser,我认为它更合适),而不是没有被接受的答案。仍然……很高兴在所有这些时间都接受了我的回答。 :-)

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

#1 楼

从本地计算机:

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上侦听:

请参见man rsync,以获取我常用开关的说明。

评论


命令的解释:explainshell.com/…

–麻袋
14年8月16日在6:42

哇,explainshell网站真棒。

– gosukiwi
2015年1月8日在22:59

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

–Johnsyweb
15年2月22日在20:00

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

–章
2015年10月21日在5:22



我是来这里执行rsync命令的,而我离开了explainshell.com。谢谢@beefsack!

–相位
17-2-23在6:56



#2 楼

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

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


通配符是支持,因此

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


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

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

评论


为什么要使用scp而不是rsync?此外,请注意您的外壳程序不会尝试使用单引号(')来扩展user @ host:/ path / folder / *。

–Johnsyweb
2012年2月1日19:37

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

–特钦
2012年2月2日在4:30



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

–Johnsyweb
2012年2月2日在4:49



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

–孟丹
2014年1月26日上午10:59

Mondane的回复正是我找到此帖子的原因。通常,我对所有内容都使用scp,但是我需要保留服务器之间的权限和符号链接。而且,速度差异很大(不列颠哥伦比亚我的新手自己肯定先爬)。

– kyle
2014年5月1日13:30