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、排除目录时候,排除的目录后面不能接“/”。

  • 相关阅读:
    python-循环语句及字符串的简单应用
    用python画个五星红旗
    一、认识Python
    一个完整的大作业
    数据结构化与保存
    爬取新闻列表
    用requests库和BeautifulSoup4库爬取新闻列表
    中文词频统计及词云制作
    组合数据类型练习,英文词频统计实例
    字符串操作练习:星座、凯撒密码、99乘法表、词频统计预处理
  • 原文地址:https://www.cnblogs.com/osker/p/12427447.html
Copyright © 2011-2022 走看看