4

Я пытаюсь выполнить резервное копирование тома LVM с помощью Duplicity (примечание: не только содержимое файла тома, но и сам фактический том, байт за байтом).

Наилучший способ, который я нашел на данный момент, - dd все данные на томе LVM во временный файл, включить этот файл в набор резервных копий и удалить его после создания резервной копии. Хотя это кажется ужасно неэффективным: я без нужды перебиваю диск и дублирую все данные.

То, что может показаться необходимым, - это способ сделать по существу противоположность цикла mount -o loop . Другими словами, я не хочу монтировать файл как блочное устройство: вместо этого я хочу «монтировать» блочное устройство как обычный (только для чтения) двоичный файл - тот, который Duplicity затем будет читать и резервировать для меня.

Есть ли способ добиться этого?

4 ответа4

3

Дело не в том, что двуличность имеет особый подход к блочным устройствам, она видит их такими, какие они есть, "блочные специальные файлы". Например,

$ stat /dev/dm-0
  File: ‘/dev/dm-0’
  Size: 0           Blocks: 0          IO Block: 4096   block special file
Device: 5h/5d   Inode: 10311       Links: 1     Device type: fc,0
Access: (0660/brw-rw----)  Uid: (    0/    root)   Gid: (    6/    disk)
Access: 2015-01-15 14:19:24.674418470 -0600
Modify: 2015-01-15 14:19:20.917418645 -0600
Change: 2015-01-15 14:19:20.917418645 -0600
 Birth: -

по сравнению с:

$ stat /etc/passwd
  File: ‘/etc/passwd’
  Size: 2740        Blocks: 8          IO Block: 4096   regular file
Device: fc00h/64512d    Inode: 3802485     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-01-15 17:15:01.166461694 -0600
Modify: 2015-01-12 17:02:41.134820776 -0600
Change: 2015-01-12 17:02:41.201820651 -0600
 Birth: -

Duplicity создаст резервную копию специального файла блока так же, как tar или rsync.

Единственное решение, которое приходит на ум, - это написать файловую систему с предохранителями, чтобы представить все ваши блочные устройства в виде обычных файлов. Но это, вероятно, выходит за рамки этого вопроса.

3

Существует программный проект, называемый diskfile, файловая система FUSE, которая представляет блочные устройства как обычные файлы только для чтения. Например, для точки mountpoint папки вы можете вызвать diskfile /dev/dm-0 mountpoint , а затем mountpoint/dm-0 будет обычным файлом с тем же содержимым, что и /dev/dm-0 .

2

Вот как блочные устройства уже работают по умолчанию. Они могут быть прочитаны любой программой - в конце концов, dd использует только стандартные функции open() и read() для создания образа.

1

Это нормальный способ, которым все уже работает.

Просто добавьте -r или -o ro к опциям монтирования, чтобы сделать его доступным только для чтения.


Человек крепление

 ro      The same as -r; mount the file system read-only 
         (even the super-user may not write it).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .