开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第22天,点击查看活动详情
一、命令详解
1.1【功能说明】
在Linux系统里,tar是将多个文件打包在一起,并且可以实现解压打包文件的命令。是系统管理员最常用的命令之一,tar命令不但可以实现对多个文件进行打包,还可以对打包后的文件进行压缩。由于tar的使用太广泛了,目前Windows的WinRAR也支持.tar.gz文件名的解压缩。
打包是指将一大堆文件或目录变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
1.2【语法格式】
[root@7bfe451a2fe1 ~]# tar --help
Usage: tar [OPTION...] [FILE]...
GNU `tar' saves many files together into a single tape or disk archive, and can
restore individual files from the archive.
1.3【选项说明】
tar的选项与参数非常多,这里只列举几个常用的选项。
-c创建新的tar包,可搭配-v来查看过程中打包的文件名-v显示详细的tar命令执行过程-f指定压缩文件的名字-t不解压查看tar包的内容,重点在于查看文件名-x解开tar包,可搭配-C在特定目录解开-z通过gzip的支持进行压缩或解压,此时文件名最好为 *.tar.gz-j通过bzip2的支持进行压缩或解压,此时文件名最好为 *.tar.bz2-J通过xz的支持进行压缩或解压,此时文件名最好为 *.tar.xz-f filename指定压缩文件的名字,建议 -f 单独写一个选项,不会忘记-C dir指定解压的目录路径-p 小写保持文件的原有权限与属性,常用于备份(-c)重要的配置文件-P 大写以绝对路径打包,亦即允许备份数据中含有根目录存在,危险参数--exclude=PATTERN打包时排队不需要处理的文件或目录-h打包软链接文件指向的真实源文件--hard-dereference打包硬链接文件
说明
-c -t -x不可以同时出现在一串命令行中-z -j -J不可同时出现在一串命令行中
二、使用范例
2.1 压缩,备份站点目录
# 准备一下测试数据
mkdir -p /var/www/html
touch /var/www/html/{1..10}.html
ls -l /var/www/html
# 进入到目标目录的上一级目录进行打包
cd /var/www/
# 打包
tar -czvf www.tar.gz ./html/
ls -l
2.2 查看,查看压缩包的内容
tar -tzvf www.tar.gz
# 注:z可不指定,此时tar命令会自动判断压缩包的类型,自动调用gzip命令
2.3 解压,解开压缩包
tar -xzvf www.tar.gz -C /tmp/html
2.4 排除打包
# 排除2个以上目录或文件的方法:并列使用多个--exclude
tar -czvf www.tar.gz ./html/ --exclude=html/1.html --exclude=html/2.html
# 将需要排除的所有目录或文件名放在一个文件中 list.txt
# 使用-X参数接上要排除的文件列表
tar -czvf www.tar.gz -X list.txt ./html
2.5 打包链接文件
tar -czvf local_h.tar.gz -h /etc/rc.local
2.6 打包/etc目录下所有的普通文件
tar czvf etc.tar.gz `find /etc/ -type f`
三、扩展知识
3.1 解决tar使用--exclude选项时遇到的问题
- 若需要打包的目录为相对路径,则--exclude后只能接相对路径
- 若需要打包的目录为绝对路径,则--exclude后既能接绝对路径也能接相对路径
- 为避免出错,--exclude的后接路径和打包路径应保持一致
3.2 打包经验技巧
- 在打包一个目录前,先进入到这个目录的上一级目录,然后执行打包命令,这是大部分情况下打包文件的规范操作流程。少数情况下打包需要完整的目录结构时,也可以使用绝对路径打包,但是需要注意的是解压tar包时压缩包内的文件是否会覆盖原始文件
- 打包模型为:
tar -czvf /路径/筐.tar.gz 相对路径/苹果。打包其实就是把苹果放筐里
四、命令总结
- 2022/12/18 打包其实就是把苹果放筐里