修剪目录和当前目录的文件以供tar使用
问题描述:
我看了很多文章,我似乎无法弄清楚,我想我是一个noob。修剪目录和当前目录的文件以供tar使用
反正我有一个目录我想tar,但是我想排除shallow目录的文件,以及排除文件夹 “插件”,“备份”和“日志”位于浅层目录。
- >
\#!/bin/bash
mkdir -p /path/to/backup/directory/`date +%d%m%y`
cd /path/to/backup/directory/`date +%d%m%y`
cd .. | find . -not \\(-path plugins -prune -o -path backups -prune -o -path logs -prune \\) -mindepth 1 -print0 | xargs -0 tar cpj --directory=$(cd -) -f `date +%H`.tar.gz
这一发现部分是什么是错的,但不排除任何事情。这是我的第30次(不是字面上的,但实际上可能高于实际的xD)试图修剪,什么不修剪,每次尝试看起来都比上一次更荒谬。
如果有人可以只显示我要查找部分的解决方案,那简直太好了 - 谢谢
(的“`”字符是日期周围,它只是打破了代码视图,当我试图把他们在那里)
答
使用--exclude = PATTERN和*/
,因为它只会赶上目录:
tar --exclude=plugins/ --exclude=logs/ --exclude=backups/ -cf /path/to/backup/directory/`date +%d%m%y`/whatever.tar [other options] */
答
关于发现除目录,尝试
find . -type d \(-path plugins -o -path backups -o -path logs \) -prune -o -print
+0
我只是试过,不幸的是没有被排除:(谢谢,虽然 – annon
为什么不直接使用tar的--exclude = PATTERN选项? – mfnalex
'cd'对'find'没有产生任何有意义的输出,无论如何,这个改变对流水线的这个组件开始的进程是本地的。 – chepner
我同意'mfnalex','tar'有灵活的方法来包含/排除文件,你应该尝试'man tar'。您可以使用文件列出包含/排除规范,并且可以使用流程替换(' Fred