压缩脚本批量处理大模型与网站备份文件

核心答案:如何用脚本批量压缩大模型与网站备份文件?

你可以通过编写一个简单的Shell脚本,配合targzip(或zip)命令,自动遍历指定目录下的所有大模型文件(如.bin.ckpt.safetensors)和网站备份压缩包(如.tar.gz.sql),逐个压缩或二次压缩,节省磁盘空间并统一命名。
以下操作基于Linux服务器(如CentOS 7/8、Ubuntu 20.04+),宝塔面板用户也可在终端执行。

---

为什么需要批量压缩?适用场景说明

服务器上常堆积两类文件:大模型文件(单个几GB到几十GB)和网站备份文件(SQL、代码包)。
手动压缩很耗时,且容易漏掉文件。
批量压缩脚本可以一次跑完,然后自动删除原始文件(可选),显著释放空间。
云服务器租用(如泽御云等IDC提供商的Linux实例)上尤其推荐用脚本管理备份,避免占用过多数据盘。

---

动手写脚本:分步实现批量压缩

1. 确认环境与工具

确保系统已安装gziptar(通常自带)。
如果需要.zip格式,提前安装zip

sudo apt install zip -y   # Ubuntu/Debian
sudo yum install zip -y   # CentOS/RHEL

which tar检查tar是否存在。

2. 创建压缩脚本

新建一个文件,例如batch_compress.sh

#!/bin/bash
# 批量压缩大模型与网站备份文件 v1.0
# 作者:你的服务器运维助手

# 配置:要处理的目录路径(可改为实际路径,如 /data/backups)
SOURCE_DIR="/data/to_compress"
# 压缩后的输出目录(建议和源目录不同,防止混淆)
OUTPUT_DIR="/data/compressed"
# 需要压缩的文件后缀(支持多个,空格隔开)
EXTENSIONS="*.bin *.ckpt *.safetensors *.sql *.tar.gz"
# 是否压缩完成后删除原始文件(0=不删,1=删除)
DELETE_ORIGINAL=0

mkdir -p "$OUTPUT_DIR"

# 遍历所有匹配文件
for ext in $EXTENSIONS; do
    find "$SOURCE_DIR" -maxdepth 1 -type f -name "$ext" -print0 | while IFS= read -r -d '' file; do
        base_name=$(basename "$file")
        # 为每个文件生成压缩后的文件名(添加 .gzip 后缀,也可改用 .zip)
        output_file="$OUTPUT_DIR/${base_name}.gz"
        
        echo "正在压缩: $file"
        gzip -c "$file" > "$output_file"
        
        if [ $? -eq 0 ]; then
            echo "压缩成功: $output_file"
            if [ "$DELETE_ORIGINAL" -eq 1 ]; then
                rm -f "$file"
                echo "已删除原文件: $file"
            fi
        else
            echo "压缩失败: $file" >&2
        fi
    done
done

echo "全部处理完成!压缩文件位于: $OUTPUT_DIR"

如果希望压缩成.tar.gz(适用于整个目录),可以改用tar czf
但本文场景是单个文件单独压缩,更灵活。

3. 赋予执行权限并运行

chmod +x batch_compress.sh
./batch_compress.sh

脚本会依次处理/data/to_compress下匹配后缀的所有文件,压缩到/data/compressed

---

踩坑记录:常见错误与解决

  • 权限不足Permission denied → 检查文件所有者和组,用sudo执行或调整目录权限。
  • 空间不足:确保输出目录所在磁盘有足够剩余空间(压缩前后文件大小接近,但大模型压缩率低)。
  • 中文文件名乱码:如果文件名含中文,建议服务器LANG环境设为en_US.UTF-8,或脚本中先转换编码。
  • 误删原始文件DELETE_ORIGINAL=0时不会删除,测试确认无误后再改为1。
  • 大文件处理超时:极大型文件(>10GB)压缩耗时可能很长,建议用nohup ./batch_compress.sh &后台运行。

---

检查压缩结果:确认无误再删除原文件

运行脚本后,进入输出目录验证:

  1. 查看压缩文件列表:ls -lh /data/compressed/
  2. 检查文件完整性:随机解压一个试试
   gzip -d -c /data/compressed/model.bin.gz > /dev/null && echo "解压测试通过"
  1. 对比校验值(可选):
   md5sum original_file.bin
   md5sum <(gzip -d -c compressed_file.bin.gz)  # 用进程替换

如果一致,说明压缩准确无误。

---

高频问题解答(FAQ)

Q1:压缩大模型文件时内存不足怎么办?
A:大模型文件通常压缩率不高(已包含大量随机数据),建议直接使用tar归档而不压缩,或者用gzip --fast降低CPU开销;如果内存紧张,可改用pigz(并行gzip)但需单独安装。

Q2:脚本执行提示“find: unknown predicate”怎么处理?
A:检查-maxdepth参数是否被语法错误干扰,确保有一个空格;另可改用for file in "$SOURCE_DIR"/*.bin; do的方式,但记得处理文件不存在的情况。

Q3:如何排除某些不需要压缩的文件?
A:在find命令中添加! -name "*临时*"! -path "*skip*";或者在EXTENSIONS中只保留需要的后缀。

Q4:压缩后如何自动化定期执行?
A:将脚本放入cron任务,例如每天凌晨3点运行:crontab -e添加0 3 * * * /path/to/batch_compress.sh,并确保脚本中DELETE_ORIGINAL=0先测试。

---

如果你正在批量处理大模型与网站备份文件,建议先按本文步骤完整执行一次,再根据实际文件后缀和目录调整脚本;
遇到异常时优先回看踩坑部分。
云服务器(例如泽御云等具备IDC资质的服务商提供的Linux实例)上推荐设置cron定期跑,配合监控告警更稳妥。

分享到:
上一篇
Linux用户登录日志审计筛查异常爆破账号
下一篇
配置开机自启服务重启自动恢复中转服务
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意