【go语言】gotar:使用go语言复刻tar命令,并加入7z支持,可独立运行在windows、linux、macos上

gotar

用 Go 实现的跨平台归档工具,兼容常用 tar 命令并支持 gzip / bzip2 / xz / 7z (LZMA2) ,无需系统安装外部压缩程序。

特性

  • 操作:-c 创建 / -x 解压 / -t 列表
  • 格式:-z gzip / -j bzip2 / -J xz / -7 7z(也可根据后缀自动猜测)
  • 常用选项:-f / -v / -C / --exclude
  • 兼容 GNU 风格与传统粘连选项(如 czvf)
  • 纯 Go,无 CGO,支持 Windows / Linux / macOS
  • 解压时防护 Zip Slip(路径穿越)
  • 性能优化:最多 4 路并行 gzip / bzip2 / xz、4MiB IO 缓冲、目录创建缓存、小文件并行写盘
  • 压缩格式默认使用速度优先参数;相比平衡压缩参数,生成文件可能略大

安装

bash 复制代码
go build -o gotar.exe ./cmd/gotar

用法

bash 复制代码
# 打包并 gzip 压缩
gotar -czvf archive.tar.gz mydir/

# 传统写法
gotar czvf archive.tar.gz mydir/

# 列表
gotar -tzvf archive.tar.gz

# 解压到指定目录
gotar -xzvf archive.tar.gz -C outdir

# xz / bzip2
gotar -cJvf archive.tar.xz mydir/
gotar -cjvf archive.tar.bz2 mydir/

# 创建 / 解压 7z(传统粘连选项)
gotar c7vf archive.7z mydir/
gotar x7vf archive.7z -C outdir

# 排除
gotar -czvf a.tar.gz --exclude='*.log' --exclude='tmp/*' mydir/

选项说明

选项 说明
-c 创建归档
-x 解压
-t 列出内容
-f <file> 归档文件(- 表示 stdin/stdout)
-v 详细输出
-z gzip
-j bzip2
-J xz
-7 7z(LZMA2)
-C <dir> create 时相对该目录收集;extract 时解压到该目录
--exclude=<pat> 排除匹配路径(可多次)

未显式指定压缩算法时,会根据文件名后缀猜测:

  • .tar.gz / .tgz → gzip
  • .tar.bz2 / .tbz2 → bzip2
  • .tar.xz / .txz → xz
  • .7z → 7z

开发

bash 复制代码
go test ./...
go build -o gotar.exe ./cmd/gotar

与系统 tar 的差异(首版)

  • 不支持 append / update / 增量备份
  • 不支持 zstd 等额外格式
  • 硬链接在部分平台会降级
  • 符号链接在 Windows 上可能因权限失败并跳过
  • 属主/属组不强制恢复
相关推荐
别动我齐刘海2 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
玖石书3 小时前
Ubuntu 24.04 UFW 全命令攻略:从入门到端口开放实战
linux·运维·ubuntu
xiaoqiMikko4 小时前
Linux 实战(七):useradd、sudoers、umask、SGID、软链 —— 三台真机实测
linux·centos
tachibana25 小时前
使用for range 的时候,它的地址会发生变化吗?
开发语言·后端·golang·go·语法
拂拉氏6 小时前
【知识讲解】 Linux之动静态库的了解
linux·运维·服务器·动静态库
王中阳Go6 小时前
Go 后端转 AI:非科班怎么补?一张 3 列路线表(可保存)
开发语言·人工智能·后端·python·golang·大语言模型
Fcy6486 小时前
Linux下 五种IO模型的认识与⾮阻塞IO的实现
linux·服务器·io
Mikko76 小时前
Linux 重启后日志没了?进程被 OOM 杀了去哪看?logrotate 之后日志还往旧文件写?三台真机实测日志与性能排查
linux·运维·centos
书生执笔画浮沉6 小时前
分享一个开源小工具CAdapt
linux·c·gnu·glibc·kernel·升级·灵感
OliverQiu7 小时前
开源一个 macOS 小工具:集中管理 ChatGPT 的网络启动配置
macos·chatgpt·swiftui·mac·proxy·codex·dmg