有没有理由使用scp而不是rsync?


61

有使用scp替代的理由rsync吗?我看不出有理由scp再使用一次,rsync所做的所有事情都scp更加安全(可以保留符号链接等)。


6
简短的答案:不,SCP 永远不会有害。
沙杜尔

2
@Shadur scp是有害的,因为它默认情况下会覆盖现有目标文件。因此是rsync,但至少可以使用来限制可能的损坏-u
吉尔斯

3
@Gilles与任何工具一样,您必须了解它的作用以及如何安全使用它。
Alex Chamberlain 2012年

8
在这种情况下,常规cprm会被认为是“有害的”-如果您将“有害”定义为“如果我做一些愚蠢的事情会把我弄糟”,rsync那么危害也不会减少。
Shadur 2012年

1
在未rsync安装的系统上,rsync(显然)甚至不可能使用。
库沙兰丹

Answers:


45

scp提供了一种类似于cp的方法,可以通过安全的SSH连接将文件从一台计算机复制到远程计算机。

rsync允许您同步远程文件夹。

它们是不同的程序,都有其用途。scp始终是安全的,而rsync必须通过SSH传输以确保安全。


9
另外,非常确定必须在另一端安装rsync。
ckhan 2012年

3
@ckhan,不,它可以在没有另一端安装任何东西的情况下进行复制,只会降低效率。
mikebloch

2
我喜欢scp的简单性。
亚历克斯·张伯伦

2
@mikebloch你怎么做?这是新功能吗?刚刚尝试使用3.0.9版本。它抱怨说rsync在遥控器上找不到。
Alexios 2012年

1
@mikebloch,必须将其安装在服务器上以进行校验和计算,这可能会增加服务器的cpu负载。这就是为什么大多数大型网站不支持它的原因,并且zsync是作为替代方法创建的。
psusi 2012年

19

其中一件主要的事情(我认为没有人提到)是,如果您要传输大量的数据或文件,并且如果传输由于任何原因在完成之前被断开,rsync会在中断的地方进行接收。而scp没有。

如果要传输一个或几个文件或目录,则使用scp。我去rsync多GB大小的数据。


3
值得补充的是,该--partial标志在传输大文件时很有用。 rsync将从文件中遗留的位置开始,而不是再次启动该文件。
2013年

就像@Flup提到的那样,除非使用--partial选项,否则rsync不会在传输过程中留下任何文件继续运行。这些文件默认情况下隐藏在目标目录中。您可以使用--partial-dir将所有这些文件放在一个目录中。
Lester Cheung

好吧,rsync -vP username@host:/path/to/file .也会这样做。在Stackoverflow上查看此答案
Devesh Saini

9

rsync:在以下之间传输增量(使用其增量传输算法):

  1. 本地远程主机

scp:在以下之间传输整个文件

  1. 本地远程主机
  2. 远程远程主机

摘要:scp可以在rsync不支持的两个远程主机之间传输文件。


rsync可以在两个远程主机之间传输文件。其实rsync a host:b等于scp a host:b
brandizzi

这就是我写的,rsync可以在本地主机和远程主机之间传输增量,但scp不仅限于此,它可以在两个远程主机之间传输增量。@brandizzi
Devesh Saini

2

Webhosting Talk的用户Chris写道:

rsync比较两端的文件,仅传输更改文件的更改部分。第一次传输文件时,它的行为几乎类似于scp,但是对于第二次传输(大多数文件未更改),它将推送的数据要少于scp。这也是重新启动失败的传输的一种方便的方法-您只需重新发出相同的命令,它就会从上次停止的地方scp开始,而从头开始。


0

scp使用更简单,因为它需要较少的参数。我使用scp捕获myselv,而不是rsync仅传输单个文件。可能我只是懒惰地定义了rsync的别名... ;-)


1
嗯,为什么会这样呢?rsync a host:b等于scp a host:b,参数数目相同。
mikebloch 2013年

1
@mikebloch要再输入两个字母... ;-)过去,我必须提供“ -e ssh -a”才能得到正确的结果。现在默认为“ -e ssh”,这可能是另一个游戏。
Nils

0

归功于https://gist.github.com/KartikTalwar/4393116的 @tomrunia

rsync -aHAXxv --numeric-ids --delete --progress \
  -e "ssh -T -c aes128-gcm@openssh.com -o Compression=no -x" \
  [source_directory] user@hostname:[target_directory]/

请注意--delete,如果要将多余的文件保留在目标目录中,请不要使用它

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.