2016-02-25 2 views
1

Есть ли способ монтировать виртуальный раздел, содержащий только файлы, специфичные для моментального снимка? Я знаю о скрытом каталоге zfs, но он содержит все файлы во время моментального снимка. Моя цель состоит в том, чтобы сделать дифф резервной копии быстрее ...Доступ к снимку ZFS без ограничений «0»

Спасибо заранее

Greg

ответ

1

Там нет никакого способа, чтобы получить доступ к дифференциальным данным непосредственно с помощью «нормального» доступа к файлам, и нет никакого способа, чтобы применить данные, полученные от одного, даже если вы можете его получить. Как вы могли читать только отличия от файла, если только один или два блока изменились? И если бы вы могли прочитать только различия, как бы вы знали, как применять только измененные данные к файлу, который изменился? Если вы пытаетесь ускорить дифференциальное резервное копирование, это «исправление» стиля обновления, которое, вероятно, будет очень медленным.

Простой, «нормальный» доступ к файлам не предоставляет информацию, необходимую для создания резервной копии с различиями.

Для дифференциальной резервной копии ZFS, используйте инкрементный zfs send ... команду:

zfs send -i [email protected] [email protected] ... 

Вот что это означает для, и там действительно нет способа сделать это быстрее, так как файловая система ZFS разработана с нуля чтобы знать различия.

+0

Спасибо за ваш ответ. Моя идея состояла в том, что zfs действительно знает, какие файлы были изменены, тогда как сканирование изменений может занять несколько часов (даже дней). Выполняет ли команда отправки zfs цель с только измененными файлами? – greg

+0

Возможно, я забыл упомянуть, что мой целевой резервный хост не является системой zfs, я использую rclone для обычной файловой системы. – greg

+0

ZFS действительно «знает», каковы различия, поэтому инкрементная команда «zfs send ...» отправляет только разницу между двумя моментальными снимками. Проблема, с которой вы собираетесь столкнуться, - это единственный способ получить доступ к данным в ней - использовать ее как вход команды 'zfs recv ...'. Вы можете сохранить вывод из 'zfs send ...' в качестве обычного файла и использовать его для восстановления, если вам нужно, но вы не сможете получить доступ к данным, не делая этого. –

2

Хотя предложение Эндрю из zfs send является правильным способом работы с дифференциальными снимкам, если вы просто хотите видеть различия и работать с ними в ваших собственных сценариев или на других платформах без поддержки ZFS, также есть zfs diff:

zfs diff [-FHt] snapshot snapshot|filesystem 

Display the difference between a snapshot of a given filesystem 
and another snapshot of that filesystem from a later time or 
the current contents of the filesystem. The first column is a 
character indicating the type of change, the other columns 
indicate pathname, new pathname (in case of rename), change in 
link count, and optionally file type and/or change time. 

The types of change are: 
    -  The path has been removed 
    +  The path has been created 
    M  The path has been modified 
    R  The path has been renamed 

-F 
    Display an indication of the type of file, in a manner 
    similar to the -F option of ls(1). 
     B  Block device 
     C  Character device 
    /  Directory 
     >  Door 
     |  Named pipe 
     @  Symbolic link 
     P  Event port 
     =  Socket 
     F  Regular file 
-H 
    Give more parsable tab-separated output, without header 
    lines and without arrows. 
-t 
    Display the path's inode change time as the first column of 
    output. 

Обратите внимание, что порядок двух наборов данных должен быть хронологическим. Вы можете разобрать полученный список и работают только с теми именами, которые Вас интересуют

Пример вывода из страницы:.

# zfs diff -F tank/[email protected] tank/test 
M  /  /tank/test/ 
M  F  /tank/test/linked  (+1) 
R  F  /tank/test/oldname -> /tank/test/newname 
-  F  /tank/test/deleted 
+  F  /tank/test/created 
M  F  /tank/test/modified 

Кроме того, если вы используете Oracle Solaris 11.3, у вас также есть переключатель -r для рекурсивного сравнения всех наборов данных для детей.

+0

Хум интересный ... тогда я мог бы накормить это rsync, не так ли? – greg

+1

Да, я бы предложил вам использовать опцию '-H', а затем' awk' или 'grep'. Пример: 'zfs diff fs @ oldsnap fs @ newsnap | awk '/^(R|M|\+).*/{print $ 2}' 'дает вам все измененные файлы (кроме удаленных). – user121391

Смежные вопросы