修剪目录和当前目录的文件以供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)试图修剪,什么不修剪,每次尝试看起来都比上一次更荒谬。

如果有人可以只显示我要查找部分的解决方案,那简直太好了 - 谢谢

(的“`”字符是日期周围,它只是打破了代码视图,当我试图把他们在那里)

+0

为什么不直接使用tar的--exclude = PATTERN选项? – mfnalex

+0

'cd'对'find'没有产生任何有意义的输出,无论如何,这个改变对流水线的这个组件开始的进程是本地的。 – chepner

+0

我同意'mfnalex','tar'有灵活的方法来包含/排除文件,你应该尝试'man tar'。您可以使用文件列出包含/排除规范,并且可以使用流程替换(' Fred

使用--exclude = PATTERN和*/,因为它只会赶上目录:

tar --exclude=plugins/ --exclude=logs/ --exclude=backups/ -cf /path/to/backup/directory/`date +%d%m%y`/whatever.tar [other options] */ 
+0

谢谢,我已经试过,我已经得到它排除文件夹,但idk如何排除仅在浅层目录中的文件 – annon

+0

当你在目录中时,你可以显示ls的输出,并告诉哪些文件应该被排除吗? – mfnalex

+0

https://gyazo.com/7aafd163d105d6cf68b864a43fef513d我试图只备份文件夹,不包括插件和日志,所以在这种情况下的结果应该是msffamap + temp + world + world_nether + world_the_end – annon

关于发现除目录,尝试

find . -type d \(-path plugins -o -path backups -o -path logs \) -prune -o -print 
+0

我只是试过,不幸的是没有被排除:(谢谢,虽然 – annon