Мой / домашний раздел состоит из целого физического диска. Он отформатирован как btrfs. Я хочу сделать снимок. В частности, я не совсем понимаю, что такое именование в объеме.
Я знаю, что есть похожие вопросы, но каждый похожий вопрос, кажется, задает что-то отличное от того, что я спрашиваю (и они старше, что, вероятно, устарело, учитывая быстрое развитие Btrfs). Например, ответ на на этот вопрос , по-видимому, не является ответом на мой вопрос, потому что раздел my / home - это отдельный том, а на странице man для btrfs показана другая команда для создания снимков.
другая аналогичная проблема, нет твердого решения .
Кто-то, столь же смущенный, как и я, по вопросам именования
Начиная с простого: это правильная команда для создания простого снимка моего домашнего раздела? [ 1118]
btrfs subvolume snapshot /home/@home /home/@home_snapshot_20120421
Я стал очень смелым и проверил его, и он не работает. Ошибка error accessing /home/@home
. Как показано ниже, @home указан в списке.
/home
в качестве параметра источника, но, основываясь на примерах корневых томов, мне кажется, что мне нужно использовать /home/@home
.
Будет ли работать эта команда? А если нет, то почему?
btrfs subvolume snapshot /home /home/@home_snapshot_20120421
Является ли @
просто соглашением об именах? Это вообще имеет смысл?
Вот некоторые выводы, которые могут иметь отношение к делу:
btrfs subvolume list /home
ID 256 top level 5 path @home
Я точно не знаю, что это значит. Когда я пытаюсь btrfs device scan
, он выдает ошибку (например, не может сканировать устройство / dev / sda1). Моя файловая система не имеет ошибок. Все хорошо.
/dev/sda1: (boot partition) TYPE="ext2"
/dev/sda2: (root partition) TYPE="btrfs"
/dev/sdb1: (home partition) TYPE="btrfs"
/dev/sdc1: (shared partition) TYPE="btrfs"
/dev/sdc2: TYPE="swap"
Хорошо, обо всем по порядку:
Имя подсоба, на которое вы смотрите, - @home
, как показано в btrfs subvolume list /home
. Он установлен в /home
. @home - это имя подобъема, также он имеет идентификатор 256, поэтому, скорее всего, только ваш / home форматируется как btrfs.
Теперь, чтобы создать снимок @home, вы должны выполнить: sudo btrfs subvolume snapshot /home/ /home/@home_snapshot_20120421
Подобъем может иметь любое имя. @ - это соглашение Ubuntu во время установки. (Если вы используете apt-btrfs-snapshot
, корневой подобъем должен быть назван @
между прочим.) Вики сообщества настоятельно рекомендуют сохранить @
в качестве корневого и @home
в качестве домашнего, поскольку он смонтирован таким образом. Это особенно важно, если вы хотите выполнить откат: вам НЕ следует использовать btrfs subvolume set-default (не синтаксис, выделенный целью).
Для btrfs device scan
вы должны использовать sudo
.
Для удаления подобъема вы можете использовать sudo btrfs subvolume delete @home_snapshot_20120421
Все команды btrfs могут быть сокращены до тех пор, пока они однозначны, поэтому, например, sudo btrfs device scan
можно обрезать до sudo btrfs d s
, sudo btrfs dev sc
или чего-либо промежуточного.
Я надеюсь, что ответил на ваши вопросы. Существуют некоторые инструменты для регулярного резервного копирования, например, btrfs-snapshot-вращение . Используйте их с осторожностью, поскольку ни один из них не является действительно зрелым или набрал достаточную силу, то есть они могут очень хорошо содержать ошибки.
Учитывая тот факт, что home находится в разделе btrfs и смонтирован как / home, правильная команда: [ 1111]
sudo btrfs subvolume snapshot /home/ /home/<any_name_you_choose_for_the_snapshot>
Вот мои результаты:
Перед выполнением команды сегодня:
$ btrfs subvolume list /home
ID 256 top level 5 path @home
ID 257 top level 5 path @home/@snapshot_20120521_1936
Команда:
$ sudo btrfs subvolume snapshot /home/ /home/@snapshot_20120611_1307
Create a snapshot of '/home/' in '/home/@snapshot_20120611_1307'
После выполнения команды сегодня:
$ btrfs subvolume list /home
ID 256 top level 5 path @home
ID 257 top level 5 path @home/@snapshot_20120521_1936
ID 258 top level 5 path @home/@snapshot_20120611_1307
Единственная проблема, связанная с этим методом, заключается в том, что моментальные снимки отображаются при выполнении ls (list) /home.
.Вики сообщества Ubuntu была обновлена с решением для этого. Вот оно:
Как работать со снимками в макете Ubuntu
Для работы со снимками / или / home в макете Ubuntu очень удобно смонтировать файловую систему btrfs в отдельном месте и работать с вершины дерева btrfs, а не с смонтированных подобъемов. < - это решение. К сожалению, это не удобно .
sudo mount /dev/sdX# /mnt
Для создания моментального снимка используйте тот же синтаксис, который я использовал выше:
sudo btrfs subvolume snapshot /mnt/@ /mnt/@_snapshot
Это создаст моментальный снимок @-подобщества с именем @_snapshot, расположенного также в верхней части дерева btrfs. Поскольку он находится в верхней части дерева, он не будет отображаться при перечислении файлов на подключенном томе.
Чтобы выполнить откат к снимку, вам просто нужно изменить его имя на имя, которое ubuntu монтирует и перезагружает. Вот как изменить имя:
sudo mv /mnt/@ /mnt/@_badroot
sudo mv /mnt/@_snapshot /mnt/@
Чтобы удалить снимок, используйте:
sudo btrfs subvolume delete /mnt/@_badroot
Снимки btrfs сами по себе являются субобъемами и самодостаточны, удаляя старый @ субобъем, подобный этому. хорошо, если у нас есть замена.
ПРИМЕЧАНИЕ. Команда btrfs-tools set-default
нарушит макет Ubuntu.
Установите пакет apt-btrfs-snapshot
и используйте его подкоманды list
, snapshot
, delete
и set-default
.
Это скрипт, который упаковывает команды нижнего уровня btrfs
. Он работает, сначала монтируя корневую файловую систему btrfs где-нибудь. Под этим я подразумеваю реальный корень, в отличие от подобъема /@
, который обычно устанавливается как /
. Другими словами, вам нужно запустить mount /dev/sda1 /mnt
, чтобы вы могли просматривать подтомы, которые будут перечислены как /mnt/@
, /mnt/@home
, и любые другие, которые вы создали. Оттуда вы можете btrfs subvolume snapshot /mnt/@home @snapshot-today
, который создаст снимок /@home
с именем /@snapshot-today
. Сравните это с запуском btrfs subvolume snapshot /home /home/@snapshot_today
, который вместо этого создает снимок как дочерний элемент /@home
, следовательно, он появляется, когда вы ls /home
и его настоящее имя - /@home/@snapshot-today
.
Откат снимка - это простая операция переименования: mv /mnt/@home @backup ; mv /mnt/@snapshot-today @home
. При следующей загрузке, когда он перейдет к монтированию /@home
в /home
, он найдет моментальный снимок.
Это немного сложно обернуть голову, потому что вы должны иметь в виду разницу между тем, как btrfs видит вещи, и тем, как ядро видит вещи, что зависит от параметров монтирования (в частности, аргумента subvol =). ]