Назад | Перейти на главную страницу

Точка монтирования не работает

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

Есть ли опция, которую я могу использовать в определении монтирования (fstab), чтобы гарантировать, что записи не будут производиться на основной диск, если монтирование недоступно? Или это что-то, что я должен добавить в сценарий, связанный со снимком?

Спасибо

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

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

  1. Размонтируйте целевую файловую систему.
  2. Измените разрешения точки монтирования на что-то недружелюбное.
    Что-то вроде chmod 0000 /path/to/mountpoint должно работать хорошо.
  3. Перемонтировать целевую файловую систему
    Разрешения для точки монтирования должны измениться, чтобы соответствовать разрешениям корневого индексного дескриптора смонтированной файловой системы.

Обратите внимание, что это не так хорошо, если 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