Linux tar
跳到导航
跳到搜索
Linux tar(tape archive)是 Linux/Unix 系统中用于归档文件和目录的强大命令行工具。
tar 名字来自 "tape archive"(磁带归档),最初用于将文件打包到磁带设备中,现在广泛用于在文件系统中打包和压缩文件。
tar 通常用于将多个文件和目录打包成一个归档文件,称为 "tarball"(通常带有 .tar 扩展名)。
tar 本身不压缩文件,但可以与压缩工具(如 gzip 或 bzip2)结合使用,创建压缩的归档文件(如 .tar.gz 或 .tar.bz2)。
语法
tar [options] -f archive.tar [files...]
options
- -c:创建一个新的归档文件
- -x:解压归档文件
- -t:列出归档文件的内容
- -r:向现有归档文件中追加文件
- -u:仅追加比归档文件中已有文件更新的文件
- -d:找到归档文件中与文件系统不同步的差异
- -A:将一个 .tar 文件追加到另一个 .tar 文件中
文件选择和排除
- -C<directory>:切换到指定目录进行操作(可用做去除绝对路径)
- --exclude=<pattern>:排除匹配指定模式的文件
- --exclude-from=<file>:从指定文件读取要排除的模式
- --exclude-vcs:排除版本控制系统生成的文件(如 .git、.svn 等)
压缩
- -z:使用 gzip 压缩归档文件
- -J:使用 xz 压缩归档文件
输出
- -v:显示详细操作过程(verbose)
权限
- -p:保留文件的原始权限(解压时)
- --no-same-owner:不设置文件所有者
Note
md5
正常情况下 tar + gzip,即使打包文件未改变,其 md5 也不同。
- Q: 目录中的文件未修改,打包压缩后MD5不同
-rw-r--r-- 1 bi oinstall 561370 Jul 23 04:00 pangolin_20220723.tar.gz -rw-r--r-- 1 bi oinstall 561370 Jul 24 04:00 pangolin_20220724.tar.gz -rw-r--r-- 1 bi oinstall 561370 Jul 25 04:00 pangolin_20220725.tar.gz 857c2b83550839a8f2c1df202c197c35 pangolin_20220723.tar.gz 93aa0e9ea72aa9dbbd5b8ef4ef5838bd pangolin_20220724.tar.gz 1d924a38da3fc3ca0af085f832624890 pangolin_20220725.tar.gz
- W: gzip 压缩时,默认保存原来的文件名称及时间戳
- A: 将 tar -czvf 分为两步,打包,压缩,而 gzip 时增加参数:-n 即可不保存原来的文件名称及时间戳
tar -cvf /u01/source/${PT}_${DAYID}.tar /home/bi/${PT}/ --exclude-from /home/bi/${PT}/excludelist gzip -n /u01/source/${PT}_${DAYID}.tar
去除目录前缀
# 将 /root/log/monitor/202408/ 下文件打包,不含任何目录 tar -czvf monitor_202408.tar.gz -C/root/log/monitor/202408/ . # 将 /root/log/monitor/202408/ 下文件打包,含 202408 目录 tar -czvf monitor_202408.tar.gz -C/root/log/monitor/ 202408/. # 暂未发现如何选取文件,如:*.log 等