显示行号

|

选择喜欢的代码风格

默认

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命令_linux tar 命令安装

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 命令评论