我正在尝试创建一个文件夹的 tar 存档thisfolder
,但想要忽略名为 的子文件夹notthisfolder
。有人可以告诉我怎么做吗?我尝试对整个文件夹进行 tar 压缩,然后删除我想忽略的文件夹,但该文件夹有 17gb。
\thisfolder
file1
file2
\notthisfolder
omitfile1
omitfile2
\butincludethisfolder
includefile1
infludefile2
我正在使用tar --exclude='notthisfolder' -zcvpf archive.tar /thisfolder/
答案1
你的命令几乎是正确的。使用
tar cvfzp achive.tar.gz --exclude notthisfolder thisfolder/
请注意,
--exclude notthisfolder
选项后档案名称。外观评论:当使用该
z
选项时,您正在使用 gzip 来压缩您的 tarball,因此请命名存档archive.tar.gz
而不是archive.tar
。此外,
/thisfolder/
是绝对路径,指向thisfolder
根目录内的文件夹/
。要指定相对路径(相对于当前工作目录),请使用thisfolder/
不带前导斜杠的/
。一个小提示,您不需要
cvfzp
在选项前加上-
。这样可以少输入一个字符!
对我有用;)
$ tree
.
└── thisfolder
├── butincludethisfolder
│ ├── includefile1
│ └── includefile2
├── file1
├── file2
└── notthisfolder
└── notthisfile
3 directories, 6 files
$ tar cvfzp achive.tar.gz --exclude notthisfolder thisfolder/
thisfolder/
thisfolder/butincludethisfolder/
thisfolder/butincludethisfolder/includefile1
thisfolder/butincludethisfolder/includefile2
thisfolder/file1
thisfolder/file2
答案2
从man tar
:
--exclude=PATTERN
exclude files, given as a PATTERN
因此,给定一个这样的目录:
terdon@oregano foo $ tree
.
└── thisfolder
├── butincludethisfolder
│ ├── includefile1
│ └── includefile2
└── notthisfolder
├── omitfile1
└── omitfile2
您可以运行以下tar
命令来获取您想要的内容:
tar -cvzf foo.tar --exclude notthisfolder thisfolder/
这将创建tar.foo
包含以下内容的内容:
$ tar xvzf foo.tar
thisfolder/
thisfolder/butincludethisfolder/
thisfolder/butincludethisfolder/includefile2
thisfolder/butincludethisfolder/includefile1
答案3
看起来你的语法是错误的。
它应该更像这样:
tar -zcvpf /where/you/store/backups/archive.tar /thisfolder --exclude "/notthisfolder" --exclude "/notthisfolder/omitfile1" --exclude "/notthisfolder/omitfile2"
或者如果省略文件全部在/notthisfolder
tar -zcvpf /where/you/store/backups/archive.tar /thisfolder --exclude "/notthisfolder"