Синтаксис конфигурационного файла LoggedFS

Один простой пример - это:

dd if=/dev/sda of=/dev/sdb

Но если у Вас есть некоторые особые потребности, действительно необходимо прочитать страницу справочника (человек dd) или поиск на Google.

Другая идея могла быть использованием rsync (не забывайте устанавливать правильные опции, как - азимут [упаковывает файлы вместо копии один файл за другим] или - числовые идентификаторы [используют uid/gid вместо имен как "корень"] и возможно некоторые другие). Ссылка содержит много примеров.

Если новый жесткий диск не имеет разделов, можно использовать gparted или palimpset.

Когда Вы не уверены, я отформатировал бы жесткий диск и затем синхронизировал бы данные с rsync.

8
02.12.2012, 20:40
1 ответ

Я ввел по абсолютному адресу через Config.cpp, файл, ответственный за парсинг конфигурации. Конфигурация в качестве примера на самом деле делает довольно хорошее задание получения доступных вариантов - нет очень многих

Когда я обращаюсь к "выводу в качестве примера" ниже, я говорю об этой строке (вытянутый наугад от демонстрационной страницы):

17:29:35 (src/loggedfs.cpp:136) getattr /var/ {SUCCESS} [ pid = 8700 kded [kdeinit] uid = 1000 ]

Корневой тег <loggedFS>. Это имеет два дополнительных атрибута:

  • logEnabled является строкой - "верный", означает, что он должен на самом деле произвести информацию о журнале; что-либо еще отключает весь вход. Значения по умолчанию к "истинному", так как это - вид смысла программы
  • printProcessName является строкой - "верный", означает, что вывод журнала будет включать имя процесса, что-либо еще означает, что не будет. Значения по умолчанию к "истинному". В выводе в качестве примера, kded [kdeinit] имя процесса

Единственные дочерние узлы, о которых это заботится, <include> и <exclude>. В примере они группируют людей младше <includes> и <excludes> блоки, но они проигнорированы синтаксическим анализатором (как любые другие узлы кроме <include> и <exclude>).

Естественно, <include> правила заставляют это производить строку журнала, если они соответствуют, в то время как <exclude> строки вызывают его не к. В случае перекрытия, <exclude> переопределения <include>. Обычно Вам нужен по крайней мере один <include> управляйте для соответствия, чтобы событие было зарегистрировано, но исключение - то, если существует 0 <include> правила - затем все события зарегистрированы, даже если там соответствуют <exclude> строки.

Оба <include> и <exclude> возьмите те же атрибуты:

  • расширение является регулярным выражением, которое подобрано против полного пути файла, который был accessed/modified/whatever (extension довольно плохое имя, но я предполагаю, что это - общее использование). Например, если Вы touch /mnt/loggedfs/some/file, регулярное выражение в extension нуждался бы к (частичному) соответствию /mnt/loggedfs/some/file
  • uid является строкой, которая содержит или целое число или *. Правило только соответствует данной операции, если у владельца процесса, который вызвал операцию, есть указанный идентификатор пользователя (* естественно средства любые соответствия идентификатора пользователя). В выводе в качестве примера, 1000 uid
  • действие является определенным типом операции, выполненной в файловой системе. В выводе в качестве примера, getattr действие. Возможные действия:
    • доступ
    • chmod
    • показанный
    • getattr
    • ссылка
    • mkdir
    • mkfifo
    • mknod
    • открытый
    • открытый только для чтения
    • открытое чтение-запись
    • открытый только для записи
    • читать
    • readdir
    • readlink
    • переименовать
    • rmdir
    • statfs
    • символьная ссылка
    • усеченный
    • удалить связь
    • utime
    • utimens
    • записать
  • retname является регулярным выражением. Если код возврата фактической операции файловой системы, выполненной LoggedFS, 0, регулярное выражение подобрано против строки SUCCESS. Ненулевой код возврата заставляет это соответствовать против FAILURE. Это - единственные возможные значения, настолько скорее всего, Вы или идете в hardcode SUCCESS, FAILURE, или используйте .* если Вы хотите обоих. В выводе в качестве примера, SUCCESS retname

В отличие от этого, с <loggedFS> атрибуты, они не имеют никаких значений по умолчанию. Кроме того, в то время как синтаксический анализатор распознает неизвестные атрибуты и ошибку, это не обнаруживает недостающие атрибуты, поэтому если Вы забудете атрибут, то это будет использовать неинициализированную память.

8
27.01.2020, 20:12
  • 1
    Каково значение по умолчанию, включают/исключают список (пустой, таким образом, ничто не включено, я думаю)? Если Вы включаете /a, исключить /a/b и включайте /a/b/c, /a/b/c наблюдаемый? Включая каталог всегда включают его содержание? –  Gilles 'SO- stop being evil' 26.05.2011, 01:32
  • 2
    @Gilles Это ничего не знает о каталогах, это просто, берет полный полный путь и соответствует ему против регулярного выражения. Так <include extension="/a" uid="*" action=".*" retname=".*" /> движение должно соответствовать каждой операции, которая воздействует на файл, путь которого содержит /a - это могло даже быть /foo/abc/bar. Вы, вероятно, хотите привязать их всех с ^ и $, но затем необходимо включать весь путь для него для соответствия –  Michael Mrozek♦ 26.05.2011, 01:37
  • 3
    @Gilles, Не имеющий любые правила, является на самом деле особым случаем, таким образом, я добавлю его к ответу –  Michael Mrozek♦ 26.05.2011, 01:38

Теги

Похожие вопросы