我正在尝试编写一个备份解决方案,它将使用硬链接和 rsync 拍摄文件夹的快照,每小时它会运行它的东西,并拍摄快照。我已经整理了大部分内容,只是缺少一些小细节。
我已经在计划一个系统,该系统将根据它们之间的距离以及它们以某种指数退避方式的年龄来清除旧备份。因此,每小时备份不会占用太多磁盘空间。(每个备份的年龄除以它之后的备份......)
但是,我将在一台定期不会更改备份的机器上运行它(过夜,人们度假时等),因此,我想考虑到这一点。如果只是为了省电。
有没有办法知道整个 /home/ 目录的最后修改时间是什么时候?
最好不要完全遍历目录,因为这会有点失败。
有没有更好的方法来做到这一点?
-u or --update
Rsync 可以使用标志 执行此功能。从 rsync 手册页:
如果您不想使用 rsync,我可以想到另外两种获取此信息的方法。但是这两种方法都需要您深入了解文件系统。
首先是更丑的方式:
使用 stat
stat --format=%y <file>
并解析输出的时间。你必须做一些非常丑陋的事情才能让它正常工作。第二种更流畅的方式:
用于
find <path> -mtime -<number_of_days>
获取 number_of_days 前窗口中已修改的文件列表。回复:省电
这需要一些黑客攻击,并且不会 100% 可靠 - 从某种意义上说,您可能会错过需要备份的东西。但是您可以执行以下操作,而不是在某些窗口期间针对家庭驱动器运行:
第一个日期测试,检查它是否在晚上 10 点之前,第二个在上午 8 点之后,最后一个检查星期几是否小于或等于 5(
date +%u
输出星期几从 1-7,其中一个是星期一,所以6 & 7 是周六和周日)至于假期,我唯一能想到的就是为每个假期维护一个包含一年中日期的文件,然后匹配
date +%j