在使用Linux或macOS日常开发中,熟悉一些基本的命令有助于提高工作效率,tar 是 Linux 和 Unix 系统中用于归档文件和目录的强大命令行工具。tar 名字来自 "tape archive"(磁带归档),最初用于将文件打包到磁带设备中,但现在广泛用于在文件系统中打包和压缩文件。tar 通常用于将多个文件和目录打包成一个归档文件,称为 "tarball"(通常带有 .tar 扩展名)。tar 本身不压缩文件,但可以与压缩工具(如 gzip 或 bzip2)结合使用,创建压缩的归档文件(如 .tar.gz 或 .tar.bz2)。本篇学习记录tarr命令的基本使用。
首先查看帮助文档:
语法格式:tar 参数 压缩包名 文件或目录名
常用参数:
参数 | 参数解释 |
-A | 添加文件到已存在的压缩包 |
-c | 创建新的压缩 |
-C | 解压缩到指定目录 |
-d | 记录文件的差别 |
-f | 指定压缩包文件 |
-j | 使用bzip2压缩格式 |
-l | 设置文件系统边界 |
-m | 保护文件不被覆盖 |
-N | 只将较新日期的文件保存到压缩包中 |
--exclude | 排除指定的文件不压缩 |
--remove-files | 操作完成后删除源文件 |
-p | 保留原来的文件权限与属性 |
-P | 使用绝对路径 |
-t | 显示压缩包的内容 |
-u | 更新压缩包内的文件 |
-w | 确认压缩包的完整性 |
-x | 从压缩包内提取文件 |
-z | 使用gzip压缩格式 |
--help | 显示帮助信息并退出 |
--version | 显示版本信息并退出 |
例用示例
1.打包一个目录,命名为test.tar,并不压缩。
tar -cf test.tar tardir
2.解压tar包。如果只是使用-cf参数解压,则解压把原来的文件覆盖掉,例如tar -xf test.tar,则解压后会在tardir目录下,如果不想覆盖原有内容,则可以使用-C参数指定解压目录。例如:
tar -C ./test -xf test.tar
3.使用-t参数查看tar的内容
tar -tf test.tar
4.使用-v参数显示执行过程,例如查看tar的内容tar -tvf test.tar
也可以显示打包的过程tar -cvf cptest.tar
5.使用-A参数把文件追加到一个压缩包中。同时也要使用-u更新文件的内容。例如:
tar -Afu test.tar cptest.tar
6.-d记录文件的差别
7.-m 保护文件不被覆盖
8.-w 确认压缩包的完整性
9.-j使用bzip2压缩格式,例如:tar -cjvf cptest.tar.bz2 cptest
解压.tar.bz2文件,并显示执行过程 tar -xvjf cptest.tar.bz2
10.-z使用gzip压缩格式,例如:tar -czvf cptest.tar.gz cptest
解压.tar.gz文件,并显示执行过程 tar -xvzf cptest.tar.gz
11.-p 保留原来的文件权限与属性
12.-P 使用绝对路径
tar -czpvf /home/scott/trunk/command2/test.tar.gz -P /home/scott/trunk/command2/tardir
13.--exclude排除指定的文件不压缩
tar -cvf cptest.tar --exclude='cp_a.txt' ./cptest
排除cp_v.txt cp_a.txt两个文件示例
tar -cvf cptest2.tar --exclude='cp_a.txt' --exclude='cp_v.txt' ./cptest
14.--remove-files操作完成后删除源文件
tar -cvf tardir.tar --remove-files ./tardir/
参考:
https://www.runoob.com/linux/linux-comm-tar.html
https://www.linuxcool.com/tar
https://ipcmen.com/tar
https://man.linuxde.net/tar