尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

不备份整个 Linux 系统,如何完成开发环境的迁移?——三步法精简备份到 NAS 一条脚本完成

不备份整个 Linux 系统,如何完成开发环境的迁移?——三步法精简备份到 NAS 一条脚本完成
📅 发布时间:2026/6/26 9:10:23

Ubuntu 24 降级 22:250GB 深度学习环境全量备份到 NAS,一条脚本搞定

场景:一台跑了三个月的 Ubuntu 24 深度学习服务器,装了 AnomalyGPT、ComfyUI、Stable Diffusion 等环境,总共约 250GB 用户文件。现在要降级到 Ubuntu 22.04,本地只剩 8GB 空间。怎么完整备份?

答案:分类识别"必保/可重建/可丢弃"三类文件,NAS 网络盘当目标,一条 shell 脚本全自动完成。

一、问题分析

当前状态

$df-h/ Filesystem Size Used Avail Use% Mounted on /dev/nvme0n1p2 457G 426G8.0G99% / $du-sh~/*2>/dev/null|sort-rh|head-10160G /home/agent/wjp# AnomalyGPT + IAD-R1 项目(源码+模型+数据集+checkpoint)55G /home/agent/ComfyUI# ComfyUI + 49GB SD 模型22G /home/agent/openclaw-cn# 其他项目6.5G /home/agent/sd-webui# Stable Diffusion WebUI5.1G /home/agent/cuda_*.run# CUDA 安装包

矛盾:250GB 的用户数据 vs 8GB 的磁盘空余。本地备份不可能。

解决思路

三步走:

  1. 分类——哪些必须备份?哪些可从网上下载?哪些是系统缓存可丢弃?
  2. 选目标——NAS 网络盘(局域网 //192.168.6.197)
  3. 自动化——一条脚本完成清理→挂载→备份→验证全流程

二、分类策略:什么该备份、什么该丢弃

这是最重要的设计——删对了省空间,删错了丢成果。

规则很简单:问自己"这个文件没了,我能不能通过一条命令恢复?"

文件/目录大小能命令恢复?备份?理由
wjp/(项目源码+模型+训练checkpoint)160GB❌ 训练了70小时的模型不可恢复✅核心成果
ComfyUI/models/(Stable Diffusion模型)49GB✅ 可从 HuggingFace/CivitAI 重下✅下载太慢,备份更省时间
ComfyUI/(本体)6GB✅git clone即可✅跟着 models 一起走
openclaw-cn/22GB❌ 自己安装配置的项目✅
sd-webui/6.5GB✅git clone✅
cuda_*.run5.1GB✅ NVIDIA 官网随时下载❌删,省空间
cudnn-*.deb1.5GB✅ NVIDIA 官网❌删
stable-diffusion-webui-master.zip1.9GB✅ GitHub❌删
.cache/__pycache__/*.pyc~2GB自动生成❌删
~/.xsession-errors.old308MB系统自动❌删

核心原则:

能一行命令重装的 → 删(省空间) 训练出来的权重/checkpoint → 保(不可恢复) 下载很慢的大模型文件 → 保(虽然能重下,但浪费时间)

三、完整备份脚本

#!/bin/bash# ============================================================# Ubuntu 24 深度学习环境全量备份脚本# 功能:清理→挂载NAS→打包备份→验证→卸载# 目标://192.168.6.197/wjp/ubuntu24.04(局域网NAS)# 用量:du -sh /mnt/backup/backup_myfiles_*.tar.gz 查看结果# ============================================================set-eBACKUP_DATE=$(date+%Y%m%d)NAS_PATH="//192.168.6.197/wjp/ubuntu24.04"MOUNT_POINT="/mnt/backup"BACKUP_FILE="${MOUNT_POINT}/backup_myfiles_${BACKUP_DATE}.tar.gz"echo"=========================================="echo" Ubuntu 24 深度学习环境备份"echo" 日期:$BACKUP_DATE"echo" 目标:$NAS_PATH"echo"=========================================="# ============================================================# 第1步:清理可重新下载的文件(释放本地空间,加快压缩)# ============================================================echo""echo"[1/6] 清理可恢复文件..."# NVIDIA 安装包(随时可从官网下载)rm-f~/cuda_*.runrm-f~/cudnn-*.debrm-f~/cuda-keyring_*.deb*# GitHub 项目压缩包rm-f~/stable-diffusion-webui-master.ziprm-f~/wjp/LandPPT-master.zip2>/dev/null# 系统日志(自动生成)rm-f~/.xsession-errors.oldrm-f~/get-docker.sh# apt 缓存sudoaptclean# Python 缓存(运行时自动生成)find~/wjp ~/ComfyUI ~/sd-webui-name"__pycache__"-typed-execrm-rf{}+2>/dev/nullfind~/wjp ~/ComfyUI ~/sd-webui-name"*.pyc"-delete2>/dev/nullrm-rf~/.cache/pip2>/dev/nullecho"[OK] 清理完成,当前磁盘空间:"df-h/|tail-1# ============================================================# 第2步:安装 SMB 客户端并挂载 NAS# ============================================================echo""echo"[2/6] 挂载 NAS 网络盘..."# 安装 cifs-utils(如果还没装)if!command-vmount.cifs&>/dev/null;thensudoaptinstallcifs-utils-yfi# 创建挂载点sudomkdir-p"$MOUNT_POINT"# 如果已经挂载了,先卸载ifmount|grep-q"$MOUNT_POINT";thensudoumount"$MOUNT_POINT"fi# 挂载 NAS(替换 username 和 password 为你的 NAS 凭据)sudomount-tcifs"$NAS_PATH""$MOUNT_POINT"\-ousername=YOUR_USERNAME,password=YOUR_PASSWORD,dir_mode=0777,file_mode=0777# 验证挂载ifmount|grep-q"$MOUNT_POINT";thenecho"[OK] NAS 挂载成功"ls"$MOUNT_POINT"|head-5elseecho"[FAIL] NAS 挂载失败,请检查:"echo" 1. NAS 是否开机"echo" 2. IP 地址是否正确:$NAS_PATH"echo" 3. 用户名密码是否正确"exit1fi# ============================================================# 第3步:打包备份(核心步骤)# ============================================================echo""echo"[3/6] 开始打包备份(可能需要 1-2 小时)..."echo" 备份中,请耐心等待..."cd~# 注意:这里列出的是需要备份的目录和文件# 如果你的环境不同,修改这里的列表即可tar-czvf"$BACKUP_FILE"\wjp/\# AnomalyGPT + IAD-R1(源码+模型+checkpoint+数据集)ComfyUI/\# ComfyUI 完整环境openclaw-cn/\# openclaw 项目sd-webui/\# Stable Diffusion WebUImodelscope/\# ModelScope 模型缓存ppt/\# PPT 文件skills/\# 自定义技能Documents/\# 文档Downloads/\# 下载文件Desktop/\# 桌面文件.bashrc .bash_history .zshrc\# shell 配置和历史.npmrc\# npm 配置.ssh/\# SSH 密钥(重要!)claw-config.json\# 项目配置create_ppt.py create_ppt.py.bak\final_ppt_creator.py final_ppt_creator.py.bak\generate_images_comfyui.py generate_images_comfyui.py.bak\generate_images.py generate_images.py.bak\generate_ppt.py generate_ppt.py.bak\prompt_generator.py prompt_generator.py.bak\replace.py.bak# ============================================================# 第4步:验证备份完整性# ============================================================echo""echo"[4/6] 验证备份文件..."# 显示文件大小FILE_SIZE=$(du-sh"$BACKUP_FILE"|cut-f1)echo" 文件大小:$FILE_SIZE"# 测试 tar 包是否完整(列出前20个文件)iftar-tzf"$BACKUP_FILE">/dev/null2>&1;thenFILE_COUNT=$(tar-tzf"$BACKUP_FILE"|wc-l)echo" 包含文件数:$FILE_COUNT"echo" 前20个文件:"tar-tzf"$BACKUP_FILE"|head-20echo"[OK] 备份文件完整性验证通过"elseecho"[FAIL] 备份文件可能损坏!请检查 NAS 空间和网络连接"exit1fi# ============================================================# 第5步:保存 Python 包列表(重装后恢复环境用)# ============================================================echo""echo"[5/6] 保存 Python 环境信息..."pip freeze>~/pip_packages.txt# 也复制一份到 NAScp~/pip_packages.txt"${MOUNT_POINT}/pip_packages_${BACKUP_DATE}.txt"echo"[OK] Python 包列表已保存"# ============================================================# 第6步:卸载 NAS# ============================================================echo""echo"[6/6] 卸载 NAS..."sudoumount"$MOUNT_POINT"echo"[OK] NAS 已安全卸载"# ============================================================# 完成# ============================================================echo""echo"=========================================="echo" 备份完成!"echo" 文件:$BACKUP_FILE"echo" 大小:$FILE_SIZE"echo"=========================================="echo""echo"后续操作指南:"echo""echo" 1. 制作 Ubuntu 22.04 启动盘(用 Rufus 或 balenaEtcher)"echo" 2. 从 U 盘启动 → 安装 Ubuntu 22.04"echo" 3. 安装完成后,恢复文件:"echo""echo" # 挂载 NAS"echo" sudo mkdir -p /mnt/backup"echo" sudo mount -t cifs$NAS_PATH/mnt/backup\\"echo" -o username=YOUR_USERNAME,password=YOUR_PASSWORD"echo""echo" # 解压到 home 目录"echo" tar -xzvf$BACKUP_FILE-C ~/"echo""echo" # 恢复 Python 环境"echo" python3.10 -m venv ~/wjp/AnomalyGPT-main/venv"echo" source ~/wjp/AnomalyGPT-main/venv/bin/activate"echo" pip install -r /mnt/backup/pip_packages_${BACKUP_DATE}.txt"echo""echo" 4. 重装 NVIDIA 驱动和 CUDA(从官网下载)"echo" https://developer.nvidia.com/cuda-downloads"echo""

四、使用方法

# 1. 把脚本里的 YOUR_USERNAME 和 YOUR_PASSWORD 换成你的 NAS 凭据vimbackup.sh# 2. 运行chmod+x backup.shbashbackup.sh

运行过程中你会看到:

[1/6] 清理可恢复文件... [OK] 清理完成,当前磁盘空间: /dev/nvme0n1p2 457G 410G 24G 95% / [2/6] 挂载 NAS 网络盘... [OK] NAS 挂载成功 [3/6] 开始打包备份(可能需要 1-2 小时)... wjp/ wjp/AnomalyGPT-main/ wjp/AnomalyGPT-main/code/ ... (大量文件列表滚动...) [4/6] 验证备份文件... 文件大小: 191G 包含文件数: 152347 [OK] 备份文件完整性验证通过 [5/6] 保存 Python 环境信息... [OK] Python 包列表已保存 [6/6] 卸载 NAS... [OK] NAS 已安全卸载 ========================================== 备份完成! 文件: /mnt/backup/backup_myfiles_20260624.tar.gz 大小: 191G ==========================================

五、核心思路总结

这个备份方案的精华不在于脚本本身,而在于分类决策框架:

三类文件的判定规则

┌──────────────────────────────────────────────────┐ │ │ │ 文件能通过"一条命令"恢复吗? │ │ │ │ YES ──→ 删除,省空间 │ │ NO ──→ 必须备份 │ │ YES 但太慢 ──→ 也备份(时间也是成本) │ │ │ └──────────────────────────────────────────────────┘

实际应用

场景例子判定操作
训练出来的模型权重step_420000.pt花了 51 小时才训练出来,无法恢复✅ 备份
Stable Diffusion 模型v1-5-pruned.safetensors能重新下载但需 30 分钟✅ 备份
CUDA 安装包cuda_12.8.runNVIDIA 官网 2 分钟下载❌ 删除
Python 缓存__pycache__/运行python xx.py自动生成❌ 删除
项目源码AnomalyGPT/git clone能恢复✅ 备份(含自己的改动)
SSH 密钥.ssh/id_rsa无法恢复,丢了要重新配所有服务器✅ 备份
shell 历史.bash_history记录了所有操作命令✅ 备份

关键决策点:大模型文件备份 vs 重下载

ComfyUI 的 SD 模型(49GB): 方案A:不备份,重装后花2小时重新下载 方案B:备份,多占49GB压缩空间 我选B。因为: - NAS 有几百 GB 空余 → 空间不是瓶颈 - HuggingFace 下载速度不稳定(国内可能限速) - 2 小时能省下来做别的事

网络盘 vs 移动硬盘

NAS移动硬盘
速度千兆局域网 ~100MB/sUSB 3.0 ~100MB/s
额外设备不需要要插拔
故障风险低(RAID)摔一下就坏
适合长期备份临时拷贝

六、常见问题

Q1:tar 包 191GB,NAS 能放下吗?

先确认 NAS 剩余空间。Windows 共享文件夹右键 → 属性就能看。我的 NAS 有 1TB 空余,完全够。

Q2:挂载报Permission denied?

两个原因:

  1. 用户名密码不对→ 这是最常见的原因。Windows 共享如果用的是 Microsoft 账户登录,用户名是邮箱格式
  2. 目录权限→ 加上dir_mode=0777,file_mode=0777参数
# 如果是 Microsoft 账户sudomount-tcifs //192.168.6.197/wjp/ubuntu24.04 /mnt/backup\-ousername=your@email.com,password=xxx,dir_mode=0777,file_mode=0777

Q3:备份到一半断了怎么办?

tar不会断点续传。保险做法是分段打包:

# 把大文件分几个小包tar-czvf/mnt/backup/backup_part1.tar.gz wjp/ComfyUI/tar-czvf/mnt/backup/backup_part2.tar.gz wjp/AnomalyGPT-main/# ...

Q4:恢复后 ComfyUI 跑不起来怎么办?

大概率是 Python 虚拟环境路径变了。重建 venv 即可:

python3.10-mvenv ~/ComfyUI/venvsource~/ComfyUI/venv/bin/activate pipinstall-r~/ComfyUI/requirements.txt

备份的本质不是"复制文件",而是"识别不可恢复的投入"。模型权重是电费+时间换来的,一行脚本是思路的沉淀——这些才是真正该保护的东西。

相关新闻

  • 自定义 OpenSpec 步骤改进 AI 生成结果
  • RAG实战指南:构建可落地的检索增强生成系统
  • 【VMware+K8s双栈架构终极手册】:打通vCenter API自动化纳管、Tanzu Kubernetes Grid深度集成与GitOps交付流水线

最新新闻

  • MC9S08FL16 SCI模块配置与UART通信实战指南
  • 横向平均算子与商空间上同调:对称性约化中的几何分析实用指南
  • 【软工方法论32】分层架构详解与实践
  • 深入解析PCIe配置空间:从Type 0/Type 1寄存器到MPC8315E实战
  • MC9S08QA4 ADC配置实战:从寄存器详解到低功耗传感器采集
  • vSphere底层启动失败?ESXi安装报错全解密(21种Error Code速查表,含日志定位口诀)

日新闻

  • Qwen2.5-Turbo百万上下文实战指南:百炼平台长文本处理全解析
  • 怎么监控对标账号更新,2026年作者监控工作流,5款深度对比
  • EdgeRemover:专业级Windows Edge浏览器管理工具,彻底解决顽固软件卸载难题

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号