Как автоматически создавать резервные копии файлов на USB-носителе при подключении
Резервное копирование — это последняя защита от потери данных, позволяющая восстановить исходные данные. Для резервного копирования данных вы можете использовать съемный носитель, например внешний жесткий диск или флэш-диск USB, общую сетевую папку или удаленный хост. Очень просто (и не менее важно) автоматически создавать резервные копии важных файлов, не забывая об этом.
Читайте также: 24 лучших инструмента резервного копирования для систем Linux в 2018 году
В этой статье мы узнаем, как автоматически выполнять резервное копирование данных на съемный носитель после его подключения к вашему компьютеру с Linux. Тестировать будем с внешним диском. Это базовое руководство, которое поможет вам начать использовать udev для решения реальных задач.
Для целей этой статьи нам нужна современная система Linux с:
- systemd менеджер систем и служб
- диспетчер устройств udev
- инструмент резервного копирования rsync
Как настроить правила Udev для съемных носителей
Udev — это диспетчер устройств, который позволяет вам определять правила, которые могут, среди прочего, запускать выполнение программы или сценария при добавлении устройства в работающую систему или удалении из нее в рамках обработки событий устройства. . Мы можем использовать эту функцию для выполнения сценария резервного копирования после добавления съемного носителя в работающую систему.
Прежде чем мы настроим фактическое правило для обработки событий устройства, нам необходимо предоставить udev некоторые атрибуты съемного носителя, который будет использоваться для резервного копирования. Подключите внешний диск к работающей системе и выполните следующую команду lsusb, чтобы определить поставщика и идентификатор продукта.
В целях тестирования мы будем использовать внешний жесткий диск 1 ТБ, как показано на рисунке.
lsusb
В результате выполнения приведенной выше команды идентификатор поставщика нашего устройства — 125f
, который мы укажем в правилах udev, как описано ниже.
Сначала удалите подключенный носитель из системы и создайте новый файл правил udev с именем 10.autobackup.rules
в каталоге /etc/udev/rules.d/.
Цифра 10 в имени файла определяет порядок выполнения правил. Порядок анализа правил важен; вам всегда следует создавать собственные правила для анализа до значений по умолчанию.
sudo vim /etc/udev/rules.d/10.autobackup.rules
Затем добавьте в него следующее правило:
SUBSYSTEM=="block", ACTION=="add", ATTRS{idVendor}=="125f" SYMLINK+="external%n", RUN+="/bin/autobackup.sh"
Кратко поясним приведенное выше правило:
"=="
: оператор сравнения на равенство."+="
: оператор, добавляющий значение к ключу, содержащему список записей.- SUBSYSTEM: соответствует подсистеме устройства событий.
- ACTION: соответствует названию действия события.
- ATTRS{idVendor: соответствует значениям атрибута sysfs устройства событий, которое является идентификатором поставщика устройства.
- RUN: указывает программу или сценарий, который будет выполняться в рамках обработки событий.
Сохраните файл и закройте его.
Создайте сценарий автоматического резервного копирования
Теперь создайте сценарий автоматического резервного копирования, который будет автоматически выполнять резервное копирование файлов на съемный USB-накопитель при подключении к системе.
sudo vim /bin/autobackup.sh
Теперь скопируйте и вставьте следующий скрипт, обязательно замените в скрипте значения BACKUP_SOURCE, BACKUP_DEVICE, и MOUNT_POINT.
#!/usr/bin/bash
BACKUP_SOURCE="/home/admin/important"
BACKUP_DEVICE="/dev/external1"
MOUNT_POINT="/mnt/external"
#check if mount point directory exists, if not create it
if [ ! -d “MOUNT_POINT” ] ; then
/bin/mkdir “$MOUNT_POINT”;
fi
/bin/mount -t auto “$BACKUP_DEVICE” “$MOUNT_POINT”
#run a differential backup of files
/usr/bin/rsync -auz "$MOUNT_POINT" "$BACKUP_SOURCE" && /bin/umount "$BACKUP_DEVICE"
exit
Затем сделайте скрипт исполняемым с помощью следующей команды.
sudo chmod +x /bin/autobackup.sh
Затем перезагрузите правила udev, используя следующую команду.
udevadm control --reload
В следующий раз, когда вы подключите внешний жесткий диск или любое другое устройство, которое вы настроили к системе, все ваши документы из указанного места должны быть автоматически скопированы на него.
Примечание. Насколько эффективно это работает, может зависеть от файловой системы на съемном носителе и написанных вами правил udev, особенно захвата атрибутов устройства.
Дополнительную информацию см. на справочных страницах udev, mount и rsync.
man udev
man mount
man rsync
Возможно, вам также будет интересно прочитать следующие статьи, посвященные резервному копированию Linux.
- rdiff-backup — инструмент удаленного инкрементального резервного копирования для Linux
- Tomb — инструмент шифрования файлов и личного резервного копирования для Linux
- System Tar и Restore — универсальный сценарий резервного копирования для Linux
- Как создавать резервные копии с эффективной пропускной способностью с помощью Duplicity в Linux
- Rsnapshot — инструмент локального/удалённого резервного копирования для Linux
- Как синхронизировать два веб-сервера/веб-сайта Apache с помощью Rsync
На данный момент это все! В этой статье мы объяснили, как автоматически выполнять резервное копирование данных на съемный носитель после его подключения к вашему компьютеру с Linux. Мы хотели бы услышать ваше мнение через форму обратной связи ниже.