tar命令-打包备份

551 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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

image-20221217232050659.png

2.2 查看,查看压缩包的内容

tar -tzvf www.tar.gz

# 注:z可不指定,此时tar命令会自动判断压缩包的类型,自动调用gzip命令

image-20221218053852283.png

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

image-20221218055037619.png

# 将需要排除的所有目录或文件名放在一个文件中 list.txt
# 使用-X参数接上要排除的文件列表
tar -czvf www.tar.gz -X list.txt ./html

image-20221218055306862.png

2.5 打包链接文件

tar -czvf local_h.tar.gz -h /etc/rc.local

image-20221218061853337.png

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 打包其实就是把苹果放筐里