存档批量压缩

1
wget -qO- https://haies.cn/assets/tar_batch.sh

使用说明

智能压缩指定目录内文件数量较多的文件夹,自动根据目录深度和文件数量应用不同压缩规则,并排除文档、图片、视频、音频等特定文件类型。

该脚本特别适合处理日志目录、临时文件目录、上传目录等包含大量小文件的场景,能有效减少 inode 使用量,提升文件系统性能。

基本用法

1
./tar_batch.sh [目标目录]
  • 目标目录:可选参数,不指定时默认处理脚本所在目录
  • 处理深度:3-5 级目录,按从浅到深顺序

使用示例

1
2
./tar_batch.sh                 # 压缩当前目录
./tar_batch.sh /path/to/data # 压缩指定目录

相关说明

压缩规则

目录深度 条件 操作
< 4 不含排除文件类型,文件数 50-100 压缩
= 4 不含排除文件类型,文件数 > 50 压缩
> 4 无条件 压缩

排除的文件类型

  • 文档:.txt .pdf .doc .docx .xls .xlsx .ppt .pptx .odt .md .rtf
  • 图片:.jpg .jpeg .png .gif .bmp .tiff .svg .webp
  • 视频:.mp4 .avi .mov .mkv .flv .wmv .m4v .webm
  • 音频:.mp3 .wav .flac .aac .ogg .m4a .wma

输出说明

执行后,符合条件的目录会被压缩,并在同级位置生成:

  • 单卷包目录名.tar.gz
  • 多卷包目录名_archive/ 文件夹(内含分卷文件)

特性说明

  • 终端实时显示当前正在压缩的文件名
  • 在目标目录生成带时间戳的日志文件