银河麒麟系统可通过rsync实现本地到u盘/nas的单向定时同步、timeshift进行系统级快照备份、rsync+ssh完成跨主机双向同步,三者分别适配数据推送、系统恢复和多机镜像场景。

您需要在银河麒麟系统中让指定文件夹(如/home/用户名/文档、/data/share)持续保持与另一位置(U盘、NAS或远程服务器)内容一致,避免手动拷贝遗漏或版本错乱,必须配置可自动触发、支持差异比对、能处理权限与符号链接的同步策略。
用rsync实现本地到外设的单向定时同步
该方法适用于将个人数据定期推送到U盘或挂载的NAS,不依赖网络服务端,全程由本机crontab驱动,备份包带日期戳便于追溯。
1、确认目标设备已正确挂载:打开文件管理器,插入U盘后查看左侧设备列表是否显示;若未自动挂载,终端执行sudo mount /dev/sdb1 /mnt/usb(请先用lsblk确认设备名)。
2、创建同步脚本:sudo nano /usr/local/bin/sync_docs_to_usb.sh
3、写入以下内容(注意替换/home/yourname/文档为实际路径,/mnt/usb为挂载点):
#!/bin/bash
rsync -av --delete --exclude='*.tmp' --log-file=/var/log/rsync_docs.log /home/yourname/文档/ /mnt/usb/docs_$(date +\%Y\%m\%d)/
4、赋予执行权限:sudo chmod +x /usr/local/bin/sync_docs_to_usb.sh
5、添加每日凌晨3点执行的定时任务:sudo crontab -e,追加一行:0 3 * * * /usr/local/bin/sync_docs_to_usb.sh
这一步操作起来很简单,直接把文件拖进去就行。但要注意:如果U盘未挂载就触发脚本,rsync会静默失败且不报错——务必确保挂载路径稳定存在,建议在脚本开头加入mountpoint -q /mnt/usb || exit 1判断。
通过Timeshift配置系统级快照式同步
Timeshift不是传统意义上的“文件夹同步”,而是以Btrfs子卷或rsync硬链接方式保存整个/或/home的瞬时状态,适合防范误删、配置崩溃等场景,每次快照仅存增量变更。
方法一:图形界面快速启用
1、启动Timeshift:sudo timeshift
2、点击“设置”→“快照类型”,若根分区为Btrfs则选Btrfs,否则选Rsync
3、点击“快照位置”,选择外部硬盘挂载路径(如/backup),确保该路径独立于系统分区
4、勾选“启用定时快照”,设定为“每天”,并设置保留数量(建议7~30个)
5、点击“保存设置”,再点“创建快照”立即生成首个副本
方法二:命令行强制创建快照
执行sudo timeshift --create --comments "manual_sync_$(date +%Y%m%d)",快照将按设定策略自动归档至目标路径。
【重要前提】Timeshift无法同步任意自定义文件夹,它只作用于预设系统路径(如/etc、/home、/var),若需备份/data/project这类非标准路径,请改用rsync方案。
配置rsync+SSH实现跨主机双向同步
当您有两台银河麒麟设备(如办公机与家庭服务器),需让某个文件夹在两者间实时镜像更新,且要求加密传输、断点续传、权限保留,必须采用SSH免密通道+rsync组合。
第一步:建立SSH无密码登录
1、在客户端(发起同步的一方)生成密钥:ssh-keygen -t rsa -b 4096,一路回车使用默认路径
2、将公钥复制到服务端:ssh-copy-id user@192.168.10.151(替换为实际IP和用户名)
3、测试连接:ssh user@192.168.10.151,无需输密码即成功
第二步:编写双向同步脚本
1、创建脚本:sudo nano /usr/local/bin/bidir_sync.sh
2、填入以下逻辑(以同步/home/user/work为例):
#!/bin/bash
# 先拉取远程变更
rsync -avz --delete --exclude='.git' user@192.168.10.151:/home/user/work/ /home/user/work/
# 再推送本地变更
rsync -avz --delete --exclude='.git' /home/user/work/ user@192.168.10.151:/home/user/work/
3、设为可执行:sudo chmod +x /usr/local/bin/bidir_sync.sh
第三步:设置定时触发
执行sudo crontab -e,添加:*/30 * * * * /usr/local/bin/bidir_sync.sh >> /var/log/bidir_sync.log 2>&1,表示每30分钟执行一次双向校验。
注意:rsync本身不原生支持严格“双向实时同步”,此方案本质是高频轮询+覆盖式更新,若同一文件在两端同时修改,后执行的一方将覆盖前者——这是设计使然,不可绕过。











