在Linux上,压缩和解压缩包命令中使用最多的tar命令。 tar命令是在Unix/Linux系统上备份文件的可靠方法,几乎可在任何环境中运行,并且可供所有用户使用。 使用tar的参数必须区分大小写,参数写错的结果差异很大。
0x01 tar语法必须注意tar -[参数] [路径] #命令的“空间”和“-”。
0x02 tar参数--a或--catenate #将文件添加到现有备份文件中。
-b或--blocking-factor=#设置每个记录的块数。 每个块大小为12字节。
-B或- -读取完整记录#读取数据时重置块大小。
-c或- -创建#创建新的备份文件。
-C或- -目录=#切换到指定目录。
-d或--diff或--compare #比较备份文件中的文件和文件系统上的文件之间的差异。
-f或--file=#指定备份文件。
-F
-g或- -列出的增量#处理GNU格式的大量备份。
-G或- -增量#处理旧GNU格式的大量备份。
-h或--dereference #直接复制该连接指向的原始文件,而不建立符号连接。
-i或--ignore-zeros #将忽略备份文件的0字节块,即EOF。
解压缩-k或--keep-old-files #备份文件时,不复盖现有文件。
-K文件或--starting-file=文件#从指定文件恢复。
-l或--one-file-system #复制的文件或目录中存储的文件系统必须与执行tar命令的文件系统相同,才能被复制。
将-L介质容量或-tape-length=每个介质容量#的容量设置为1024字节。
使用-m或--modification-time #恢复文件时,不会更改文件的更改时间。
-M或- -多卷#在创建、恢复备份文件或列出其内容时使用多卷帐簿模式。
-N日期格式或--newer=日期和时间#仅将比指定日期新的文件保存到备份文件。
-o或--old-archive或--portability #在将数据写入备份文件时使用V7格式。
将从-O或--stdout #备份文件中恢复的文件输出到标准输出设备。
-p或--same-permissions #使用原始文件权限恢复文件。
-P或--absolute-names #文件名使用绝对名称,不删除文件名前面的'/'号。
-r或--append #将文件添加到现有备份文件的末尾。
-R或- -列出--block-number #备份文件中每个信息的块号。
-s或--same-order #恢复文件的顺序与备份文件中的保存顺序相同。
如果-S或--sparse #文件包含大量连续的0字节,请将该文件另存为稀疏文件。
-t或- -列出--list #备份文件的内容。
-T模板文档或--files-from=模板文档#指定包含一个或多个模板样式的模板文档,使tar能够解压缩或创建符合配置条件的文档。
-u或--update #仅替换比备份文件中的文件更新的文件。
解压缩-U或--unlink-first #压缩文件并恢复文件之前,断开文件连接。
显示-v或--verbose #命令执行进程。
使用-V卷名称或--label=卷名称#指定的卷名称创建备份文件。
如果-w或--interactive #出现问题,请首先询问用户。
将-W或--verify #写入备份文件后,验证文件是否正确。
-x或--extract或--get #从备份文件中恢复文件。
-X模板文档或--exclude-from=模板文档#指定包含一个或多个模板样式的模板文档,以排除ar满足配置条件的文档。
-z或--gzip或--ungzip #使用gzip命令处理备份文件。
-Z或--compress或--uncompress #使用compress命令处理备份文件。
-设备编号存储密度#设置备份用外围设备编号和存储数据的密度。
--after-date=日期和时间#指定此参数的效果'
-N"参数相同。--atime-preserve # 不变更文件的存取时间。
--backup=<备份方式>或--backup # 移除文件前先进行备份。
--checkpoint # 读取备份文件时列出目录名称。
--concatenate # 此参数的效果和指定"-A"参数相同。
--confirmation # 此参数的效果和指定"-w"参数相同。
--delete # 从备份文件中删除指定的文件。
--exclude=<范本样式> # 排除符合范本样式的文件。
--group=<群组名称> # 把加入设备文件中的文件的所属群组设成指定的群组。
--help # 在线帮助。
--ignore-failed-read # 忽略数据读取错误,不中断程序的执行。
--new-volume-script=
--newer-mtime # 只保存更改过的文件。
--no-recursion # 不做递归处理,也就是指定目录下的所有文件及子目录不予处理。
--null # 从null设备读取文件名称。
--numeric-owner # 以用户识别码及群组识别码取代用户名称和群组名称。
--owner=<用户名称> # 把加入备份文件中的文件的拥有者设成指定的用户。
--posix # 将数据写入备份文件时使用POSIX格式。
--preserve # 此参数的效果和指定"-ps"参数相同。
--preserve-order # 此参数的效果和指定"-A"参数相同。
--preserve-permissions # 此参数的效果和指定"-p"参数相同。
--record-size=<区块数目> # 此参数的效果和指定"-b"参数相同。
--recursive-unlink # 解开压缩文件还原目录之前,先解除整个目录下所有文件的连接。
--remove-files # 文件加入备份文件后,就将其删除。
--rsh-command=<执行指令> # 设置要在远端主机上执行的指令,以取代rsh指令。
--same-owner # 尝试以相同的文件拥有者还原文件。
--suffix=<备份字尾字符串> # 移除文件前先行备份。
--totals # 备份文件建立后,列出文件大小。
--use-compress-program=<执行指令> # 通过指定的指令处理备份文件。
--version # 显示版本信息。
--volno-file=<编号文件> # 使用指定文件内的编号取代预设的卷册编号。
0x03 常用命令详解「整个目录压缩」
tar -zxvf /home/迅速的飞机/web.tar.gz -C /home/迅速的飞机/test
# 将web.tar.gz解压到指定目录test;
tar -cvf /home/迅速的飞机/web.tar /root/web
# 将root/web目录打包为tar格式不压缩,存放在/home/迅速的飞机/
tar -zcvf /home/迅速的飞机/web.tar.gz /root/web
# 将root/web目录打包为tar.gz格式压缩,存放在/home/迅速的飞机/
tar -jcvf /home/迅速的飞机/web.tar.bz2 /root/web
# 将root/web目录打包为tar.bz2格式压缩,存放在/home/迅速的飞机/
「查看压缩包内文件」
tar -ztvf /home/迅速的飞机/web.tar.gz
# 查看web.tar.gz压缩包内文件,使用的gzip格式所以参数需要加入「z」
「解压到当前目录」
tar -zxvf /home/迅速的飞机/web.tar.gz
# 将web.tar.gz解压到当前目录;
「解压压缩包内指定文件到当前目录」
tar -zxvf /home/迅速的飞机/web.tar.gz home/迅速的飞机/test/index.php
# 解压web.tar.gz压缩包内test目录内的index.php,此命令会解压完整路径到当前目录;
「压缩目录保留权限」
tar -zxvpf /home/迅速的飞机/web.tar.gz /root/web
# 将root/web目录压缩后存放在/home/迅速的飞机目录并保留root/web目录所有文件权限
「压缩大于某个日期的文件」
tar -N '2020/01/01' -zcvf /home/迅速的飞机/web.tar.gz /root/web
# 压缩root/web目录内文件创建时间大于2020/01/01的文件;
「压缩目录排除指定目录」
tar --exclude /root/web -zcvf /home/迅速的飞机/test.tar.gz /root/*
# 压缩root目录下所有目录文件排除web目录;存放在home/root/迅速的飞机目录下命名为test.tar.gz;