首页 文章

Tar:创建除一个以外的归档排除目录

提问于
浏览
11

我有一些文件的目录

dir_archive/somedir1
dir_archive/somedir2
dir_archive/somedir3
dir_archive/mydir
dir_archive/mydir/excludedir1
dir_archive/mydir/excludedir2
dir_archive/mydir/excludedir3
dir_archive/mydir/many_other_directories...
dir_archive/mydir/my_archive_dir

我想创建tar(gz)存档dir_archive.tar.gz,不包括所有文件和目录

dir_archive/mydir/excludedir1
dir_archive/mydir/excludedir2
dir_archive/mydir/excludedir3
dir_archive/mydir/many_other_directories...

但包括

dir_archive/mydir/my_archive_dir

我不想为每个目录使用 --exclude

tar cvfz dir_archive.tar.gz --exclude=dir_archive/mydir/excludedir1 --exclude=dir_archive/mydir/excludedir2 --exclude=dir_archive/mydir/excludedir3

我尝试使用 --add-file ,但它不起作用:

tar cvfz dir_archive.tar.gz --exclude=dir_archive/mydir --add-file=dir_archive/mydir/my_archive_dir dir_archive

存在一些简单的方法?谢谢

1 回答

  • 20

    一种方法是首先排除 mydir 然后追加 my_archive_dir

    tar cvf dir_archive.tar --exclude=dir_archive/mydir dir_archive
    tar rvf dir_archive.tar dir_archive/mydir/my_archive_dir
    gzip dir_archive.tar
    

    不幸的是,附加功能不适用于压缩档案 .

    --exclude 选项将模式作为参数,因此如果要排除的目录名称相似,则可以避免它们并仍包含存档目录

    tar cvfz dir_archive.tar.gz --exclude=dir_archive/mydir/exclude* dir_archive
    

    它也可以创建要包含的所有文件名的文件,并给该列表焦油选项 -T--files-from (或以类似的方式列表中的文件被排除在外,并给予与选项 -X 列表) .

    filelist.txt:
    dir_archive
    dir_archive/temp1
    dir_archive/mydir
    dir_archive/mydir/temp2
    dir_archive/mydir/my_archive_dir
    dir_archive/mydir/my_archive_dir/temp7
    
    tar cvfz dir_archive.tar.gz --no-recursion --files-from filelist.txt
    

相关问题