必须通过rsync与crontab组合实现自动增量备份:先挂载设备,再创建含mountpoint校验和日期标识的同步脚本,配置每日3点执行,并推荐添加7天备份清理策略。

您需要在麒麟操作系统中让特定文件夹(如/home/用户名/Documents、/data/project)每天自动同步到本地外接硬盘或NAS,避免手动复制遗漏、覆盖错误或版本混乱,必须通过rsync命令与crontab定时任务组合实现稳定、可追溯、带日期标识的增量备份链路。
确认目标设备已挂载并创建同步脚本
先确保U盘或NAS已正确挂载,否则后续所有同步都会静默失败。打开文件管理器查看左侧设备列表是否显示;若未自动挂载,终端执行sudo mount /dev/sdb1 /mnt/usb(请先用lsblk确认设备名)。然后创建脚本:sudo nano /usr/local/bin/sync_docs_to_usb.sh。
写入以下内容(注意替换/home/yourname/Documents为实际路径,/mnt/usb为挂载点):
#!/bin/bash<br>mountpoint -q /mnt/usb || exit 1<br>rsync -av --delete --exclude='*.tmp' --log-file=/var/log/rsync_docs.log /home/yourname/Documents/ /mnt/usb/docs_$(date +\%Y\%m\%d)/
【关键前提:脚本开头必须加入mountpoint -q /mnt/usb || exit 1判断,否则U盘未插入时rsync会把空目录当成有效目标,导致源文件被清空】
赋予执行权限并测试脚本
运行sudo chmod +x /usr/local/bin/sync_docs_to_usb.sh。
立即手动执行一次验证:sudo /usr/local/bin/sync_docs_to_usb.sh。检查/mnt/usb下是否生成了形如docs_20260930/的目录,且内部文件结构与源目录一致。若日志中出现rsync: failed to open log file,说明/var/log无写入权限,需先运行sudo touch /var/log/rsync_docs.log && sudo chown root:root /var/log/rsync_docs.log。
配置每日凌晨3点自动执行
第一步:确保crond服务已启用
执行sudo systemctl status crond,若显示inactive,则运行sudo systemctl start crond && sudo systemctl enable crond。
第二步:编辑root级定时任务
运行sudo crontab -e,在文件末尾新增一行:
0 3 * * * /usr/local/bin/sync_docs_to_usb.sh
第三步:保存退出后确认生效
执行sudo crontab -l,应看到刚添加的那行任务。注意:crontab中date命令的百分号必须转义为\%Y\%m\%d,否则任务会因语法错误静默不执行。
设置备份保留策略(可选但强烈推荐)
方法一:直接在同步脚本末尾追加清理逻辑
在rsync命令之后、exit之前插入:
find /mnt/usb -maxdepth 1 -name "docs_*" -type d -mtime +7 -exec rm -rf {} \;
这行命令会删除7天前的所有docs_*目录,防止U盘空间被占满。注意-mtime +7表示“修改时间超过7天”,不是“创建时间”。
方法二:单独编写清理脚本
创建sudo nano /usr/local/bin/clean_old_backups.sh,写入相同find命令,再用sudo crontab -e添加另一行:0 4 * * * /usr/local/bin/clean_old_backups.sh,错开同步时间避免I/O冲突。











