U盘插入时自动备份Documents和Desktop文件夹到指定路径,并每日凌晨3:15执行兜底备份;需先用UUID固定挂载点,再配置udev规则或inotifywait监听,配合rsync同步并记录日志。

你需要把/home/用户名/Documents、/home/用户名/Desktop等重要文件夹自动备份到U盘,避免每次手动复制遗漏或忘记,必须让系统在U盘插入时自动触发同步,或按固定时间检查并执行备份。
确认U盘挂载路径并创建备份脚本
先插上U盘,打开终端运行 lsblk 查看设备名(如 sdb1),再用 findmnt -n -o TARGET /dev/sdb1 确认挂载点(常见为 /media/kylin/UNTITLED 或带卷标的路径)。【挂载点必须稳定可识别,若每次插入显示不同路径(如UNTITLED、USB-DISK等),需先用UUID绑定固定挂载点,否则后续定时任务会失败】
创建备份脚本:sudo nano /usr/local/bin/usb_backup.sh
写入内容(请将 /media/kylin/MyBackup 替换为你实际的U盘挂载路径,用户名 替换为真实用户名):
#!/bin/bash
if mount | grep -q "/media/kylin/MyBackup"; then
rsync -av --delete --exclude='*.tmp' --exclude='.cache' /home/用户名/Documents/ /media/kylin/MyBackup/Documents/
rsync -av --delete --exclude='*.tmp' --exclude='.cache' /home/用户名/Desktop/ /media/kylin/MyBackup/Desktop/
echo "$(date): Backup completed" >> /var/log/usb_backup.log
else
echo "$(date): USB not mounted" >> /var/log/usb_backup.log
fi
设置U盘插入自动触发备份(推荐)
方法一:用udev规则监听U盘接入事件
创建规则文件:sudo nano /etc/udev/rules.d/99-usb-backup.rules
写入(请将 ID_SERIAL=SanDisk_Ultra_XXXXXXXX-0:0 替换为你U盘真实的ID_SERIAL,可通过 udevadm info --name=/dev/sdb1 | grep ID_SERIAL 获取):
SUBSYSTEM=="block", ATTRS{idVendor}=="0781", ATTRS{idProduct}=="5581", ENV{ID_SERIAL}=="SanDisk_Ultra_XXXXXXXX-0:0", RUN+="/usr/local/bin/usb_backup.sh"
重载udev规则:sudo udevadm control --reload-rules && sudo udevadm trigger
方法二:用inotifywait轮询检测挂载目录(轻量替代方案)
安装工具:sudo apt install inotify-tools
新建守护脚本:sudo nano /usr/local/bin/watch_usb.sh
写入:
#!/bin/bash
while true; do
if [ -d "/media/kylin/MyBackup" ]; then
/usr/local/bin/usb_backup.sh
sleep 300
else
sleep 10
fi
done
赋予执行权限:sudo chmod +x /usr/local/bin/usb_backup.sh /usr/local/bin/watch_usb.sh
配置每日凌晨强制备份(兜底保障)
第一步:确保crond服务已启用
sudo systemctl start crond && sudo systemctl enable crond
第二步:以当前用户身份添加定时任务
crontab -e
第三步:新增一行(每天凌晨3:15执行,避开系统高峰)
15 3 * * * /bin/bash -c 'if [ -d "/media/kylin/MyBackup" ]; then /usr/local/bin/usb_backup.sh; fi'
第四步:保存退出后验证任务已加载
crontab -l | grep usb_backup
这一步操作起来很简单,直接把文件拖进去就行。但要注意:crontab中不能使用bash的数组或复杂逻辑,所有判断必须用基础shell语法,否则任务静默失败。


















