Восстановить моментальный снимок 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-send / btrfs-receive
  • Btrfs для диска non-btrfs. Шифрование, чтение
  • Почему я получаю немедленную ошибку при запуске баланса
  • Использовать mdadm в качестве обходного пути из-за отсутствия поддержки badblocks в btrfs
  • Производительность btrfs
  • синхронизация fs между рабочими столами
  • 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 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.