tar压缩指定目录

黄师傅 2,187 2023-04-13

问题

在打包目录时需要排除一些子目录和指定后缀的文件

解决

编写如下shell脚本

#!/bin/bash

# 指定需要打包的目录
# 在需要打包的目录下执行脚本
source_dir="."

# 指定排除的目录和后缀
exclude_dirs=( "data" "weixin" )
exclude_suffix=( "*.log" "*.txt" )

# 指定输出的压缩文件名
output_file="mydata.tar.gz"

# 生成排除目录的参数
exclude_args=""
for dir in "${exclude_dirs[@]}"; do
  exclude_args="$exclude_args --exclude=$dir"
done

# 生成排除后缀的参数
for suffix in "${exclude_suffix[@]}"; do
  exclude_args="$exclude_args --exclude=$suffix"
done

# 打包压缩
tar -czf "$output_file" $exclude_args "$source_dir"