如何在 OSX 上排除带有 TAR 的目录?

How to exclude directories with TAR on OSX?

这是我在 MacOSX 机器上的当前目录结构:

kuli at fumpenwuppich in /volume/workspace on master [!?$]
$ ls -l
total 0
drwxr-xr-x   4 kuli  staff  136 Nov 28 16:02 conf
drwxr-xr-x   3 kuli  staff  102 Nov 28 16:23 html
drwxr-xr-x   3 kuli  staff  102 Nov 28 13:06 legacy
drwxr-xr-x  11 kuli  staff  374 Nov 28 15:41 vagrant.nginx

我想创建一个 tar.bz2 文件作为备份,但没有子目录 'legacy'.

我试过很多东西:

tar cfjv --exclude 'legacy' ~/Dropbox/backup/kuli.20151128.tar.bz2 .
tar cfjv --exclude='legacy' ~/Dropbox/backup/kuli.20151128.tar.bz2 .
tar cfjv ~/Dropbox/backup/kuli.20151128.tar.bz2 --exclude legacy .
tar cfjv ~/Dropbox/backup/kuli.20151128.tar.bz2 --exclude=legacy .
tar cfjv ~/Dropbox/backup/kuli.20151128.tar.bz2 --exclude='legacy' .
tar cfjv ~/Dropbox/backup/kuli.20151128.tar.bz2 --exclude './legacy' .
tar cfjv ~/Dropbox/backup/kuli.20151128.tar.bz2 --exclude='./legacy' .
tar cfjv ~/Dropbox/backup/kuli.20151128.tar.bz2 --exclude 'workspace/legacy' .

等等。我还尝试将 exlude-switch 放在命令的末尾。

但没有任何效果。所有命令完全忽略排除命令。

如何实现?

根据 man page 选项在文件和目录列表之前:

tar {-c} [options] [files | directories]

另外 -f--exclude 选项需要参数:-f file--exclude pattern

因此,对于您的情况,这应该有效:

tar cjv --exclude 'legacy' -f ~/Dropbox/backup/kuli.20151128.tar.bz2 .

奇怪的是,我无法在 Mac OS X(版本 10.11.5)上使用它,直到我将参数的顺序重新排列为

tar --exclude '/subdir1/' --exclude '/subdir2/' -zcvf "mybackup.tar.gz" ./我的文件夹