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

Linux. Разные резервные диски каждую неделю к одной и той же точке монтирования

У нас есть внешний диск, резервное копирование которого наш сервер выполняет каждую ночь. Он смонтирован в / snapshots. Мы планируем менять этот диск каждую неделю. Проблема в том, что один диск отображается как / dev / sdc, а другой как / dev / sdd. В fstab для монтирования задано значение / dev / sdc. Перед резервным копированием скрипты запускаются для монтирования / снэпшотов, которые получают свою точку монтирования из fstab.

Как я могу заставить его монтировать / dev / sdc на одной неделе и / dev / sdd на следующей неделе. Это должно быть автоматическим, поскольку люди, которые меняют диск, не войдут в терминал.

Вы можете создавать один кронтаб на каждую неделю 0 2 * * 2 /usr/local/script.sh и положить в script.sh :

#!/bin/bash
mark_file=/tmp/job-run-marker
# check whether the job runned last week
if [ -e $mark_file ] ; then
  rm -f $mark_file
  unmout /snapshots
  mount /dev/disk/by-label/even-weeks /snapshots
else
  touch $mark_file
  unmout /snapshots
  mount /dev/disk/by-label/odd-weeks /snapshots
fi

Скрипт не найдет $mark_file при первом запуске, поэтому он смонтирует /dev/disk/by-label/even-weeks. При втором запуске скрипт удалит $mark_file а затем смонтировать /dev/disk/by-label/odd-weeks. Для третьего запуска это то же самое, что и для первого запуска. Таким образом, если этот сценарий запускается cron еженедельно, команда задания будет выполняться каждые две недели.

Советы: маркируйте свой диск ln -s /dev/disk/by-uuid/UUID /dev/disk/by-label/even-weeks

РЕДАКТИРОВАТЬ :

  • Исправление после комментария @Mat.
  • Из комментария @nearora: Обозначьте свои файловые системы ссылками на / dev / disk / by-id / вместо использования / dev / sd [a-z].

Когда я выполняю этот тип сценария резервного копирования, я просто подключаю любой из моих резервных дисков, подключенных в данный момент. Очевидно, они обозначены как BackupDisk1, BackupDisk2 ...

if mount /dev/disk/by-label/BackupDisk* /snapshots
then
    # rest of backup script goes here
else
    logmsg "Unable to mount external drive."
fi

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