我不知道如何解释这个问题。 说我使用rsync来备份驱动器a到驱动器b。 驱动器-a失败,当rsyncclosures时,所有数据都会丢失,看到驱动器-a已经被擦除,因此它将擦除驱动器-b。
我想写一个rsync脚本,所以这不会发生。 这实际上发生在我认识的人身上,所以这是可能的。
哦,你可以设置rsync不删除多余的文件。 默认情况下不会。 所以,如果所有的文件都从驱动器a,它们应该没问题。
https://unix.stackexchange.com/questions/5451/delete-extraneous-files-from-dest-dir-via-rsync
你可以尝试使用rsnapshot 。 这使用rsync来创build基于硬链接的备份。 在服务器上,可以访问多个备份而不浪费空间。 因此,当驱动器A被擦除时,只有最新的备份才会将数据“擦除”,但旧的快照仍将保存数据。
另一件事是直接使用rsync选项--backup和--backup-dir :
-b, – 备份
使用此选项,当传输或删除每个文件时,先前存在的目标文件将被重命名。 您可以使用–backup-dir和–suffix选项来控制备份文件的位置以及后缀(如果有)。
请注意,如果不指定–backup-dir,(1)将隐含–omit-dir-times选项,(2)如果–delete也有效(不带–delete-excluded) ,rsync会将备份后缀的lqprotectrq过滤规则添加到所有现有排除的末尾(例如-f“P〜 ”)。 这将防止以前备份的文件被删除。 请注意,如果您提供了自己的过滤规则,则可能需要手动在列表中较高的位置插入自己的排除/保护规则,以使其具有足够高的优先级以生效(例如,如果您的规则指定了尾随包含/排除oq cq,自动添加的规则永远不会到达)。
–backup-DIR = DIR
结合–backup选项,这会告诉rsync将所有备份存储在接收端的指定目录中。 这可以用于增量备份。 您还可以使用–suffix选项指定备份后缀(否则备份在指定目录中的文件将保留其原始文件名)。
在你描述的情况下(失败的源驱动器),rsync 不会删除任何东西,因为:
如果发送方检测到任何I / O错误,则删除目标上的任何文件将被自动禁用。 这是为了防止发送端的临时文件系统故障(例如NFS错误)导致目标文件的大量删除。 你可以用–ignore-errors选项覆盖它。
在源失败之后,唯一能够结束一个被擦除目标的方法是:
无论如何,我第二个build议使用rsnapshot +硬链接。 我使用这个设置进行备份,非常方便。