以这种方式实现的安全,高效,版本保留,文件名隐藏备份?[关闭]


0

我尝试编写一个“完美”的备份程序(如下),但遇到了问题(也在下面)。是否有效率/工作版本?:

  • 假设:您从“本地”备份,您拥有并且磁盘空间有限,因为“远程”具有无限的磁盘空间并且属于其他人,因此您需要加密。网络带宽是有限的。

  • 'local'为每个文件保留一个包含此数据的备份文件的数据库:

    • 文件名,包括完整路径

    • 文件的最后修改时间(mtime)

    • sha1sum文件的未加密内容

    • sha1sum文件的加密内容

  • 给定要备份的文件列表(有些可能已备份),程序运行'find'并获取每个文件的完整路径/ mtime(这相当有效;相反,计算每个文件的sha1sum不会有效)

  • 该程序丢弃文件名和mtime在“本地”db中的文件。

  • 程序现在计算每个剩余文件的未加密内容的sha1sum。

  • 如果sha1sum与'local'db中的一个匹配,我们在'local'db中创建一个特殊条目,将该文件/ mtime指向现有条目的文件/ mtime。实际上,我们说“我们备份了这个文件的内容,但是在另一个文件名下,所以不需要再备份它”。

  • 对于每个剩余的文件,我们加密文件,获取加密文件内容的sha1sum,将文件rsync到sha1sum。示例:如果文件的加密sha1sum是da39a3ee5e6b4b0d3255bfef95601890afd80709,我们将它同步到'remote'上的/ some / path / da / 39 / a3 / da39a3ee5e6b4b0d3255bfef95601890afd80709。

  • 一旦上面的步骤成功,我们将文件添加到'本地'数据库。

  • 请注意,除非绝对必要,否则我们会有效地避免计算sha1sums和加密。

  • 注意:我没有指定加密方法:这是用户的选择。

问题:

  • 我们必须定期加密和备份“本地”数据库。但是,“本地”数据库快速增长,并且rsync的加密文件效率低下,因为“本地”数据库中的一个小变化意味着“本地”数据库的加密版本发生了重大变化。

  • 我们在'local'上为'local'上的每个文件创建一个文件,这个文件很丑陋而且过分。

  • 我们经常查询“本地”数据库。即使是w /索引,这些查询也很慢,因为我们经常对每个文件进行一次查询。通过批处理查询或其他东西可以加快速度。

  • 可能是我现在忘记的其他问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.