我有一个关于备份BTRFS分区的问题。
假设我在/dev/sda1 1上有一个BTRFS分区,在/dev/sdb1 1上有一个带有BTRFS的外部硬盘驱动器。
我已经发现可以通过发出以下命令来进行初始备份:
btrfs replace start /dev/sda1 /dev/sdb1之后,我改变了两件事:
现在我想把我的外部硬盘SDB1 ('backup')与SDA1对齐。所以这两个文件都是BTRFS特定的东西(快照)。
我该怎么做?
因此,我正在寻找rsync等价物,它还同步BTFS功能(快照):
rsync -avr --delete <mount point sda1> <mount point sdb1>谢谢
发布于 2015-06-26 06:19:51
replace命令不对sda1进行备份,它在文件系统中用sdb1替换sda1,但是由于它是一个设备文件系统,而btrfs在替换它时不会费心从sda1删除数据,因此它们最终成为文件系统的独立副本。但是,您不希望这样做,因为这两个系统都将具有相同的UUID,而且目前使用相同的UUID挂载两个btrfs文件系统是不安全的,因为它可能导致大规模的数据损坏(见btrfswiki的Gotchas页面)。如果您想使用btrfs的增量备份功能,您应该将备份驱动器/dev/sdb1 1格式化为一个新的btrfs文件系统。然后,您应该创建watever子卷(S)的只读快照,您希望通过以下方法在文件系统上进行备份:
btrfs su sn -r @subvolume-name @subvolume-name-RO在每个子卷上。然后,您应该挂载空白的btrfs文件系统并运行。
btrfs send /path/to/@subvolume-name-RO | btrfs rec /path/to/backup-directory/这将是第一次发送,而btrfs这次必须传输所有数据。下次要向此驱动器发送备份时,可以使用增量发送只发送自上次发送备份以来更改的数据。它也会在写的时候使用拷贝,这样你也会节省很多空间。只需确保在两个文件系统上都保留了最新的快照。完成后,您可以将发送的快照重命名为您想要的任何内容。
现在,如果您想要发送另一个快照,只需重命名原始快照,并使用以下内容获取一个新快照
mv @subvolume-name-RO @subvolume-name-RO-old
btrfs su sn -r @subvolume-name @subvolume-name-RO然后,可以使用send发送最新的快照。
btrfs send -p @subvolume-name-RO-old @subvolume-name-RO | btrfs rec /path/to/backup-directory/如果备份驱动器上仍然存在以前的快照,则只需复制自上一次更改以来所做的任何更改即可发送新快照。
https://unix.stackexchange.com/questions/207453
复制相似问题