`
v5qqbrowser
  • 浏览: 356843 次
文章分类
社区版块
存档分类
最新评论

GNU tar的用法

 
阅读更多

命令格式是

 tar 功能 选项 文件

可以将代表功能和选项的单个字母合并;当使用单个字母时,可以不用在字母前面加“-”。某些版本的tar要求严格按照功能字、选项字的顺序,而有些版本的tar并不在意这个顺序。

功能

  • -c,--create 创建新的tar文件
  • -x,--extract,--get 解开tar文件
  • -t,--list 列出tar文件中包含的文件的信息
  • -r,--append 附加新的文件到tar文件中
  • -u,--update 用已打包的文件的较新版本更新tar文件
  • -A,--catenate,--concatenate 将tar文件作为一个整体追加到另一个tar文件中
  • -d,--diff,--compare 将文件系统里的文件和tar文件里的文件进行比较
  • --delete 删除tar文件里的文件。注意,这个功能不能用于已保存在磁带上的tar文件!

常用选项

  • -v,--verbose 列出每一步处理涉及的文件的信息,只用一个“v”时,仅列出文件名,使用两个“v”时,列出权限、所有者、大小、时间、文件名等信息。
  • -k,--keep-old-files 不覆盖文件系统上已有的文件
  • -f,--file [主机名:]文件名 指定要处理的文件名。可以用“-”代表标准输出或标准输入。
  • -P,--absolute-names 使用绝对路径
  • -j,--bzip2 调用bzip2执行压缩或解压缩。注意,由于部分老版本的tar使用-I实现本功能,因此,编写脚本时,最好使用--bzip2。
  • -z,--gzip,--gunzip,--ungzip 调用gzip执行压缩或解压缩
  • -Z,--compress,--uncompress 调用compress执行压缩或解压缩

应用示例

 tar -cvf home_backup.tar /home

可以将/home目录下的所有文件打包入home_backup.tar文件中。理解这个命令时,请注意“home_backup.tar”实际上是-f选项的参数。tar默认记录相对路径,即使给出的是绝对路径,也会自动将代表根目录的“/”去掉,所以,在这个例子中,使用“/home”和“home”是相同的。要想使用绝对路径,请加上“P”选项,但一般不推荐使用绝对路径,原因之一是可能导致tar攻击。

 cd /home
 tar -cvf home_backup.tar *

这也是一种制作备份的方法,但是不推荐这样做。因为tar在默认解压时,会将文件直接输出到当前目录下,而不会新建并输出到一个名为home的子目录,令到当前目录显得很凌乱。这也是一种形式的tar攻击。

 tar -tf home_backup.tar

列出home_backup.tar文件里已被打包的文件。此时仅仅显示文件名。如果加上“v”,则能列出权限、所有者、大小、时间、文件名等信息。为防止tar攻击,应该养成解压前查看tar文件内容的好习惯。

 tar -xvf home_backup.tar

在当前目录下解压home_back.tar。解压后的文件,其访问权限得到保留;其所有者是执行tar命令的用户,如果tar的执行者是root,则所有者是文件原来的所有者。 解压前,最好先查看tar文件的内容,以决定是否需要新建一个临时子目录安放。

 tar -xvf home_backup.tar home/test.c

指定解压出test.c这个文件。解压过程中会自动创建home这个子目录。

tar

攻击者利用绝对路径,或者“tar -cf bomb.tar *”的方式创建的tar文件,然后诱骗受害者在根目录下解压,或者使用绝对路径解压。可能使受害系统上已有的文件被覆盖掉,或者导致当前工作目录凌乱不堪,这就是所谓的“tar”。因此,要养成良好的解压习惯:

  • 解压前用“t”查看tar的文件内容。
  • 拒绝使用绝对路径。
  • 新建一个临时子目录,然后在这个子目录里解压。

tar管道

管道用法:

 tar -cf - "${源目录}" | tar -xvf - -C "${目标目录}"

可以将源目录及其子目录复制到目标目录中,尤其适用于复制含有特殊文件(如连接、设备文件)的目录。

(来自维基百科)

分享到:
评论

相关推荐

    linux tar命令详解

     本文介绍了linux下的压缩程式tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、zip、 unzip、rar、unrar等程式,及怎么使用他们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip、.rar这...

    tar-stream:tar-stream是流式tar解析器和生成器

    它应该与所有流行的tar发行版(gnutar,bsdtar等)兼容。 有关的 如果要打包/解压缩文件系统上的目录,请查看 ,它提供了与此模块的文件系统绑定。 包装 要创建打包流,请使用tar.pack()并调用pack.entry(header, ...

    tar.gz 和tar.bz2 详细解释

    至于file.src.rpm 的用法,请参见:《file.src.rpm 使用方法的简介》 2、如何编译安装源码包;(大多数) 1)解开软件包查看帮助文档; 我们解开一个包后,进入解压包,一般都能发现README(或reame)和INSTALL( ...

    libiconv-1.11.1.tar.gz

    iconv基于GPL公开源代码,是GNU项目的一部分,在各种Unix-like操作系统下很容易编译和使用,而在Windows下编译iconv就没那么简单了。 最新版的iconv(目前是libiconv-1.14.tar.gz)已经不再提供Visual C++的编译...

    cpiogz2tar:用于将压缩的cpio存档转换为tar格式的脚本

    cpiogz2tar 将gzip压缩的cpio归档文件转换为tar格式的脚本。... 将来可能会提供Windows实现(cpiogz2tar.cmd),以便与gunzip和cpio的Win32端口一起使用 执照 cpiogz2tar是在GNU GPL版本3下发行的免费软件。

    pcltext.tar.gz修复版

    用于pcl安装后的测试,具体使用方法见我的博客Ubuntu16.04安装PCL,里面有具体的使用说明,该版本修复了make过程中可能会遇到的No rule to make target '/usr/lib/x86_64-linux-gnu/lib...... .so问题

    ISL:用于使用 Graphite 循环优化构建 GCC 的 GNU ISL 库

    用于使用 Graphite 循环优化构建 GCC 的 GNU ISL 库 这是根据 MIT 许可条款对 GNU ISL 库(编译 GCC 等程序的先决条件)的二进制和源代码形式的非官方逐字重新分发。 此重新分发遵循相同的 MIT 许可证。 更多详情...

    Min GW - binutils-2.18.50-20080109-2.tar.gz

    MinGW是Minimalistic GNU for Windows 的缩写。她是一个建立在GCC和binutils 项目上的编译器系统。和其他GCC的移植版相比,她可以说是最接近Win32的一个了。因为,MinGW几乎支持所有的Win32API,这也是 MinGW的特色...

    zip30 unzip60 源码下载以及编译,以及自定义交叉编译方法

    CC = /home/mipsel-unknown-linux-gnu/bin/mipsel-unknown-linux-gnu-gcc-4.4.6 然后重新clean 后再编译即可: make -f unix/Makefile clean make -f unix/Makefile generic (--编译unzip60 如上类似--)

    arm-linux-gnueabi-5.4.0.tar

    arm-linux-gcc交叉编译工具: 备注:使用此资源时需要解压两次,因为上传时显示资源重复上传失败,于是套了两层压缩。... $sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4

    riscv-none-embed-gcc-xpack:带有GNU RISC-V嵌入式GCC工具链的二进制xPack

    安装GNU RISC-V嵌入式GCC的最简单方法是使用二进制xPack ,该文件可从注册表中以的 。 先决条件 唯一的要求是最近使用的xpm ,这是一个可移植的命令行应用程序。 要安装它,请按照页面上的说明进行操作。 安装 使用...

    linux命令快速查询手册

    分类 PS1 命令名 用法及参数 功能注解 文件管理 # ls ls -a 列出当前目录下的所有文件,包括以.头的隐含文件 文件管理 # ls ls -l或ll 列出当前目录下文件的详细信息 文件管理 # pwd pwd 查看当前所在目录的绝对路经...

    tomo2d.v1.4.3f+manual.tar.gz_ray tracing_seismic ray tracing_tom

    二维射线追踪地震层析成像,需要在GNU C++环境下运行。安装cygwin也可在windows下使用,具体使用方法在readme中有介绍

    create-project:一个NodeJS命令行工具来引导我的项目

    brew install coreutils findutils gnu-tar gnu-sed gawk gnutls gnu-indent gnu-getopt grep 安装 这可以在npm上作为模块使用: npm i --global @kingofcramers/create-project 用法 create-project -n ...

    php中iconv函数使用方法

    1、下载libiconv函数库http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz; 2、解压缩tar -zxvf libiconv-1.9.2.tar.gz; 3、安装libiconv #configure –prefix=/usr/local/iconv #make #make ...

    arm-none-eabi-gcc-xpack:带有Arm嵌入式GCC工具链的二进制xPack

    安装GNU Arm嵌入式GCC的最简单方法是使用二进制xPack ,可以从注册表中以的 。 先决条件 唯一的要求是最近使用的xpm ,这是一个可移植的命令行应用程序。 要安装它,请按照页面上的说明进行操作。 安装 使用xpm工具...

    git-backup:GPG加密的Git存储库备份

    tar应该在您的路径上,并且应该像GNU tar一样接受参数。 这应该不用说,但是您还需要git 。 如果您的系统与此稍有出入,则可以轻松进行工作。 给我发送请求。 用法 在存储库中运行git backup ,以将加密副本存储...

    交叉编译器

    详细的用法说明请阅读网站上的文档crosstool-how to 。 [zzl@localhost] tar -xzvf crosstool-0.43.tar.gz [zzl@localhost]cd crosstool-0.42 我们可以看到目录下有很多.sh脚本和.dat配置文件。每一个支持的...

    SharpZipLib:#ziplib是一个完全用C#为.NET平台编写的Zip,GZip,Tar和BZip2库

    SharpZipLib(#ziplib,以前为NZipLib)是一个压缩库,它使用存储和压缩的压缩方法,PKZIP 2.0样式和AES加密,带有GNU长文件名扩展名的tar,GZip,zlib和原始的deflate以及BZip2来支持Zip文件。 不支持Deflate64时,...

    Debian APT HOWTO.pdf

    最初只有.tar.gz 的打包文件,用户必须编译每个他想在GNU/Linux 上运行的软件。用户们普遍认为系统很 有必要提供一种方法来管理这些安装在机器上的软件包,当Debian诞生时,这样一个管理工具也就应运而生, 它被命名...

Global site tag (gtag.js) - Google Analytics