rsync + ssh 是最稳妥的远程备份组合,加密且支持增量同步,无需远程 rsync 服务;需显式指定 -e 参数、注意路径结尾斜杠、限制 ssh 密钥权限、加锁防重入、校验与还原测试不可少。

rsync + SSH 是当前最稳妥的远程备份组合
直接用 rsync 走 SSH 通道,既加密又保持增量同步能力,比单纯 scp 或 tar + ssh 更省带宽、更可控。它不依赖远程主机装额外服务(比如 rsync daemon),只要能 SSH 登录就能跑。
常见错误是漏掉 -e 参数或写错 SSH 选项,导致走默认未加密的 rsync 协议(端口 873),或者连接被拒绝却误以为是路径问题。
- 必须显式指定
-e "ssh -p 2222"(如果 SSH 端口不是 22) - 避免用
rsync user@host::module这种 daemon 模式——它默认不加密,且需要远程开 rsyncd 服务,多一层暴露面 - 加
--delete前先试运行加--dry-run,否则删错本地或远端文件没回滚 - 路径结尾是否加
/影响极大:/data/同步内容,/data同步目录本身
SSH 密钥免密登录必须限制命令和权限
备份脚本常配 SSH 免密登录,但直接用无限制的密钥等于给攻击者开了后门。不能只靠“密码不用输”就认为安全。
典型风险是:一旦私钥泄露,攻击者可完整登录目标机,而不仅限于备份操作。
家电公司网站源码是一个以米拓为核心进行开发的家电商城网站模板,程序采用metinfo5.3.9 UTF8进行编码,软件包含完整栏目与数据。安装方法:解压上传到空间,访问域名进行安装,安装好后,到后台-安全与效率-数据备份还原,恢复好数据后到设置-基本信息和外观-电脑把网站名称什么的改为自己的即可。默认后台账号:admin 密码:132456注意:如本地测试中127.0.0.1无法正常使用,请换成l
- 生成密钥时用
ssh-keygen -t ed25519 -C "backup@web01",优先选 ed25519 - 在远程
~/.ssh/authorized_keys中,把公钥行开头加上强制指令:command="rsync --server --sender -vlogDtpre.iLs . /backup/",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-ed25519 AAAA... - 确保远程
/backup/目录属主为备份用户,且权限 ≤750,禁止组外写入
备份失败时常见报错与定位路径
备份中断不报错、或只输出一堆 @ERROR,往往是因为没看清实际卡在哪一环。SSH 连接失败、磁盘满、权限不足、路径不存在,都可能表现为相似的静默退出或 rsync error: unexplained error (code 255)。
- 先手动执行一次带
-v --progress的命令,观察卡在 “sending incremental file list” 还是 “building file list” —— 前者大概率是远程权限或路径问题,后者可能是本地扫描慢或符号链接循环 - 检查远程
df -h和ls -ld /backup,尤其注意 SELinux 是否启用(getenforce返回Enforcing时需chcon -t rsync_etc_t /backup或临时设为 permissive) - 如果报
protocol version mismatch,说明本地和远程rsync版本差太多(如 macOS 自带 rsync 2.6.9 vs Ubuntu 3.2+),建议远程也用rsync --version对齐
定时任务里别裸写 rsync,要加日志和锁机制
crontab 直接调 rsync 很容易撞上上次还没跑完,尤其大目录首次同步可能持续数小时。两个实例同时写同一目标,轻则覆盖,重则损坏 hard link 备份结构。
- 用
flock -n /tmp/backup.lock -c "rsync ..."防重入,-n表示获取不到锁立即退出,不阻塞 - 所有输出重定向到日志:
> /var/log/backup.log 2>&1,但别用>>追加——日志会无限膨胀,改用logger -t backup推系统日志更稳妥 - 避免在 crontab 里写长命令,封装成脚本,开头加
#!/bin/bash -e,出错立刻终止,不继续执行后续步骤
真正难的不是传过去,而是确认传得全、没被篡改、还能按时恢复。校验和、保留多个时间点、定期抽样还原测试,这些动作不会自动发生,得在脚本里一条条写死。









