网站搜索

如何在连接时将文件自动备份到 USB 介质


备份是防止数据丢失的最后一道防线,提供了恢复原始数据的方法。您可以使用可移动介质(例如外部硬盘驱动器或 USB 闪存盘或共享网络文件夹)或远程主机来备份数据。自动备份重要文件非常容易(而且同样重要),而无需您记住这样做。

另请阅读:2018 年 Linux 系统 24 个出色的备份工具

在本文中,我们将学习如何在将可移动媒体连接到 Linux 计算机后将数据自动备份到该媒体。我们将使用外部磁盘进行测试。这是帮助您开始使用 udev 实现现实解决方案的基本指南。

出于本文的目的,我们需要一个具有以下功能的现代 Linux 系统:

  1. systemd 系统和服务管理器
  2. udev 设备管理器
  3. rsync备份工具

如何配置可移动媒体的 Udev 规则

Udev 是一个设备管理器,使您能够定义规则,这些规则可以在将设备添加到正在运行的系统或从正在运行的系统中删除时触发程序或脚本的执行,作为设备事件处理的一部分。我们可以使用此功能在将可移动介质添加到正在运行的系统后执行备份脚本。

在配置设备事件处理的实际规则之前,我们需要向 udev 提供将用于备份的可移动介质的一些属性。将外部磁盘连接到正在运行的系统并运行以下 lsusb 命令来识别其供应商和产品 ID。

出于测试目的,我们将使用 1TB 外部硬盘,如图所示。

lsusb

从上述命令的输出中,我们的设备供应商 ID 为 125f,我们将在 udev 规则中指定它,如下所述。

首先,从系统中删除连接的媒体,并在目录 /etc/udev/rules.d/ 下创建一个名为 10.autobackup.rules 的新 udev 规则文件。

文件名中的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属性值,即设备供应商ID。
  • RUN:指定作为事件处理的一部分执行的程序或脚本。

保存文件并关闭它。

创建自动备份脚本

现在创建一个自动备份脚本,在连接到系统时将文件自动备份到可移动 USB。

sudo vim /bin/autobackup.sh 

现在复制并粘贴以下脚本,确保替换脚本中的 BACKUP_SOURCEBACKUP_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 规则的影响,尤其是捕获设备属性。

有关详细信息,请参阅 udevmountrsync 手册页。

man udev
man mount 
man rsync 

您可能还想阅读以下与 Linux 备份相关的文章。

  1. rdiff-backup – Linux 远程增量备份工具
  2. Tomb – Linux 下的文件加密和个人备份工具
  3. 系统 Tar 和恢复 – 适用于 Linux 的多功能备份脚本
  4. 如何在 Linux 中使用 Duplicity 创建带宽高效的备份
  5. Rsnapshot – Linux 本地/远程备份工具
  6. 如何使用 Rsync 同步两个 Apache Web 服务器/网站

目前为止就这样了!在本文中,我们解释了如何在将可移动介质连接到 Linux 计算机后将数据自动备份到可移动介质。我们希望通过下面的反馈表收到您的来信。