Поиск по сайту:

Как автоматически создавать резервные копии файлов на USB-носителе при подключении


Резервное копирование — это последняя защита от потери данных, позволяющая восстановить исходные данные. Для резервного копирования данных вы можете использовать съемный носитель, например внешний жесткий диск или флэш-диск USB, общую сетевую папку или удаленный хост. Очень просто (и не менее важно) автоматически создавать резервные копии важных файлов, не забывая об этом.

Читайте также: 24 лучших инструмента резервного копирования для систем Linux в 2018 году

В этой статье мы узнаем, как автоматически выполнять резервное копирование данных на съемный носитель после его подключения к вашему компьютеру с Linux. Тестировать будем с внешним диском. Это базовое руководство, которое поможет вам начать использовать udev для решения реальных задач.

Для целей этой статьи нам нужна современная система Linux с:

  1. systemd менеджер систем и служб
  2. диспетчер устройств udev
  3. инструмент резервного копирования 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.

  1. rdiff-backup — инструмент удаленного инкрементального резервного копирования для Linux
  2. Tomb — инструмент шифрования файлов и личного резервного копирования для Linux
  3. System Tar и Restore — универсальный сценарий резервного копирования для Linux
  4. Как создавать резервные копии с эффективной пропускной способностью с помощью Duplicity в Linux
  5. Rsnapshot — инструмент локального/удалённого резервного копирования для Linux
  6. Как синхронизировать два веб-сервера/веб-сайта Apache с помощью Rsync

На данный момент это все! В этой статье мы объяснили, как автоматически выполнять резервное копирование данных на съемный носитель после его подключения к вашему компьютеру с Linux. Мы хотели бы услышать ваше мнение через форму обратной связи ниже.