Linux tar:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
无编辑摘要
→‎Note
 
(未显示2个用户的4个中间版本)
第1行: 第1行:
===Q: 目录中的文件未修改,打包压缩后MD5不同===
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 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 24 04:00 pangolin_20220724.tar.gz
第7行: 第48行:
  93aa0e9ea72aa9dbbd5b8ef4ef5838bd pangolin_20220724.tar.gz
  93aa0e9ea72aa9dbbd5b8ef4ef5838bd pangolin_20220724.tar.gz
  1d924a38da3fc3ca0af085f832624890 pangolin_20220725.tar.gz
  1d924a38da3fc3ca0af085f832624890 pangolin_20220725.tar.gz
===A: gzip 压缩时,默认保存原来的文件名称及时间戳===
* W: gzip 压缩时,默认保存原来的文件名称及时间戳
*将 tar -czvf 分为两步,打包,压缩,而 gzip 时增加参数:-n 即可不保存原来的文件名称及时间戳
* A: 将 tar -czvf 分为两步,打包,压缩,而 gzip 时增加参数:-n 即可不保存原来的文件名称及时间戳
#tar -cvf /u01/source/${PT}_${DAYID}.tar /home/bi/${PT}/ --exclude-from /home/bi/${PT}/excludelist
tar -cvf /u01/source/${PT}_${DAYID}.tar /home/bi/${PT}/ --exclude-from /home/bi/${PT}/excludelist
#gzip -n /u01/source/${PT}_${DAYID}.tar
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 等
 
[[分类:Develop]]
[[分类:Develop]]
[[分类:Linux]]
[[分类:Linux]]

2024年9月30日 (一) 14:00的最新版本

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 等