关于tar的exclude选项

昨天晚上一网友问我


tar -cvpzf /sdcard/test.tgz --exclude=/sdcard/test/test2/* /sdcard/test


此命令中的 --exclude选项为什么不起作用

我看了这个的么一反映,不可能啊,命令完全没有错误,应该是可以执行的,遂在网上找了找答案。

看到CU论坛上面有朋友说



tar的--exclude用的不是正则表达式,而是wildcards


叫朋友改成


tar -cvpzf /sdcard/test.tgz --exclude=/sdcard/test/test2/ /sdcard/test


还是不行。。

又在另一帖子中看到,这个问题;


有一个tar命令如下:
tar -cvpzf /media/sda7/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media /

本意是想备份根目录下的除了/proc /lost+found /mnt /sys /media 这些目录之外的文件的,但是没有起到作用,我想知道为什么???请高手给一个解释,谢谢了。


这个问题基本上跟我他的问题一样了,遂看各位前辈们的回复,里面成功的的有:


应该是:
tar -cvpzf /media/sda7/backup.tgz / --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media
复制代码
--exclude需要放到最后,否则无效

这是一个固定格式 tar -jcvpf target source

没查到 man 中有相关说明啊,倒是有:


tar -cf scr.tar --exclude='*.o' scr"


那可能与 tar 版本有关了。

确实没错  这句话说到点子上了!
以前习惯linux下 选项 最后写 用了BSD 发现了这个问题
比如在Linux下,ls -l test.txt和ls test.txt -l都是可以的,而BSD下只能写成前一种。


在最后,版主得出,exclude选项 跟tar的版本有关,不过从此贴里面可以看到 下面这种方式执行是成功的


tar -cvpzf /media/sda7/backup.tgz / --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media


即:


tar -cvpzf target source --exclude=


这种格式在我的vps上面也测试成功,不过还是请大家在使用这个命令的时候,先看一看man手册。

另外给出CU论坛的关于这个问题的链接吧。

http://bbs.chinaunix.net/thread-3761777-1-1.html