restic version
Restic 0.6.1(v0.6.1-126-gb0fb95df)
在darwin / amd64上使用go1.8.3编译
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路径,我会感到困惑。
更新:好的,用/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啊! 感谢您的解释,这更有意义。 因此, --exclude
与restic backup
一起使用对于文件系统是绝对的,而--include
(与restic restore
)对于存储库是绝对的。 换句话说,这些模式对于文件的来源是绝对的。
非常感谢您的解释。 现在,我更好地了解了为什么549是您要修复的问题。 :微笑:
最有用的评论
igh,是的,你绝对正确。 对于备份内容,排除模式是绝对的:
模式
/home/matt/*.go
与运行restic backup /home/matt
时家中的所有Go文件匹配。 由于存档器的工作方式(请参阅#549,我们需要更正错误的设计决策),将删除/home/
前缀,并且快照中的顶级路径组件为/matt
。 因此,对于还原,您需要使用/matt/*.go
的包含模式来匹配相同的文件。 我知道这很糟糕,我会最终纠正它:)因此,这是您的用例的更正排除文件列表: