Каждый день у нас есть автоматическое задание rsnapshot, которое записывает данные на смонтированный диск. В последнее время вместо записи на смонтированный диск он делал это в основной файловой системе, медленно заполняя доступное пространство.
Есть ли опция, которую я могу использовать в определении монтирования (fstab), чтобы гарантировать, что записи не будут производиться на основной диск, если монтирование недоступно? Или это что-то, что я должен добавить в сценарий, связанный со снимком?
Спасибо
Когда файловая система монтируется, точка монтирования получает разрешения корневого индексного дескриптора этой файловой системы. Если файловая система не смонтирована, каталог, выступающий в качестве точки монтирования, является просто еще одним каталогом в родительской файловой системе.
Вы можете использовать этот факт в своих интересах, чтобы предотвратить случайную запись в точку монтирования, которая не может быть смонтирована:
chmod 0000 /path/to/mountpoint
должно работать хорошо.Обратите внимание, что это не так хорошо, если root
выполняет запись, и обычные проверки разрешений не выполняются.
Возможно, вы сможете сделать что-то подобное с immutable
флаги (schg
или uchg
на Системы BSD, то i
атрибут в системах Linux), но я лично не тестировал поведение атрибутов файловой системы. Интуитивно они должны работать так же, как разрешения файловой системы.
Обратите внимание, что в идеале вам нужно изменить сценарии резервного копирования, чтобы убедиться, что соответствующая файловая система смонтирована, в противном случае вам придется перехватывать и обрабатывать ошибки, которые сгенерируют приведенные выше решения.
Обнаружение того, что соответствующие файловые системы отсутствуют в выводе mount
может быть более надежным решением.
Типичным решением будет проверка вашего скрипта, например. с mountpoint
команда.
if mountpoint -q $dir ; then
echo "$dir is not mounted"
exit 1
else
echo "$dir is mounted"
fi
Альтернативой может быть тест с stat
:
if [ `stat -fc%t:%T "$dir"` != `stat -fc%t:%T "$dir/.."` ]; then
echo "$dir is mounted"
else
echo "$dir is not mounted"
exit 1
fi
Немного устарел, но на тот случай, если кто-то другой найдет это.
См. /Etc/rsnapshot.conf
# If no_create_root is enabled, rsnapshot will not automatically create the
# snapshot_root directory. This is particularly useful if you are backing
# up to removable media, such as a FireWire or USB drive.
#
no_create_root 1