scp备份远程服务器关键业务数据的核心是安全、自动、可验证,需用-r递归复制目录、配置ssh免密登录、编写带日志和校验的定时脚本,并推荐先tar压缩再传输以节省带宽和提升可靠性。

用 scp 备份远程服务器的关键业务数据,核心是安全、自动、可验证。它不是最智能的方案(比如不支持增量),但胜在简单可靠、依赖少、加密传输,适合中小规模或对备份频率要求不高的场景。
关键点:scp 本身只做“一次拷贝”,所以备份是否有效,取决于你如何组织命令、调度和清理。
明确要备份什么,再决定怎么传
业务数据通常不是单个文件,而是目录结构(如 /var/www, /opt/zentao, /data/app)。
scp 默认不递归,必须加 -r 参数;否则只会复制空目录。
✅ 正确(复制目录内容):
scp -r user@192.168.1.100:/data/app /backup/app_$(date +%Y%m%d)/❌ 错误(只复制目录本身):
scp -r user@192.168.1.100:/data/app /backup/→ 结果是/backup/app/,但里面没东西(除非目标路径末尾有/且你理解清楚行为)
小技巧:源路径结尾加
/表示“内容”,不加表示“整个目录”。例如:scp -r /data/app/ user@remote:/backup/→ 把 app 里的文件放进 backupscp -r /data/app user@remote:/backup/→ 把整个 app 目录(含名字)放进 backup
必须配置免密登录,否则无法自动化
手动输密码会卡住定时任务。SSH 密钥认证是唯一实用方式:
在本地备份机上生成密钥(如果还没有):
ssh-keygen -t rsa -b 4096
按回车接受默认路径(~/.ssh/id_rsa)把公钥推送到远程业务服务器:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.1.100
输入一次密码,之后就免密了验证是否生效:
ssh user@192.168.1.100 date—— 能直接返回时间就成功
⚠️ 注意:确保远程服务器的
/etc/ssh/sshd_config中PubkeyAuthentication yes已启用,并重启 sshd:systemctl restart sshd
写成脚本 + 定时执行,避免人工遗漏
单纯敲命令不算备份,定期执行才算。
- 编写备份脚本(例如
/opt/scripts/backup_app.sh):#!/bin/bash DATE=$(date +%Y%m%d_%H%M) REMOTE="user@192.168.1.100" SRC="/data/app" DST="/backup/app_bk" mkdir -p "$DST/$DATE"
执行远程拷贝(带压缩参数 -C 可提速,尤其跨公网)
scp -C -r "$REMOTE:$SRC" "$DST/$DATE/" 2>>/var/log/backup.log
可选:校验关键文件是否存在(增强可靠性)
if [ -d "$DST/$DATE/app/config.php" ]; then echo "[$DATE] backup OK" >> /var/log/backup.log else echo "[$DATE] backup FAILED: config.php missing" >> /var/log/backup.log fi
2. 加可执行权限: `chmod +x /opt/scripts/backup_app.sh` 3. 加入 crontab(每天凌晨 2 点执行): `0 2 * * * /opt/scripts/backup_app.sh` > ? 日志很重要:加上 `2>>/var/log/backup.log` 能帮你快速发现连接失败、权限拒绝、路径不存在等问题。 --- ### <h3>补充建议:配合 tar 压缩再传,更省带宽和空间</h3> 直接 `scp -r` 传原始文件,网络和磁盘压力大。更推荐先打包压缩,再传单个文件: - 在远程服务器上打包(需有执行权限): `ssh user@192.168.1.100 "tar -czf /tmp/app_$(date +%Y%m%d).tar.gz -C /data app"` - 再本地拉取: `scp user@192.168.1.100:/tmp/app_$(date +%Y%m%d).tar.gz /backup/` - 最后远程清理临时包(可加到脚本里): `ssh user@192.168.1.100 "rm -f /tmp/app_$(date +%Y%m%d).tar.gz"` 这样既减少传输量,又让每次备份是一个独立、可验证的归档文件,也方便后续解压检查。 --- 不复杂但容易忽略。











