统信UOS系统可实现无人干预的定期文件备份,主要通过三种方式:一、调用内置“备份还原”工具配合cron定时执行;二、使用rsync与systemd timer完成轻量级增量同步;三、基于Btrfs子卷快照实现毫秒级高频备份。

如果您希望统信UOS系统在无人干预情况下定期保存重要文件夹的副本,避免手动操作遗漏或延迟,则需借助系统工具与定时任务机制组合实现。以下是实现自动备份的多种方法:
一、使用系统内置“备份还原”工具配合cron定时触发
该方法利用UOS预装的图形化备份工具生成备份任务脚本,并通过系统级定时服务cron周期性调用,适用于需保留完整系统分区结构且具备外接存储设备的用户。
1、打开终端,执行命令创建备份脚本:sudo nano /usr/local/bin/uos-auto-backup.sh。
2、在编辑器中输入以下内容(请将/mnt/backup替换为实际挂载的外部存储路径):
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M)
su -c "dbus-run-session -- sh -c 'export DISPLAY=:0; /usr/bin/backup-restore --backup --target /mnt/backup/uos_auto_$DATE.uimg --include-root --include-home'" $USER
3、保存并退出,执行命令赋予执行权限:sudo chmod +x /usr/local/bin/uos-auto-backup.sh。
4、编辑root用户的crontab:sudo crontab -e。
5、添加一行定时规则(例如每周日凌晨2点执行):0 2 * * 0 /usr/local/bin/uos-auto-backup.sh > /var/log/uos_backup.log 2>&1。
6、重启cron服务使配置生效:sudo systemctl restart cron。
二、基于rsync与systemd timer构建轻量级文件夹同步备份
该方法不依赖图形界面组件,仅同步指定用户目录(如Desktop、Documents、Pictures),支持增量传输、硬链接归档及失败邮件通知,适合注重效率与可控性的高级用户。
1、安装必要工具:sudo apt update && sudo apt install rsync mailutils -y。
2、创建备份目标目录并设置权限:sudo mkdir -p /mnt/backup/uos_daily && sudo chown $USER:$USER /mnt/backup/uos_daily。
3、编写rsync备份脚本:nano ~/bin/daily-folder-backup.sh,内容如下:
#!/bin/bash
rsync -avh --delete --link-dest=/mnt/backup/uos_daily/latest \
/home/$USER/Desktop/ \
/home/$USER/Documents/ \
/home/$USER/Pictures/ \
/mnt/backup/uos_daily/$(date +%Y%m%d)/ \
ln -sfT /mnt/backup/uos_daily/$(date +%Y%m%d) /mnt/backup/uos_daily/latest
4、赋予执行权限:chmod +x ~/bin/daily-folder-backup.sh。
5、创建systemd timer单元文件:nano ~/.config/systemd/user/backup-folder.timer,写入:
[Unit]
Description=Daily backup of user folders
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
6、创建对应service文件:nano ~/.config/systemd/user/backup-folder.service,写入:
[Unit]
Description=Backup user folders with rsync
[Service]
Type=oneshot
ExecStart=/home/$USER/bin/daily-folder-backup.sh
[Install]
WantedBy=default.target
7、启用并启动timer:systemctl --user daemon-reload && systemctl --user enable --now backup-folder.timer。
三、启用Btrfs子卷快照并配置定时快照服务
该方法要求根文件系统已迁移至Btrfs格式,通过btrfs filesystem snapshot命令创建瞬时只读快照,占用空间极小且毫秒级完成,适用于需高频捕获系统状态的场景。
1、确认当前根分区使用Btrfs:findmnt -n -o FSTYPE /,输出应为btrfs。
2、检查默认子卷命名规范:sudo btrfs subvolume list /,确认存在名为@与@home的子卷。
3、创建快照存储目录:sudo mkdir -p /mnt/backup/btrfs-snapshots。
4、编写快照脚本:sudo nano /usr/local/bin/btrfs-snapshot.sh,内容为:
#!/bin/bash
SUFFIX=$(date +%Y%m%d_%H%M%S)
sudo btrfs subvolume snapshot -r / /.snapshots/@_$SUFFIX
sudo btrfs subvolume snapshot -r /home /.snapshots/@home_$SUFFIX
sudo mv /.snapshots/@_$SUFFIX /mnt/backup/btrfs-snapshots/
sudo mv /.snapshots/@home_$SUFFIX /mnt/backup/btrfs-snapshots/
5、设置脚本权限:sudo chmod +x /usr/local/bin/btrfs-snapshot.sh。
6、配置每日快照cron任务:sudo crontab -e,添加:
0 3 * * * /usr/local/bin/btrfs-snapshot.sh > /dev/null 2>&1
7、定期清理旧快照(可选):在上述脚本末尾追加清理逻辑,例如保留最近7个快照:
sudo btrfs subvolume list -o /mnt/backup/btrfs-snapshots | head -n -7 | awk '{print $9}' | xargs -I {} sudo btrfs subvolume delete /mnt/backup/btrfs-snapshots/{}

















