Является ли Btrfs Receive-Command Atomic?

Краткая версия: я делаю регулярные резервные копии с помощью команд send и receive Btrfs. Снимок, который содержит резервные копии данных ( SOURCE ), представляет собой моментальный снимок только для чтения. Создание этого моментального снимка с помощью Btrfs является атомарным. Затем резервное копирование выполняется с использованием комбинации команд send и receive Btrfs. Мой вопрос: получает ли команда Btrfs команду создать резервный моментальный снимок атомарно на томе назначения?

Длинная версия . Для моей ежедневной стратегии резервного копирования я использую Btrfs для отправки изменений исходного под-тома на резервный диск. Суб-том, который я хочу создать, находится в SOURCE , а сама резервная копия будет храниться в DEST .

Прежде чем я смогу сделать резервную копию, мне нужен мгновенный снимок SOURCE доступный только для чтения, который я буду хранить ниже SOURCE в подкаталоге с именем .snapshots . Это делается с помощью команд

 btrfs subvolume snapshot -r SOURCE SOURCE/.snapshots/current_backup sync 

Для выполнения работы sync необходимо выполнить команду sync указанную выше, в соответствии с Btrfs-wiki. Теперь я хочу отправить снимок под названием current_backup на резервный том DEST на другом диске. Я делаю это с помощью команды

 btrfs send SOURCE/.snapshots/current_backup | btrfs receive DEST 

Мой вопрос о части btrfs receive этот процесс резервного копирования: происходит ли это атомически? Другими словами: доступна ли резервная копия по объему DEST только в том случае, если она была полностью получена и записана?

Нет, это не атом. Btrfs receive создает subvolume, так что это атомный, но изначально субволокт пуст. Затем btrfs получает заполнение подвыполнения входящими данными.

Вы можете протестировать это с помощью cd'ing DEST во время выполнения резервного копирования и повторного ввода или поиска.