linux下面tar打包, 排除某个特定的目录( 只对一个目录操作, 不对其他目录操作)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下面tar打包, 排除某个特定的目录( 只对一个目录操作, 不对其他目录操作)相关的知识,希望对你有一定的参考价值。

比如 temp 下面有 aa bb cc dd四个文件夹, 然后bb下面有dd命名的文件, cc下面有dd命名的文件夹
我只想打包temp 下的aa bb cc 排除dd 我这样操作
①tar zcf temp.tar.gz * --exclude dd ②tar zcf temp.tar.gz * --exclude=dd③tar zcf temp.tar.gz * --exclude=dd 都不能达到我要的效果
这样有把temp下面的dd文件排除了 , 但是同时也把bb下面的以dd命名文件 还有cc下面的以dd命名的文件夹也排除了.

我只要排除temp根目录下面的dd文件夹及其子目录, 要保留bb下面同名的dd文件 还有cc下面的同名的dd文件夹, 请问正确的语法该怎么写, 可以只对一个目录操作, 不对其他目录操作.

参考技术A [boomer@www test]$ pwd
/home/boomer/tmp/test
[boomer@www test]$ ls -R
.:
aa  bb  cc  dd

./aa:
1.txct  1.txt

./bb:
2.txt  dd

./bb/dd:
5.tx  5.txt

./cc:
3.txt  dd

./cc/dd:
4.txt

./dd:
6.txt
[boomer@www test]$ cat > include.mydirs <<EOF
> aa
> bb
> cc
> EOF
[boomer@www test]$ tar cvzf temp.tar.gz `cat include.mydirs`
aa/
aa/1.txct
aa/1.txt
bb/
bb/dd/
bb/dd/5.tx
bb/dd/5.txt
bb/2.txt
cc/
cc/dd/
cc/dd/4.txt
cc/3.txt
[boomer@www test]$

参考技术B 仅排除temp下的dd,下面这么写只会排除temp下面的dd文件夹和dd文件(bb下的dd不受影响)
tar -zcvf temp.tar.gz --exclude=temp/dd temp

排除temp下所有dd,,下面这么写会排除temp下面的所有dd文件夹(及dd里的文件)和所有dd文件(bb下的dd受影响,被排除)
tar -zcvf temp.tar.gz --exclude=dd temp
参考技术C tar -zcf tmp.tgz $(ls | grep -v dd)

本回答被提问者采纳
参考技术D 这个去求是正常的, 也是可以实现的, 当然需要看看是想怎么用啊 。
死心了?

Linux zip打包排除某个目录或只打包某个目录

需求:zip打包某个目录但是要排除目录下某个文件或者某个目录。

zip -r server.zip server.geng.com/  -x  ‘./server.geng.com/Upload/*‘

-x参数后加要排除的文件或目录的完整路径。注意引号不可少。

 

需求:zip打包只打包某个目录下单个目录(其实这个有点多余,直接打包这个目录就是了,应用的场景就是能保留目录树)

zip -r server.zip server.geng.com/  -i  ‘./server.geng.com/Upload/*‘

-i参数后加要打包的文件或目录的完整路径。注意引号不可少。

 

补充zip的相关参数:

-r 递归压缩,将指定目录下的所有文件以及子目录全部压缩
-d 从压缩文件内删除指定的文件
-i “文件列表” 只压缩文件列表中的文件
-x “文件列表” 压缩时排除文件列表中指定的文件
-u 更新文件到压缩文件中
-m 将文件加入压缩文件压缩后,删除原始文件,zhidao即把文件移到压缩文件中
-F 尝试修复损坏的压缩文件
-T 检查压缩文件内的每个文件是否正确无误

 

以上是关于linux下面tar打包, 排除某个特定的目录( 只对一个目录操作, 不对其他目录操作)的主要内容,如果未能解决你的问题,请参考以下文章

linux tar压缩排除某个文件夹

Linux tar压缩命令 排除某个目录 (根据man tar 总结)

linux使用tar命令打包压缩时排除某个文件夹或文件

linux文件夹内文件复制,如何排除某个文件

AIX下tar排除目录

Linux zip打包排除某个目录或只打包某个目录