Наблюдайте изменения к дереву каталогов без корневого доступа

У меня недавно был инцидент, где некоторые файлы были случайно удалены. Это файлы на общей учетной записи веб-хостинга (FreeBSD), но дерево каталогов глубоко.

Мой наклон состоит в том, чтобы записать что-то самостоятельно в PHP или Python, который делает это:

  1. Просканируйте каждый каталог для количества файлов, содержавшихся в каждом
  2. Храните те данные, вероятно, в базе данных MySQL
  3. Выполняйте отчет ежедневно, который говорит мне, где существует действие (так, я видел бы, что каталог загрузок имеет 3 новых файла, или что каталог миниатюр имеет 10, меньше файлов в нем, или даже на основе на файл говорит мне, что изменилось (возможно, это берет хеш каждого файла и хранилищ это?).
  4. Выполните ежедневное задание крона с изменениями от накануне (или еженедельное задание крона с изменениями с недели прежде, или независимо от того, что интервал имеет смысл),

Но я обнаруживаю это, это - что-то, что люди сделали передо мной. Это существует, и я просто не знаю это?

0
задан 01.07.2010, 04:45

1 ответ

Если Вы только обеспокоены добавляемыми файлами или удалены, можно использовать комбинацию находки и разности для наблюдения изменений:-

find /some/dir -print > file-list.expected # baseline

  # Add/remove files

find /some/dir -print > file-list.current
diff file-list.expected file-list.current # look for changes

mv file-list.old file-list.new # update baseline (optional)

Однако, если Вы нуждаетесь (или хотите) знать, изменилось ли содержание файла также, FreeBSD идет с утилитой, названной [mtree][1], который может использоваться для создания отчетов относительно любых изменений, найденных между иерархией каталогов и ожидаемой базовой линией:-

mtree -c -i -n -K cksum -p /some/dir > baseline.mtree # baseline

  # Add/remove/change files

mtree -f baseline.mtree -p /some/dir # look for changes
mtree -c -i -n -K cksum -p /some/dir > baseline.mtree # update baseline (optional)

Для любого метода это, могло бы быть благоразумно сделать Ваш базовый файл неизменным ("chflags uchg baseline.file"), который должен помочь предотвратить случайное удаление Ваших файлов любым кроме корня (включая себя).

1
ответ дан 24.11.2019, 12:28

Теги

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