Restic: 排除未应用的模式

创建于 2017-06-20  ·  4评论  ·  资料来源: restic/restic

restic version

Restic 0.6.1(v0.6.1-126-gb0fb95df)
在darwin / amd64上使用go1.8.3编译

您是如何开始Restic的? (包括完整的命令行)

restic backup --exclude-file ~/exclude.txt ~

您使用了什么后端/服务器/服务?

sftp到局域网

预期行为

跳过与exclude.txt中的模式匹配的文件

实际行为

除非我彻底将模式放宽到模式过于模糊的程度,否则将包含文件。

重现行为的步骤

使用这样的排除文件:

.[^.]*
/matt/Applications
/matt/Dropbox
/matt/Downloads
/matt/VirtualBox VMs
*.vmdk

我的目标是跳过点文件和$ HOME目录中的几个特定文件夹(名为matt )(例如,并非每个名为“ Applications”的文件夹)。 哦,还有任何.vmdk文件(它们可能很大!)

当我放松模式到此:

.[^.]*
Applications
Dropbox
Downloads
VirtualBox VMs
*.vmdk

它起作用了(这意味着它跳过了文件夹),但这太模棱两可了,例如,我不想跳过所有名为Downloads的文件夹。

您有什么可能的原因吗?

可能我仍然不正确地理解排除模式。 :smile:我确实读过#1005,我想如果--exclude需要绝对路径,或者像--include这样需要repo-absolute路径,我会感到困惑。

documentation bug

最有用的评论

igh,是的,你绝对正确。 对于备份内容,排除模式是绝对的:
模式/home/matt/*.go与运行restic backup /home/matt时家中的所有Go文件匹配。 由于存档器的工作方式(请参阅#549,我们需要更正错误的设计决策),将删除/home/前缀,并且快照中的顶级路径组件为/matt 。 因此,对于还原,您需要使用/matt/*.go的包含模式来匹配相同的文件。 我知道这很糟糕,我会最终纠正它:)

因此,这是您的用例的更正排除文件列表:

.[^.]*
/home/matt/Applications
/home/matt/Dropbox
/home/matt/Downloads
/home/matt/VirtualBox VMs
*.vmdk

所有4条评论

更新:好的,用/matt/ $HOME/代替/matt/似乎可行,尽管我发现--exclude和--include绝对路径之间的不一致有点奇怪/令人惊讶。

通常$HOME/blabla/home/matt/blabla还是您在系统上进行过更改?

igh,是的,你绝对正确。 对于备份内容,排除模式是绝对的:
模式/home/matt/*.go与运行restic backup /home/matt时家中的所有Go文件匹配。 由于存档器的工作方式(请参阅#549,我们需要更正错误的设计决策),将删除/home/前缀,并且快照中的顶级路径组件为/matt 。 因此,对于还原,您需要使用/matt/*.go的包含模式来匹配相同的文件。 我知道这很糟糕,我会最终纠正它:)

因此,这是您的用例的更正排除文件列表:

.[^.]*
/home/matt/Applications
/home/matt/Dropbox
/home/matt/Downloads
/home/matt/VirtualBox VMs
*.vmdk

@ibib在我的Mac上,我的主目录是/Users/matt ,但是由于--include使用存储库绝对路径(如restic ls显示),因此我认为正确的绝对路径是/matt/...

@ fd0啊! 感谢您的解释,这更有意义。 因此, --excluderestic backup一起使用对于文件系统是绝对的,而--include (与restic restore )对于存储库是绝对的。 换句话说,这些模式对于文件的来源是绝对的。

非常感谢您的解释。 现在,我更好地了解了为什么549是您要修复的问题。 :微笑:

此页面是否有帮助?
0 / 5 - 0 等级