Противоположность цикла mount -o: можно ли прочитать блочное устройство как обычный файл?

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

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

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

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

4 ответа

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

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

$ 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.

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

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

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

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


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

 ro Так же, как -r; монтировать файловую систему только для чтения 
         (даже суперпользователь не может написать это).
Другие вопросы по тегам