Shell命令将tar目录排除在某些文件/文件夹之外

是否有一个简单的shell命令/脚本支持排除某些文件/文件夹的存档?

我有一个目录,需要用一个子目录进行归档,这个目录有很多我不需要备份的非常大的文件。

不完全解决方案:

tar --exclude=PATTERN命令匹配给定的模式并排除这些文件,但我需要特定的文件和文件夹被忽略(完整文件路径),否则有效的文件可能被排除。

我也可以使用find命令来创建一个文件列表,并排除那些我不想存档的文件,并将这个列表传递给tar,但只适用于少量的文件。 我有成千上万。

我开始认为唯一的解决方案是创建一个文件,列出要排除的文件/文件夹,然后使用rsync和--exclude-from=file将所有文件复制到tmp目录,然后使用tar归档该目录。

任何人都可以想到更好/更有效的解决方案吗?

编辑: cma的解决方案效果很好。 大问题在于--exclude='./folder' 必须位于tar命令的开头。 完整的命令(首先,CD,所以备份是相对于该目录):

cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .

你可以有多个tar排除选项

$ tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .

等将工作。 确保在源项目和目标项目之前放置 - --exclude


您可以使用--exclude排除tar目录。

如果你想存档除/usr以外的所有内容,你可以使用:

tar -zcvf /all.tgz / --exclude=/usr

在你的情况下,可能类似

tar -zcvf archive.tgz arc_dir --exclude=dir/ignore_this_dir

使用tar从备份中排除文件/目录的可能选项:

使用多种模式排除文件

tar -czf backup.tar.gz --exclude=PATTERN1 --exclude=PATTERN2 ... /path/to/backup

使用填充了模式列表的排除文件排除文件

tar -czf backup.tar.gz -X /path/to/exclude.txt /path/to/backup

通过将标签文件放置在任何应该跳过的目录中来排除使用标签的文件

tar -czf backup.tar.gz --exclude-tag-all=exclude.tag /path/to/backup
链接地址: http://www.djcxy.com/p/8255.html

上一篇: Shell command to tar directory excluding certain files/folders

下一篇: URN for MIME Type