我有一个问题,似乎找不到答案。
我正在尝试编写一个使用tar进行完整系统备份的shell脚本。显然,有几个文件夹我不想备份(例如/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”文件夹,我想备份它,但不想备份/media文件夹,因此这不是一个合适的解决方案。
rsync
,例如备份到远程服务器,则添加-z
标志以启用数据压缩可能非常有用。当然,效果因人而异。 - András Aszódi