zoukankan      html  css  js  c++  java
  • tar命令中--exclude参数详解

    tar命令中--exclude参数详解

    测试环境:
    [root@osker /]# uname -r
    3.10.0-957.el7.x86_64
    [root@osker /]# cat /etc/redhat-release
    CentOS Linux release 7.6.1810 (Core)
    [root@osker /]# tree test
    test
    ├── t1
    │   ├── file1.txt
    │   ├── file2.txt
    │   └── file3.txt
    ├── t2
    │   ├── file1.txt
    │   ├── file2.txt
    │   └── file3.txt
    └── t3
        ├── file1.txt
        ├── file2.txt
        └── file3.txt
    3 directories, 9 files

    打包/test目录下的文件,排除所有文件名为file1.txt的文件
    1、--exclude后跟”=“,排除正常。
    [root@osker /]# tar -czvf ces.tar.gz /test --exclude=file1.txt     
    tar: Removing leading `/' from member names
    /test/
    /test/t1/
    /test/t1/file2.txt
    /test/t1/file3.txt
    /test/t2/
    /test/t2/file2.txt
    /test/t2/file3.txt
    /test/t3/
    /test/t3/file2.txt
    /test/t3/file3.txt
    2、--exclude后跟空格,排除正常。
    [root@osker /]# tar -czvf ces.tar.gz /test --exclude file1.txt
    tar: Removing leading `/' from member names
    /test/
    /test/t1/
    /test/t1/file2.txt
    /test/t1/file3.txt
    /test/t2/
    /test/t2/file2.txt
    /test/t2/file3.txt
    /test/t3/
    /test/t3/file2.txt
    /test/t3/file3.txt

    打包/test目录下的文件,排除/test/t1/file1.txt的文件
    1、--exclude后跟”=“,排除正常。
    [root@osker /]# tar -czvf ces.tar.gz /test --exclude=/test/t1/file1.txt
    tar: Removing leading `/' from member names
    /test/
    /test/t1/
    /test/t1/file2.txt
    /test/t1/file3.txt
    /test/t2/
    /test/t2/file1.txt
    /test/t2/file2.txt
    /test/t2/file3.txt
    /test/t3/
    /test/t3/file1.txt
    /test/t3/file2.txt
    /test/t3/file3.txt
    2、--exclude后跟空格,排除正常。
    [root@osker /]# tar -czvf ces.tar.gz /test --exclude /test/t1/file1.txt
    tar: Removing leading `/' from member names
    /test/
    /test/t1/
    /test/t1/file2.txt
    /test/t1/file3.txt
    /test/t2/
    /test/t2/file1.txt
    /test/t2/file2.txt
    /test/t2/file3.txt
    /test/t3/
    /test/t3/file1.txt
    /test/t3/file2.txt
    /test/t3/file3.txt
    3、打包目录为绝对路径,排除文件为相对路径时候,排除文件成功。
    [root@osker /]# tar -czvf ces.tar.gz /test --exclude test/t1/file1.txt
    tar: Removing leading `/' from member names
    /test/
    /test/t1/
    /test/t1/file2.txt
    /test/t1/file3.txt
    /test/t2/
    /test/t2/file1.txt
    /test/t2/file2.txt
    /test/t2/file3.txt
    /test/t3/
    /test/t3/file1.txt
    /test/t3/file2.txt
    /test/t3/file3.txt
    4、打包目录为相对路径,排除文件为绝对路径时候,排除文件失败。
    [root@osker /]# tar -czvf ces.tar.gz test --exclude /test/t1/file1.txt
    test/
    test/t1/
    test/t1/file1.txt
    test/t1/file2.txt
    test/t1/file3.txt
    test/t2/
    test/t2/file1.txt
    test/t2/file2.txt
    test/t2/file3.txt
    test/t3/
    test/t3/file1.txt
    test/t3/file2.txt
    test/t3/file3.txt
    5、打包目录和排除文件为相对路径的时候,排除文件正常。
    [root@osker /]# tar -czvf ces.tar.gz test --exclude test/t1/file1.txt
    test/
    test/t1/
    test/t1/file2.txt
    test/t1/file3.txt
    test/t2/
    test/t2/file1.txt
    test/t2/file2.txt
    test/t2/file3.txt
    test/t3/
    test/t3/file1.txt
    test/t3/file2.txt
    test/t3/file3.txt

    使用--exclude-from排除文件方法,将要排除的文件路径写入到一个文件中。适合有多个文件需要排除的情况
    [root@osker /]# echo "/test/t2/file2.txt" > /exclude.txt
    1、打包目录和排除文件以及排除文件里的路径为绝对路径的时候,排除文件正常。
    [root@osker /]# tar -czvf ces.tar.gz /test --exclude-from /exclude.txt
    tar: Removing leading `/' from member names
    /test/
    /test/t1/
    /test/t1/file1.txt
    /test/t1/file2.txt
    /test/t1/file3.txt
    /test/t2/
    /test/t2/file1.txt
    /test/t2/file3.txt
    /test/t3/
    /test/t3/file1.txt
    /test/t3/file2.txt
    /test/t3/file3.txt
    2、打包目录为绝对路径,排除文件为相对路径,排除文件内容为绝对路径的时候,排除文件正常。
    [root@osker /]# tar -czvf ces.tar.gz /test --exclude-from exclude.txt
    tar: Removing leading `/' from member names
    /test/
    /test/t1/
    /test/t1/file1.txt
    /test/t1/file2.txt
    /test/t1/file3.txt
    /test/t2/
    /test/t2/file1.txt
    /test/t2/file3.txt
    /test/t3/
    /test/t3/file1.txt
    /test/t3/file2.txt
    /test/t3/file3.txt
    3、打包目录为相对路径,排除文件和排除文件内容为绝对路径的时候,排除文件失败。
    [root@osker /]# tar -czvf ces.tar.gz test --exclude-from /exclude.txt
    test/
    test/t1/
    test/t1/file1.txt
    test/t1/file2.txt
    test/t1/file3.txt
    test/t2/
    test/t2/file1.txt
    test/t2/file2.txt
    test/t2/file3.txt
    test/t3/
    test/t3/file1.txt
    test/t3/file2.txt
    test/t3/file3.txt
    4、打包目录和排除文件为相对路径,排除文件内容为绝对路径的时候,排除文件失败。
    [root@osker /]# tar -czvf ces.tar.gz test --exclude-from exclude.txt
    test/
    test/t1/
    test/t1/file1.txt
    test/t1/file2.txt
    test/t1/file3.txt
    test/t2/
    test/t2/file1.txt
    test/t2/file2.txt
    test/t2/file3.txt
    test/t3/
    test/t3/file1.txt
    test/t3/file2.txt
    test/t3/file3.txt
    5、排除文件内容为相对路径的时候,打包目录和排除文件为相对路径或者绝对路径,排除文件成功。
    [root@osker /]# echo "test/t2/file2.txt" > exclude.txt
    [root@osker /]# tar -czvf ces.tar.gz test --exclude-from exclude.txt
    test/
    test/t1/
    test/t1/file1.txt
    test/t1/file2.txt
    test/t1/file3.txt
    test/t2/
    test/t2/file1.txt
    test/t2/file3.txt
    test/t3/
    test/t3/file1.txt
    test/t3/file2.txt
    test/t3/file3.txt
    [root@osker /]# tar -czvf ces.tar.gz test --exclude-from /exclude.txt
    test/
    test/t1/
    test/t1/file1.txt
    test/t1/file2.txt
    test/t1/file3.txt
    test/t2/
    test/t2/file1.txt
    test/t2/file3.txt
    test/t3/
    test/t3/file1.txt
    test/t3/file2.txt
    test/t3/file3.txt
    [root@osker /]# tar -czvf ces.tar.gz /test --exclude-from /exclude.txt
    tar: Removing leading `/' from member names
    /test/
    /test/t1/
    /test/t1/file1.txt
    /test/t1/file2.txt
    /test/t1/file3.txt
    /test/t2/
    /test/t2/file1.txt
    /test/t2/file3.txt
    /test/t3/
    /test/t3/file1.txt
    /test/t3/file2.txt
    /test/t3/file3.txt
    [root@osker /]# tar -czvf ces.tar.gz /test --exclude-from exclude.txt
    tar: Removing leading `/' from member names
    /test/
    /test/t1/
    /test/t1/file1.txt
    /test/t1/file2.txt
    /test/t1/file3.txt
    /test/t2/
    /test/t2/file1.txt
    /test/t2/file3.txt
    /test/t3/
    /test/t3/file1.txt
    /test/t3/file2.txt
    /test/t3/file3.txt

    排除目录
    排除目录后不接“/”,排除目录成功。
    [root@osker /]# tar -czvf ces.tar.gz /test --exclude=/test/t1
    tar: Removing leading `/' from member names
    /test/
    /test/t2/
    /test/t2/file1.txt
    /test/t2/file2.txt
    /test/t2/file3.txt
    /test/t3/
    /test/t3/file1.txt
    /test/t3/file2.txt
    /test/t3/file3.txt
    排除目录后接“/”,排除目录失败。
    [root@osker /]# tar -czvf ces.tar.gz /test --exclude=/test/t1/
    tar: Removing leading `/' from member names
    /test/
    /test/t1/
    /test/t1/file1.txt
    /test/t1/file2.txt
    /test/t1/file3.txt
    /test/t2/
    /test/t2/file1.txt
    /test/t2/file2.txt
    /test/t2/file3.txt
    /test/t3/
    /test/t3/file1.txt
    /test/t3/file2.txt
    /test/t3/file3.txt

    总结:
    1、tar命令下的--exclude后面可以跟”=“或者空格,效果一样。
    2、tar命令下的--exclude后面跟文件名,会排除所有和此名相同的文件。
    3、tar命令下的--exclude后面跟排除文件的路径为绝对路径的时候,打包路径也必须为绝对路径。
    4、tar命令下的--exclude后面跟排除文件的路径为相对路径的时候,打包路径为相对或者绝对路径都可以。
    5、tar命令下的--exclude-from后面排除文件里的路径为绝对路径的时候,打包路径也必须为绝对路径。
    6、tar命令下的--exclude-from后面排除文件里的路径为相对路径的时候,打包路径为相对或者绝对路径都可以。
    7、排除目录时候,排除的目录后面不能接“/”。

  • 相关阅读:
    Silverlight的依赖属性与附加属性(五)
    Silverlight Behavior技术(三)
    JQuery EasyUI 简单的左右布局左边Tree右边区域打开tab右键菜单实现 Murray
    使用Areas分离ASP.NET MVC项目(前后台以及对应功能模块) Murray
    IDisposable 接口 Murray
    MVC3/4 自定义HtmlHelper截断文本内容 Murray
    30个最常用css选择器解析(经典) Murray
    asp.net 中使用 SqlBulkCopy 将一个目录下指定类型的数据文件导入到数据库 Murray
    EntityState 枚举的5中状态的变化 Murray
    IEnumerable<T> 接口主要成员 Murray
  • 原文地址:https://www.cnblogs.com/osker/p/12427447.html
Copyright © 2011-2022 走看看