Shell command to tar directory excluding certain files/folders

后端 未结 28 2046
春和景丽
春和景丽 2020-11-27 08:31

Is there a simple shell command/script that supports excluding certain files/folders from being archived?

I have a directory that need to be archived with a sub dire

相关标签:
28条回答
  • 2020-11-27 09:17

    I agree the --exclude flag is the right approach.

    $ tar --exclude='./folder_or_file' --exclude='file_pattern' --exclude='fileA'
    

    A word of warning for a side effect that I did not find immediately obvious: The exclusion of 'fileA' in this example will search for 'fileA' RECURSIVELY!

    Example:A directory with a single subdirectory containing a file of the same name (data.txt)

    data.txt
    config.txt
    --+dirA
      |  data.txt
      |  config.docx
    
    • If using --exclude='data.txt' the archive will not contain EITHER data.txt file. This can cause unexpected results if archiving third party libraries, such as a node_modules directory.

    • To avoid this issue make sure to give the entire path, like --exclude='./dirA/data.txt'

    0 讨论(0)
  • 2020-11-27 09:18

    You can exclude directories with --exclude for tar.

    If you want to archive everything except /usr you can use:

    tar -zcvf /all.tgz / --exclude=/usr
    

    In your case perhaps something like

    tar -zcvf archive.tgz arc_dir --exclude=dir/ignore_this_dir
    
    0 讨论(0)
  • 2020-11-27 09:18

    I'd like to show another option I used to get the same result as the answers before provide, I had a similar case where I wanted to backup android studio projects all together in a tar file to upload to media fire, using the du command to find the large files, I found that I didn't need some directories like: build, linux e .dart_tools Using the first answer of Charles_ma I modified it a little bit to be able to run the command from the parent directory of the my Android directory.

    tar --exclude='*/build' --exclude='*/linux' --exclude='*/.dart_tool' -zcvf androidProjects.tar Android/
    

    It worked like a charm.

    Ps. Sorry if this kind of answer is not allowed, if this is the case I will remove.

    0 讨论(0)
  • 2020-11-27 09:18

    Check it out

    tar cvpzf zip_folder.tgz . --exclude=./public --exclude=./tmp --exclude=./log --exclude=fileName
    
    0 讨论(0)
  • 2020-11-27 09:21

    Possible options to exclude files/directories from backup using tar:

    Exclude files using multiple patterns

    tar -czf backup.tar.gz --exclude=PATTERN1 --exclude=PATTERN2 ... /path/to/backup
    

    Exclude files using an exclude file filled with a list of patterns

    tar -czf backup.tar.gz -X /path/to/exclude.txt /path/to/backup
    

    Exclude files using tags by placing a tag file in any directory that should be skipped

    tar -czf backup.tar.gz --exclude-tag-all=exclude.tag /path/to/backup
    
    0 讨论(0)
  • 2020-11-27 09:21

    After reading this thread, I did a little testing on RHEL 5 and here are my results for tarring up the abc directory:

    This will exclude the directories error and logs and all files under the directories:

    tar cvpzf abc.tgz abc/ --exclude='abc/error' --exclude='abc/logs'
    

    Adding a wildcard after the excluded directory will exclude the files but preserve the directories:

    tar cvpzf abc.tgz abc/ --exclude='abc/error/*' --exclude='abc/logs/*'
    
    0 讨论(0)
提交回复
热议问题