【发布时间】:2015-03-10 18:36:13
【问题描述】:
我有一个问题,我似乎找不到答案。
我正在尝试编写一个 shell 脚本来使用 tar 进行完整的系统备份。显然,有几个文件夹我不想备份(/dev、/mnt、/proc、/tmp 等)。有相当多的文件夹我不想备份,所以我使用“exclude-from”标志来保持命令相对干净。
问题是,它不起作用。
这是我正在使用的 tar 标志:
--create
--file $BACKUP_FILE
--preserve-permissions
--same-owner
--numeric-owner
--listed-incremental $INCREMENTAL_FILE
--level=0
--xz
--directory /
--exclude-caches
--exclude-from $EXCLUDE_FILE
-v
这是我的排除文件:
/dev
/lost+found
/media
/mnt
/proc
/run
/sys
/tmp
/var/spool
/var/run
/var/tmp
当我运行我的脚本时,它仍然会备份那些我不想备份的文件夹。切换到一堆“--exclude”标志似乎不起作用(我宁愿不使用它们)。我尝试将 '--exclude-from $EXCLUDE_FILE' 更改为 '--exclude-from=$EXCLUDE-FILE',我确保每行和其他一些内容之后没有空格(不记得它们,事情开始变得模糊起来)。
我一直在阅读 tar 模式,所以看看是否有我遗漏的东西,我还没有遇到任何东西。出于安全目的,我试图查看这是否与 tar 剥离前导斜杠有关,但我还没有找到任何东西。
在谷歌搜索时,我发现唯一的帮助是一个人在做同样的事情并通过从他的排除文件条目中删除前导“/”来解决它。我已经尝试过了,它可以工作,但它排除了所有文件夹而不是根文件夹。我的家中可能会有一个“媒体”文件夹,我想备份该文件夹,但不备份 /media 文件夹,因此这不是一个合适的解决方案。
【问题讨论】: