外观
实训 04:备份、传输与恢复 Nginx 站点
约 1198 字大约 4 分钟
云计算实训第04次课
2026-07-30
任务情境
课程学习站已经可以从浏览器访问。你需要为 /var/www/html 创建一份带时间的备份,将它安全传输到 WSL,并在不影响在线站点的前提下完成一次文件删除与恢复测试。
开始前
新建:
班级_学号_姓名_第04次课_站点备份恢复报告.docx解压配套包,填写其中的 site-backup-restore-report-template.docx,并阅读课程作业与实验安全策略。
A 路径:ECS 可用
使用第三次课的 /var/www/html 完成真实备份、传输和隔离恢复。
B 路径:ECS 暂不可用
在 WSL 建立教师提供的合成 html 目录,完成归档、校验、删除测试文件和恢复。报告必须标明 WSL,服务器可用后补交挂载、云盘和 SCP 证据。
安全边界
- 不删除或覆盖在线站点
/var/www/html。 - 删除练习只针对
~/cloud-course/lab-04/restore-test/html/index.html。 - 不使用递归强制删除,不清理未知备份。
- 不开放 FTP、Samba、NFS 或其他文件传输端口。
- 不自行创建快照或 OSS 资源,避免未经确认的费用。
- 不把公网地址、私钥、密码和完整 SCP 目标放进 Word。
任务 1:确认存储位置与备份条件
[ECS] whoami
[ECS] hostname
[ECS] lsblk -f
[ECS] findmnt /
[ECS] df -hT /var/www/html
[ECS] du -sh /var/www/html
[ECS] find /var/www/html -maxdepth 2 -type f -print写入 Word:
- 图 1:块设备、文件系统和挂载点;
- 图 2:站点目录、文件清单和占用;
- 说明站点位于哪个文件系统,以及备份为什么不能只保存在原目录旁边。
任务 2:创建归档和校验文件
[ECS] mkdir -p ~/cloud-course/backups ~/cloud-course/lab-04
[ECS] backup_name="nginx-site-$(date +%Y%m%d-%H%M%S).tar.gz"
[ECS] backup_path="$HOME/cloud-course/backups/$backup_name"
[ECS] tar -czf "$backup_path" -C /var/www html
[ECS] ls -lh "$backup_path"
[ECS] tar -tzf "$backup_path" | sed -n '1,30p'确认归档包含 html/index.html 后生成校验文件:
[ECS] cd ~/cloud-course/backups
[ECS] sha256sum "$backup_name" | tee "$backup_name.sha256"
[ECS] chmod 600 "$backup_name" "$backup_name.sha256"
[ECS] sha256sum -c "$backup_name.sha256"
[ECS] printf 'backup_name=%s\n' "$backup_name"写入 Word:
- 图 3:归档文件和归档目录;
- 图 4:ECS 端 SHA-256 检查;
- 解释归档列表和校验值各自证明什么。
任务 3:传输到 WSL
在 WSL 中填写自己的 SSH 登录目标和实际备份文件名:
[WSL] mkdir -p ~/cloud-course/lab-04-received
[WSL] cd ~/cloud-course/lab-04-received
[WSL] ECS_TARGET="登录用户名@自己的ECS公网地址"
[WSL] BACKUP_NAME="填写ECS中显示的备份文件名"传输并校验:
[WSL] scp "$ECS_TARGET:cloud-course/backups/$BACKUP_NAME" .
[WSL] scp "$ECS_TARGET:cloud-course/backups/$BACKUP_NAME.sha256" .
[WSL] ls -lh
[WSL] sha256sum -c "$BACKUP_NAME.sha256"写入 Word:
- 图 5:SCP 传输过程,隐藏完整目标地址;
- 图 6:WSL 端校验结果;
- 说明为什么 SCP 不需要新增 FTP 端口。
任务 4:完成隔离恢复测试
回到 ECS,根据实际文件名重新设置变量:
[ECS] cd ~/cloud-course/backups
[ECS] backup_name="填写本次实际备份文件名"
[ECS] backup_path="$PWD/$backup_name"
[ECS] restore_dir="$HOME/cloud-course/lab-04/restore-test"
[ECS] mkdir -p "$restore_dir"
[ECS] tar -xzf "$backup_path" -C "$restore_dir"检查恢复文件:
[ECS] find "$restore_dir" -maxdepth 3 -type f -print
[ECS] diff -u /var/www/html/index.html "$restore_dir/html/index.html"
[ECS] realpath "$restore_dir/html/index.html"只有 realpath 位于 ~/cloud-course/lab-04/restore-test 时,才能继续删除测试副本:
[ECS] rm "$restore_dir/html/index.html"
[ECS] test ! -e "$restore_dir/html/index.html" && echo "测试文件已删除"从归档恢复指定文件:
[ECS] tar -xzf "$backup_path" -C "$restore_dir" html/index.html
[ECS] test -f "$restore_dir/html/index.html" && echo "测试文件已恢复"
[ECS] diff -u /var/www/html/index.html "$restore_dir/html/index.html"写入 Word:
- 图 7:删除前路径确认与测试文件删除;
- 图 8:恢复后文件存在与
diff结果; - 说明为什么这个操作没有影响在线站点。
任务 5:设计两级恢复方案
完成以下记录:
场景 A:只有 index.html 被误删,ECS 和云盘正常
恢复对象:
选择的备份:
恢复到哪里先验证:
验证方法:
场景 B:云盘不可用或实例无法启动
为什么同盘归档可能无效:
需要哪种独立备份:
恢复范围:
费用与停机检查:快照与 OSS 只做方案设计,不要求现场创建。
任务 6:验收与提交
在实训包目录运行:
[ECS] bash verify.sh提交前检查:
- 归档文件名带日期时间;
- 归档列表包含站点首页;
- ECS 和 WSL 的 SHA-256 均为
OK; - 删除和恢复只发生在隔离目录;
- 恢复文件与在线文件比较一致;
- 两种恢复方案区分了文件级和云盘级;
- Word 截图已脱敏;
- 智慧职教显示提交成功。
最终只上传 .docx,不要上传备份包、校验文件、私钥或服务器配置目录。
