用ctrl-c中断rsync,我应该使用`--partial`或`--append`吗?


14

我想打断rsync一下ctrl-c(例如,在传输了一半文件之后)并继续执行,而不必重新发送已经传输的数据。

我发现的stackexchange / google信息似乎有冲突。我发现有人说使用--partial,有人说使用--append。对我来说,听起来他们俩都可以。

如果我想用ctrl-c中断rsync,应该使用--partial还是--append

如果两者都可行,那么何时使用哪个优于另一个更好?

Answers:


8

重新启动--partial就足够了。使用--inplace,如果你真的不想要rsync创建融合现有的复制数据和新的,例如,如果临时文件rsync将创建在目标文件夹中的临时文件权限问题。

--append在可以保证部分复制的数据仍然与源相同时使用。(通常这是错误的优化。)


1
因此,当我使用上述选项(实际上使用--append-verify)并且rsync 仍然声称它是从头开始时,并且我看不到文件大小有任何变化,并且剩余文件时间是原始时间当我开始复制时,rsync在说谎吗?还是我应该担心?
迈克尔

@Michael,如果您有本地来源和目标,则所有规则都会更改。
roaima

我当时是通过LAN进行的,但是经过更多的实验后,问题似乎在于,由于--append-verify实际上必须实际读取文件两边的部分,因此由于瓶颈而使速度没有提高是读取端的旧驱动器,而不是LAN本身。
迈克尔

@Michael好,是的,如果您要求验证已经传输的数据,那么它必须读取数据!
roaima

1
@alper我之前从未注意到过该选项。看来最好使用--partial-dir,但是我还没有尝试过。
roaima

3
  • --append 假设该文件可能已存在于目标位置,则只是使rsync不检查该位置已存在的内容(但请参见下文)。
  • --partial 告诉rsync不要删除部分传输的文件。

您还将需要--inplacewith --partial(它带有--append)。

原来--inplace实际上意味着--partial,这是为什么--append就足够了(这意味着--inplace这意味着--partial)。但是,--partial仅此一个是不够的,您需要--inplace,否则rsync会创建临时文件,而不是更新最后一个。


如果我想用ctrl-c中断rsync,我会使用--append?因为--partial本身不会恢复。
Trevor Boyd Smith

我只用--inplace。rsync“始终恢复”(它尝试传输所需的最少数据)。是什么--append做的是让rsync不目的地已经校验数据,因此如果在目的地的部分文件已损坏,它会保持与破坏--append--append例如,如果部分文件非常大且您迫不及待(并且确定或不在意它是否已损坏)或某些其他特定情况,可能会很有趣。
spuk

1
在Fedora 20上man rsync,选项--append... Implies --inplace
Trevor Boyd Smith

1
--inplace将工作。--append之所以会起作用,是因为(正如我在回答中所述)它隐含了--inplace,隐含了--partial(当被Ctrl-c中断时,它将保留部分传输的文件,这是原始问题)。所以,--append意思是“做的--inplace,但不校验什么已经在目标这是一个重要的区别如果你不关心它,使用。
spuk

1
那么,--partial 没有 的意义何在?--inplace
Evan Carroll
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.