Запуск rsync, просто подключив USB-накопитель?

Я хотел бы знать, если это возможно, чтобы автоматически монтировать, и запустить rsync для синхронизации диска USB с каталогом? В частности, я хотел бы скопировать столько данных, сколько может вместить диск, и удалять только самые старые файлы, если требуется пространство. Я бы предположил, что сделаю что-то подобное со сценарием, но моя проблема, с чего начать! Любые комментарии и предложения оценены.

Спасибо

25
задан Mister IT Guru
06.03.2023 14:59 Количество просмотров материала 3138
Распечатать страницу

2 ответа

вы, вероятно, захотите изучить правило Udev для запуска скрипта. Что хорошего в правилах udev, так это то, что вы можете заблокировать то, что USB-накопитель используется для резервного копирования, поэтому не каждый USB-накопитель запускает его.

первый шаг, чтобы получить ваше правило udev собирается:

вот отличный учебник по написанию udev rules

а вот и другое

затем вы можете перейти к аспекту сценариев. Первая ссылка охватывает немного запуск скрипта из udev так что вам просто нужно вызвать rsync из него.

man:rsync имеет много информации об использовании.

1
отвечен Dan M. 2023-03-07 22:47

вот кишки задания резервного копирования, которое проверяет наличие подключенного жесткого диска на основе USB. Было бы легко изменить его для других целей, а затем продолжать вызывать его через cron или, возможно, запускать его в фоновом режиме с циклом сна вокруг ключевых частей. Этот сценарий позволяет указать, где usb-диск, вероятно, будет найден (sdd), но было бы довольно легко изменить его, чтобы искать USB-накопитель по идентификатору диска.

источник резервного разделе NFS, но очевидно, что может быть изменено / удалено по мере необходимости.

существует цикл for В середине, который определяет места для резервного копирования

 # V1.01
 # Uses variable for usbdisk partition

started=`date`
usbdisk='sdd1'

if [ $(mount | grep -c /mnt/usbdisk) != 1 ]; then
 echo "USB disk is not mounted - trying to mount..."
 mount /dev/$usbdisk /mnt/usbdisk
 if [ $(mount | grep -c /mnt/usbdisk) != 1 ]; then
   echo "USB disk still not mounted - alerting admins and quitting"
   echo "USB disk is not mounted on TUX9 so backup cannot continue" | mail -s "TUX9 backup problem" myemailaddress@here.tld
   exit 1
 fi
fi

if [ $(mount | grep -c /mnt/nas) != 1 ]; then
  echo "NAS NFS mount is not present - trying to mount..."
  mount -t nfs -o proto=tcp,port=2049 mynas3:nas /mnt/nas
  if [ $(mount | grep -c /mnt/nas) != 1 ]; then
    echo "NAS NFS mount is still not present - alerting admins and quitting"
    echo "NAS NFS mount is not present on TUX9 so backup cannot continue" | mail -s "ASLTUX9 backup problem" myemailaddress@here.tld
    exit 1
  fi
fi

echo "All mount points present - backup starting..."

for i in /boot / /home /var /mnt/nas
# for testing for i in /boot
do
        if [ $i = "/" ]; then
                rsync -axv --delete root@tux8.test.lan:$i /mnt/usbdisk/backup/root
        elif [ $i = "/mnt/nas" ]; then
                rsync -axv --delete $i/ /mnt/usbdisk/backup/nas
        else
                rsync -axv --delete root@tux8.test.lan:$i/ /mnt/usbdisk/backup$i
        fi
done

echo done, started at $started, finished at `date`
echo "Backup of NAS3 and TUX8 to USB disk on TUX9 done. Started at $started, finished at `date`" | mail -s "TUX9 backup completed" myemailaddress@here.tld
0
отвечен Linker3000 2023-03-08 01:04

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх