Восстановить моментальный снимок Btrfs из подкаталога в родительский

У меня есть раздел Btrfs, который имеет один подвыбор на верхнем уровне ( /root ). Он имеет параметр subvol=root в / etc / fstab.

Каждую неделю я беру мгновенный снимок в /root/snapshots/... используя:

 btrfs subvolume snapshot -r / /snapshots/"$(date --rfc-3339=date)" 

(пути не имеют /root потому что он установлен как subvol=root ).

Теперь скажем, что что-то пошло не так, и я хотел восстановить subvol=root из моментального снимка, я загружаюсь с USB-диска и монтирую раздел как /mnt/disk без subvol=root . Если я попытаюсь запустить:

 btrfs subvolume snapshot /mnt/disk/root/snapshots/2015-05-01 /mnt/disk/root 

Он создает новый subvolume как /mnt/disk/root/2015-05-01 вместо замены /mnt/disk/root/ . Если я попытаюсь удалить его сначала, выполнив

 btrfs subvolume delete /mnt/disk/root 

Он дает сообщение об ошибке:

 ERROR: cannot delete '/mnt/disk/root' - Directory not empty 

Есть ли способ сделать это? Или я должен привыкнуть создавать снимки за пределами подвыбора, который был бы снят?

  • Как безопасно удалить обычный каталог, содержащий несколько снимков btrfs внутри него?
  • Как узнать, является ли файл на btrfs копированием на запись?
  • Как расширить метаданные btrfs?
  • udisksctl монтирует другой подвыбор уже установленного раздела btrfs
  • Snapper делать снимки только в том случае, если что-то изменилось, или при более низкой каденции
  • Как монтировать раздел btrfs?
  • В чем преимущества Btrfs для конечных пользователей?
  • раздел btrfs не обнаружен
  • One Solution collect form web for “Восстановить моментальный снимок Btrfs из подкаталога в родительский”

    Я думаю, что здесь вы ошибаетесь:

    Если я попытаюсь запустить:

    btrfs subvolume snapshot /mnt/disk/root/snapshots/2015-05-01 /mnt/disk/root

    Он создает новый subvolume как / mnt / disk / root / 2015-05-01 вместо замены / mnt / disk / root /.

    btrfs subvolume snapshot используется для создания моментального снимка первого аргумента и помещает его в каталог, заданный вторым аргументом. Похоже, вы ожидаете, что вместо этого замените /mnt/disk/root .

    Прежде чем пытаться перезаписать /mnt/disk/root , вам нужно переместить или удалить его (например, mv /mnt/disk/root /mnt/disk/root-backup-during-restore ). Затем выполните:

     btrfs subvolume snapshot /mnt/disk/root/snapshots/2015-05-01 /mnt/disk/ 

    А потом:

     mv /mnt/disk/2015-05-01 /mnt/disk/root 
    Linux и Unix - лучшая ОС в мире.