我正在研究一种自动化机制,以便每天备份我们的EBS卷.
我非常了解创建新快照的步骤.显然,这一切都非常简单,你有一个可以快照的EBS卷,你可以随时恢复快照.精细.
但我关心的是快照的大小,我知道这些快照在S3中存储了压缩,我们将根据快照的大小来收费.如果我们拥有大量数据,那么我们每次备份的发票都会大幅增加.
但是,根据亚马逊的网页,这些快照是增量的.这解决了我的问题,因为每日备份只会上传自上次快照以来已更改的数据.但这引出了我的下一个问题:如果备份是增量备份而我们只上传修改后的数据,那么原始数据存储在哪里?(即显然无法逐步完成的第一个快照......)
不幸的是,我无法在整个亚马逊的文档中找到这些信息.
有没有人有快照及其账单的经验?
我很感激任何帮助,谢谢!
你可能知道,Ruby有一个简写操作符&,让我们可以轻松地将a转换Symbol为a Proc.例:
%w(a b c).map(&:upcase) #=> ["A", "B", "C"]
Run Code Online (Sandbox Code Playgroud)
相当于:
%w(a b c).map { |c| c.upcase } #=> ["A", "B", "C"]
Run Code Online (Sandbox Code Playgroud)
而解释是,&:upcase呼吁to_proc在:upcase创建一个Proc对象.
因此,这几乎解释了当运算符用作方法的最后一个参数时操作符的作用.
但是,看起来在方法调用的参数之外的任何地方都不可能使用运算符:
:upcase.to_proc => #<Proc:0x007febbc85ab38(&:upcase)>
&:upcase => SyntaxError: syntax error, unexpected &
Run Code Online (Sandbox Code Playgroud)
这样用得很好:
case number
when &:even?
# ...
when &:prime?
# ...
end
Run Code Online (Sandbox Code Playgroud)
这有效:
case number
when :even?.to_proc
# ...
when :prime?.to_proc
# ...
end
Run Code Online (Sandbox Code Playgroud)
简而言之,一元运算符&只能用于方法的参数,例如arr.map(&:upcase).这是什么原因?