tar 文件压缩解压工具

发布时间: 更新时间: 总字数:516 阅读时间:2m 作者: IP上海 分享 网址

Linux使用tar命令进行文件压缩解压工具

介绍

tarTape Archive 的缩写

tar.gz

  • -z filter the archive through gzip
tar -czvf abc_$(date +%s).tgz abc --exclude=abc/logs
  • 文件压缩、解压并分割成指定大小
# 分片
split -b 4000M -d -a 1 abc.tar.gz abc.tar.gz.
  • -b 4000M 设置每个分割包的大小,单位还是可以K
  • -d 指定生成的分割包后缀为数字的形式
  • -a 1 设定序列的长度(默认值是2),即生成 abc.tar.gz.0-..
tar -zcvf abc.tar.gz abc | split -b 4000M -d -a 1 - abc.tar.gz.
  • - 表示将所创建的文件输出到标准输出上
# 分割后的压缩包解压命令
cat abc.tar.gz.* | tar -zxv
  • tar 跨目录打包(打好的包不包含目录)
$ ls /data
file1 file2
$ pwd
/root

$ tar -C /data  -cvf  /tmp/z.tar.gz file1 file2
  • -t 查看压缩包内容
tar -tvf xxx.tar.bz
  • 解压部分文件
# 解压单个文件
tar -zxvf xxx.tar.gz logs/nginx.log

# 解压多个文件
tar -zxvf xxx.tar.gz logs/nginx.log.* [-C <dir>]
  • 将执行 tar 命令的用户作为解压后的文件的所有者
tar --no-same-owner -zxvf xxx.tar.gz

tar.xz

xz 的压缩率更高

# 压缩
tar -cJf xx.tar.xz xx/
tar -vcJf xx.tar.xz xx/

# 解压
tar -xf xx.tar.xz
tar -xvf xx.tar.xz

tar.jz

  • -j filter the archive through bzip2
# 压缩
tar jcvf xxx.tar.bz2 xxx/

# 解压
tar jxvf xxx.tar.bz2

# 查看文件列表
tar -tf xxx.tar.bz2

多进程打包

apt install pigz -y

# 压缩
tar --use-compress-program=pigz -cvpf xxx.tar.gz ./*

# 解压
tar --use-compress-program=pigz -xvpf xxx.tar.gz

Python tarfile 内存加压

  • 使用Python标准库中的 tarfile 模块,可以直接从内存中获取 tar 文件中的内容,而无需先解压到本地
  • 示例代码
import tarfile

# 打开tar包文件
tar = tarfile.open("archive.tar.gz", "r:gz")

# 获取特定文件内容
f = tar.extractfile("path/to/file")
file_content = f.read()

# 或遍历所有文件
for member in tar.getmembers():
  f = tar.extractfile(member)
  # do something with file object

tar.close()

说明

  • 使用 tarfile.open 打开 tar 包文件
  • 调用 extractfile 方法获取文件对象
  • 直接从文件对象中读入内容到变量
  • 或循环获取每个成员文件的文件对象

参考

  1. https://zh.wikipedia.org/wiki/Tar
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数