如何在 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" ./我的文件夹
这是我在 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" ./我的文件夹