Скопируйте раздел BTRFS на внешний раздел BTRFS на жестком диске, включая моментальные снимки

У меня вопрос о резервном копировании разделов BTRFS.

Предположим, у меня есть раздел BTRFS на / dev / sda1 и внешний жесткий диск с BTRFS на / dev / sdb1.

Я уже выяснил, что могу сделать начальную резервную копию, выпуская:

btrfs replace start /dev/sda1 /dev/sdb1 

Впоследствии я изменяю 2 вещи:

  • Я создаю новый стандартный файл на SDA1
  • Я создаю новый снимок BTRFS на SDA1

Теперь я хочу, чтобы мой внешний жесткий диск SDB1 («backup») выровнялся с SDA1. Таким образом, оба файла являются специфичными для BTRFS (моментальные снимки).

Как мне это сделать?

Поэтому я ищу эквивалент rsync, который также синхронизирует функции BTFS (моментальные снимки):

 rsync -avr --delete <mount point sda1> <mount point sdb1> 

благодаря

  • Является ли Btrfs Receive-Command Atomic?
  • BTRFS RAID5 / 6 Альтернатива?
  • Можно ли явно получить полное содержимое файла с плохой контрольной суммой в файловой системе btrfs?
  • BTRFS: какие системные каталоги должны иметь отключенную копию?
  • Как удалить btrfs subvolume?
  • Очистить неиспользуемое пространство с нулями (btrfs)
  • странные каталоги на разделе ubuntu 13.10 btrfs
  • Почему изменяется точка монтирования моей корневой файловой системы?
  • One Solution collect form web for “Скопируйте раздел BTRFS на внешний раздел BTRFS на жестком диске, включая моментальные снимки”

    Команда replace не создает резервную копию sda1, она заменяет sda1 на sdb1 в файловой системе, но поскольку это одна файловая система устройства, и btrfs не пытается стереть данные из sda1 при ее замене, они в конечном итоге становятся indentical копиями файловой системы. Однако вы НЕ хотите этого делать, поскольку оба будут иметь одинаковый UUID, и в настоящее время небезопасно монтировать две файловые системы btrfs с одинаковым UUID, поскольку это может вызвать MASSIVE DATA CORRUPTION (см. Страницу Gotchas btrfswiki) . Если вы хотите использовать функцию инкрементного резервного копирования btrfs, вы должны отформатировать резервный диск / dev / sdb1 в новую файловую систему btrfs. Затем вы должны сделать мгновенный снимок только для чтения, независимо от того, какие подэлементы (ы) вы хотите сделать резервными копиями в своей файловой системе, используя

     btrfs su sn -r @subvolume-name @subvolume-name-RO 

    на каждом подвыполнении. Затем вы должны установить пустую файловую систему btrfs и запустить

     btrfs send /path/to/@subvolume-name-RO | btrfs rec /path/to/backup-directory/ 

    Это будет первая передача, и btrfs должны будут перенести все данные на этот раз. В следующий раз, когда вы захотите отправить резервную копию на этот диск, вы можете использовать инкрементные отправки, чтобы отправлять только те данные, которые были изменены с момента отправки предыдущей резервной копии. Он также будет использовать Copy On Write, так что вы также сэкономите много места. Просто убедитесь, что вы сохранили последний снимок на обеих файловых системах. Когда это будет сделано, вы можете переименовать отправленный снимок в любое удобное для вас время.

    Теперь, если вы хотите отправить другой снимок, просто переименуйте orignal и возьмите новый снимок с чем-то вроде

     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/ 

    и если предыдущий моментальный снимок все еще существует на вашем резервном диске, он отправит ваш новый снимок, просто скопировав все изменения, сделанные вами с предыдущего.

    Linux и Unix - лучшая ОС в мире.