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

📅 2026/6/26 8:59:04
不备份整个 Linux 系统,如何完成开发环境的迁移?——三步法精简备份到 NAS 一条脚本完成
Ubuntu 24 降级 22250GB 深度学习环境全量备份到 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 项目源码模型数据集checkpoint55G /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 的磁盘空余。本地备份不可能。解决思路三步走分类——哪些必须备份哪些可从网上下载哪些是系统缓存可丢弃选目标——NAS 网络盘局域网 //192.168.6.197自动化——一条脚本完成清理→挂载→备份→验证全流程二、分类策略什么该备份、什么该丢弃这是最重要的设计——删对了省空间删错了丢成果。规则很简单问自己这个文件没了我能不能通过一条命令恢复文件/目录大小能命令恢复备份理由wjp/项目源码模型训练checkpoint160GB❌ 训练了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.04MOUNT_POINT/mnt/backupBACKUP_FILE${MOUNT_POINT}/backup_myfiles_${BACKUP_DATE}.tar.gzechoecho Ubuntu 24 深度学习环境备份echo 日期:$BACKUP_DATEecho 目标:$NAS_PATHecho# # 第1步清理可重新下载的文件释放本地空间加快压缩# echoecho[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# echoecho[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_POINTfi# 挂载 NAS替换 username 和 password 为你的 NAS 凭据sudomount-tcifs$NAS_PATH$MOUNT_POINT\-ousernameYOUR_USERNAME,passwordYOUR_PASSWORD,dir_mode0777,file_mode0777# 验证挂载ifmount|grep-q$MOUNT_POINT;thenecho[OK] NAS 挂载成功ls$MOUNT_POINT|head-5elseecho[FAIL] NAS 挂载失败请检查:echo 1. NAS 是否开机echo 2. IP 地址是否正确:$NAS_PATHecho 3. 用户名密码是否正确exit1fi# # 第3步打包备份核心步骤# echoecho[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步验证备份完整性# echoecho[4/6] 验证备份文件...# 显示文件大小FILE_SIZE$(du-sh$BACKUP_FILE|cut-f1)echo 文件大小:$FILE_SIZE# 测试 tar 包是否完整列出前20个文件iftar-tzf$BACKUP_FILE/dev/null21;thenFILE_COUNT$(tar-tzf$BACKUP_FILE|wc-l)echo 包含文件数:$FILE_COUNTecho 前20个文件:tar-tzf$BACKUP_FILE|head-20echo[OK] 备份文件完整性验证通过elseecho[FAIL] 备份文件可能损坏请检查 NAS 空间和网络连接exit1fi# # 第5步保存 Python 包列表重装后恢复环境用# echoecho[5/6] 保存 Python 环境信息...pip freeze~/pip_packages.txt# 也复制一份到 NAScp~/pip_packages.txt${MOUNT_POINT}/pip_packages_${BACKUP_DATE}.txtecho[OK] Python 包列表已保存# # 第6步卸载 NAS# echoecho[6/6] 卸载 NAS...sudoumount$MOUNT_POINTecho[OK] NAS 已安全卸载# # 完成# echoechoecho 备份完成echo 文件:$BACKUP_FILEecho 大小:$FILE_SIZEechoechoecho后续操作指南:echoecho 1. 制作 Ubuntu 22.04 启动盘用 Rufus 或 balenaEtcherecho 2. 从 U 盘启动 → 安装 Ubuntu 22.04echo 3. 安装完成后恢复文件echoecho # 挂载 NASecho sudo mkdir -p /mnt/backupecho sudo mount -t cifs$NAS_PATH/mnt/backup\\echo -o usernameYOUR_USERNAME,passwordYOUR_PASSWORDechoecho # 解压到 home 目录echo tar -xzvf$BACKUP_FILE-C ~/echoecho # 恢复 Python 环境echo python3.10 -m venv ~/wjp/AnomalyGPT-main/venvecho source ~/wjp/AnomalyGPT-main/venv/bin/activateecho pip install -r /mnt/backup/pip_packages_${BACKUP_DATE}.txtechoecho 4. 重装 NVIDIA 驱动和 CUDA从官网下载echo https://developer.nvidia.com/cuda-downloadsecho四、使用方法# 1. 把脚本里的 YOUR_USERNAME 和 YOUR_PASSWORD 换成你的 NAS 凭据vimbackup.sh# 2. 运行chmodx 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摔一下就坏适合长期备份临时拷贝六、常见问题Q1tar 包 191GBNAS 能放下吗先确认 NAS 剩余空间。Windows 共享文件夹右键 → 属性就能看。我的 NAS 有 1TB 空余完全够。Q2挂载报Permission denied两个原因用户名密码不对→ 这是最常见的原因。Windows 共享如果用的是 Microsoft 账户登录用户名是邮箱格式目录权限→ 加上dir_mode0777,file_mode0777参数# 如果是 Microsoft 账户sudomount-tcifs //192.168.6.197/wjp/ubuntu24.04 /mnt/backup\-ousernameyouremail.com,passwordxxx,dir_mode0777,file_mode0777Q3备份到一半断了怎么办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备份的本质不是复制文件而是识别不可恢复的投入。模型权重是电费时间换来的一行脚本是思路的沉淀——这些才是真正该保护的东西。