Linux管理脚本

单目录智能压缩解压

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

使用说明

该脚本是一个功能完整的大容量单目录分卷压缩、解压工具,具有以下特点:

  1. 支持三种压缩算法:gzip、zstd(推荐)、xz
  2. 支持三种操作模式:创建压缩包、解压、验证完整性
  3. 自动检测压缩格式,无需手动指定算法
  4. 提供分卷校验和验证,确保数据完整性
  5. 彩色日志输出,包含时间戳,便于跟踪和审计

基本用法

命令格式

1
./tar_single.sh -[操作方式][压缩算法] [操作对象]

参数说明

  • 操作方式
    • c:创建压缩包
    • x:解压压缩包(自动检测格式)
    • t:测试压缩包完整性(自动检测格式)
  • 压缩算法(仅创建时需要):
    • z:gzip(默认)
    • s:zstd(推荐,速度快)
    • o:xz(压缩比高)

使用示例

1
2
3
4
5
6
7
8
9
10
11
12
# 创建压缩包(使用不同算法)
./tar_single.sh -cz /path/to/data # gzip压缩
./tar_single.sh -cs /path/to/data # zstd压缩(推荐)
./tar_single.sh -co /path/to/data # xz压缩

# 解压操作(自动检测格式)
./tar_single.sh -x /path/to/archive_dir # 解压目录中的压缩包
./tar_single.sh -x /path/to/archive.tar.zst.part00 # 解压分卷压缩包

# 测试完整性(自动检测格式)
./tar_single.sh -t /path/to/archive_dir # 测试目录中的压缩包
./tar_single.sh -t /path/to/archive.tar.gz.part00 # 测试分卷压缩包

关键特性

  • 解压和测试时自动识别压缩格式,无需指定算法参数
  • 提供详细的带时间戳的日志输出,便于问题排查
  • 默认使用并行压缩工具,处理大文件时效率更高

存档批量压缩

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

使用说明

智能压缩指定目录内文件数量较多的文件夹,自动根据目录深度和文件数量应用不同压缩规则,并排除文档、图片、视频、音频等特定文件类型,这个脚本特别适合处理日志目录、临时文件目录、上传目录等包含大量小文件的场景,能有效减少inode使用量,提升文件系统性能。

基本用法

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

使用示例

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

压缩规则

  1. 深度 < 4:不含排除文件类型,文件数50-100 → 压缩
  2. 深度 = 4:不含排除文件类型,文件数 > 50 → 压缩
  3. 深度 > 4:无条件压缩
  4. 搜索深度:仅处理深度3-5的目录

排除的文件类型

  • 文档:.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/ 文件夹(内含分卷文件)

脚本执行期间,终端会单行显示当前正在压缩的文件名。
脚本会在目标目录生成带时间戳的日志文件。

存档批量压缩

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

使用说明

本脚本主要用于在服务器端直接查看统计SVN代码仓库的信息,无需通过客户端连接。适用于系统管理员、运维人员或开发人员直接访问SVN服务器文件系统,快速获取代码仓库的相关信息。包括以下功能:

  1. 目录内容查看

    • 查看SVN仓库的目录结构
    • 仅显示指定目录的第一层内容(非递归)
    • 区分显示目录和文件
  2. 代码修改历史查询

    • 查看指定文件或目录的所有修改记录
    • 显示每次修改的版本号、作者、时间、提交信息
    • 查看具体的文件变更操作(添加、删除、修改等)
  3. 代码提交统计分析

    • 统计指定文件或目录的提交情况
    • 按作者统计提交次数和百分比
    • 显示最早和最晚提交时间
    • 可视化展示提交分布情况

基本用法

命令格式

1
./svn_server_tool.sh <功能> <仓库路径> [目录/文件路径]

参数说明

  1. 功能参数(第一个参数):

    • ls:列出目录内容
    • log:查看修改历史
    • stat:统计提交信息
  2. 仓库路径(第二个参数):

    • SVN仓库在服务器上的物理路径
    • 示例:/var/svn/repos/myproject
  3. 目标路径(第三个参数):

    • 对于ls功能:可选,指定要查看的SVN仓库内目录
    • 对于logstat功能:必填,指定要分析的目标路径(SVN仓库内的相对路径)

使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看仓库根目录
./svn_server_tool.sh ls /var/svn/repos/myproject

# 查看指定目录
./svn_server_tool.sh ls /var/svn/repos/myproject /trunk/src

# 查看文件修改历史
./svn_server_tool.sh log /var/svn/repos/myproject /trunk/src/main.java

# 查看目录修改历史
./svn_server_tool.sh log /var/svn/repos/myproject /trunk/src

# 统计文件提交情况
./svn_server_tool.sh stat /var/svn/repos/myproject /trunk/src/main.java

# 统计目录提交情况
./svn_server_tool.sh stat /var/svn/repos/myproject /trunk/src