我有一些目录和一些文件
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
存在一些简单的方法吗?谢谢
一种方法是首先排除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
不幸的是,附加不适用于压缩档案。
The --exclude
选项采用模式作为参数,因此如果要排除的目录的名称相似,您可以避免它们并仍然包含存档目录
tar cvfz dir_archive.tar.gz --exclude=dir_archive/mydir/exclude* dir_archive
还可以创建一个文件,其中包含您想要包含的所有文件的名称,并使用选项将该列表提供给 tar-T
or --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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)