如何在OSX上用TAR排除目录?

时间:2015-11-28 17:50:05

标签: macos backup archive tar

这是我在MacOSX-Machine上的当前目录结构:

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文件作为备份,但没有子目录“遗产”。

我尝试了很多东西:

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放在命令的末尾。

但没有任何效果。所有命令都会忽略exclude命令。

如何实现这一目标?

2 个答案:

答案 0 :(得分:9)

根据man page选项进入文件和目录列表:

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

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

所以,在你的情况下,这应该有效:

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

答案 1 :(得分:8)

奇怪的是,在将参数顺序重新排列为

之前,我无法在Mac OS X(版本10.11.5)上运行此功能

tar --exclude' / subdir1 / ' --exclude' / subdir2 / ' -zcvf" mybackup.tar.gz" ./myfolder