Linux异地备份核心是tar+SSH管道传输:本地打包压缩后直传远端保存,不占本地空间;支持校验、清理、排除目录及cron自动化。

Linux 中用 tar 配合远程主机做异地备份,核心思路是:**本地打包压缩 → 通过 SSH 管道直接传到远端 → 远端解压或保存为归档文件**。不落地、不占本地中间空间,安全高效。
一、基础命令:tar + ssh 一次性管道传输
这是最常用也最推荐的方式,避免生成临时 tar 文件,节省磁盘和时间:
tar -czf - /data/www | ssh user@192.168.1.100 "cat > /backup/www-$(date +%Y%m%d).tar.gz"-
-表示 tar 输出到标准输出(stdout),供管道传递 -
ssh ... "cat > xxx"表示在远端接收并写入指定路径 -
-c创建归档、-zgzip 压缩、-f -指定输出到 stdout
二、带校验与自动清理的增强版
生产环境建议加上完整性校验和过期清理,提升可靠性:
- 传输后在远端生成 SHA256 校验值:
tar -czf - /data/www | ssh user@192.168.1.100 'tee /backup/www-$(date +%Y%m%d).tar.gz | sha256sum > /backup/www-$(date +%Y%m%d).sha256' - 远端定期清理 7 天前的备份(可放入 crontab):
find /backup -name "www-*.tar.gz" -mtime +7 -delete
三、排除不需要的目录(如日志、缓存)
备份时跳过非关键内容,减小体积、加快传输:
- 使用
--exclude参数(注意路径相对性):tar -czf - --exclude='/data/www/logs' --exclude='/data/www/cache' /data/www | ssh user@192.168.1.100 "cat > /backup/www-$(date +%Y%m%d).tar.gz" - 也可用
--exclude-from=excludes.txt把排除规则写进文件,便于维护
四、配合 cron 实现自动化异地备份
把上面命令写成脚本,再定时执行即可:
- 新建脚本
/root/bin/backup-www.sh,开头加#!/bin/bash,赋予执行权限:chmod +x /root/bin/backup-www.sh - 加入 crontab(每天凌晨 2:30 执行):
30 2 * * * /root/bin/backup-www.sh >> /var/log/backup-www.log 2>&1 - 确保远端目标目录存在且有写权限:
ssh user@192.168.1.100 "mkdir -p /backup"
不复杂但容易忽略:远端用户要有对应目录写入权限,SSH 免密登录必须提前配置好,否则 cron 会因密码阻塞失败。











