显示行号
|
选择喜欢的代码风格
默认
GitHub
Dune
LakeSide
Plateau
Vibrant
Blue
Eighties
Tranquil
tar 命令创建、维护、修改和提取以 tar 格式存档的文件。“Tar”代表磁带存档。 它是一种归档文件格式。tar 最初是在 Unix 早期开发的,目的是将文件备份到基于磁带的存储设备。 它后来被形式化为 POSIX 标准的一部分,现在用于收集,分发和归档文件,同时保留文件系统属性,例如用户和组权限,访问和修改日期以及目录结构。
tar 命令安装:
-bash/zsh: tar command not found
#Debian
apt-get install tar
#Ubuntu
apt-get install tar
#Alpine
apk add tar
#Arch Linux
pacman -S tar
#Kali Linux
apt-get install tar
#CentOS
yum install tar
#Fedora
dnf install tar
#Raspbian
apt-get install tar
#Docker
docker run cmd.cat/tar tar
tar 命令补充说明:
tar 命令可以为 Linux 的文件和目录创建档案。利用 tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于 Linux 中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar 命令),然后再用压缩程序进行压缩(gzip bzip2 命令)。
tar 命令语法:
tar [-] A --catenate --concatenate | c --create | d --diff --compare |
--delete | r --append | t --list | --test-label | u --update |
x --extract --get [options] [pathname ...]
tar 命令选项:
-A或--catenate:新增文件到以存在的备份文件;
-B:设置区块大小;
-c或--create:建立新的备份文件;
-C [目录]:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项;
-d:记录文件的差别;
-x或--extract或--get:从归档文件中提取文件,可以搭配-C(大写)在特定目录解开,
需要注意的是-c、-t、-x不可同时出现在一串命令中;
-t或--list:列出备份文件的内容;
-z或--gzip或--ungzip:通过gzip指令压缩/解压缩文件,文件名最好为 *.tar.gz;
-Z或--compress或--uncompress:通过compress指令处理备份文件;
-f[备份文件]或--file=[备份文件]:指定备份文件;
-v或--verbose:显示指令执行过程;
-r:添加文件到已经压缩的文件;
-u:添加改变了和现有的文件到已经存在的压缩文件;
-j:通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2;
-v:显示操作过程;
-l:文件系统边界设置;
-k:保留原有文件不覆盖;
-m:保留文件不被覆盖;
-w:确认压缩文件的正确性;
-p或--same-permissions:保留原来的文件权限与属性;
-P或--absolute-names:使用文件名的绝对路径,不移除文件名称前的“/”号;
-N [日期格式] 或 --newer=[日期时间]:只将较指定日期更新的文件保存到备份文件里;
--exclude=[范本样式]:排除符合范本样式的文件;
--remove-files:归档/压缩之后删除源文件
tar 命令参数:
文件或目录:指定要打包的文件或目录列表。
tar 命令实例:
- z:有gzip属性的
- j:有bz2属性的
- Z:有compress属性的
- v:显示所有过程
- O:将文件解开到标准输出
下面的参数 -f 是必须的:
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
tar -cf all.tar *.jpg
# 这条命令是将所有 .jpg 的文件打成一个名为 all.tar 的包。-c 是表示产生新的包,-f指定包的文件名。
tar -rf all.tar *.gif
# 这条命令是将所有 .gif 的文件增加到 all.tar 的包里面去。-r 是表示增加文件的意思。
tar -uf all.tar logo.gif
# 这条命令是更新原来tar包 all.tar 中 logo.gif 文件,-u 是表示更新文件的意思。
tar -tf all.tar
# 这条命令是列出 all.tar 包中所有文件,-t是列出文件的意思
tar -cfv archive.tar foo bar # 从文件foo和bar创建archive.tar。
tar -tvf archive.tar # 详细列出archive.tar中的所有文件。
tar -xf archive.tar # 从archive.tar提取所有文件。
用 tar 命令,将文件全部打包成 tar 包:
tar -cvf log.tar log2012.log 仅打包,不压缩!
tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩
tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩
解压目录 - 去掉第一层目录结构,要出除第二层,--strip-components 2
tar -xvf portal-web-v2.0.0.tar --strip-components 1 -C 指定目录
用 tar 命令,将 tar 的包解压缩 :
tar -zxvf /opt/soft/test/log.tar.gz
tar 命令的坑:
遇到错误提示:tar: Removing leading `/’ from member names ,原因是 tar 默认为相对路径,使用绝对路径的话就回报这个错,可以使用 -P 参数(注意大写)解决这个问题:
...
tar -zcvPf ${backup_dir}${backup_file_date}_baidu.bes.dsp.request.tar.gz ${log_path}
tar 命令扩展阅读:
tar 命令评论