# tar命令 打包命令, 将多个目录文件打包成一个文件 ## 语法 ``` tar(选项)(参数) ``` ## 选项 ~~~ -A或--catenate:新增文件到以存在的备份文件; -B:设置区块大小; -c或--create:建立新的备份文件; -C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。 -d:记录文件的差别; -x或--extract或--get:从备份文件中还原文件; -t或--list:列出备份文件的内容; -z或--gzip或--ungzip:通过gzip指令处理备份文件; -Z或--compress或--uncompress:通过compress指令处理备份文件; -f<备份文件>或--file=<备份文件>:指定备份文件; -v或--verbose:显示指令执行过程; -r:添加文件到已经压缩的文件; -u:添加改变了和现有的文件到已经存在的压缩文件; -j:支持bzip2解压文件; -v:显示操作过程; -l:文件系统边界设置; -k:保留原有文件不覆盖; -m:保留文件不被覆盖; -w:确认压缩文件的正确性; -p或--same-permissions:用原来的文件权限还原文件; -P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号; -N <日期格式> 或 --newer=<日期时间>:只将较指定日期更新的文件保存到备份文件里; --exclude=<范本样式>:排除符合范本样式的文件。 ~~~ ## 参数 - 保存文件名 - 欲打包目录/文件 ## 示例 仅打包不压缩,c=创建,v=输出过程,f=备份文件 tar -cvf woc.tar logs.log 打包并以gzip压缩 tar -zcvf woc.tar.gz logs.log 打包并以bzip2压缩 tar -jcvf woc.tar.bz2 logs.log 列出文件 tar -tvf woc.tar tar -ztvf woc.tar.gz # *.tar.gz 是经过gzip压缩的, 所以带上z 解压缩 tar -zxvf woc.tar.gz tar -zxvf woc.tar.gz hello.cpp # 仅解压hello.cpp tar -zxvf woc.tar.gz -C /home/edk24/ # 加-C 指定到的目录 ## 记忆方法 ~~~ 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 查 询:tar -jtv -f filename.tar.bz2 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录 ~~~ # XZ **xz**是一个使用[LZMA/LZMA2](https://zh.wikipedia.org/wiki/LZMA "LZMA")压缩[算法](https://zh.wikipedia.org/wiki/%E7%AE%97%E6%B3%95 "算法")的[无损数据压缩](https://zh.wikipedia.org/wiki/%E6%97%A0%E6%8D%9F%E6%95%B0%E6%8D%AE%E5%8E%8B%E7%BC%A9 "无损数据压缩")[文件格式](https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F "文件格式")。 ## 解压缩 ```bash # tar -xvJf node-v8.11.1-linux-x64.tar.xz ``` ## 压缩 创建tar ```bash # tar -cvf xxx.tar xxx ``` 再创建`xxxx.tar.xz`文件 ```bash # xz -z xxx.tar ``` 如果要保留`tar`压缩包文件,需要加上参数-k ## 参考 - [https://man.linuxde.net/tar](https://man.linuxde.net/tar)