我需要自动将大量数据(平均每天大约 1TB,到目前为止已经 60TB,并且还在增加)移动到单独的远程存储系统。
到目前为止,我一直通过编写自定义 python 代码来实现这一点,因为将数据打包成适合网络传输的块以及可用的协议(在我们的例子中是 GridFTP)存在一些特殊的挑战。
我想知道是否有任何材料(文章、博客文章或书籍——如果它们真的很好)提供最佳实践和/或关于如何以健壮和容错的方式编写数据管理脚本的提示?
更新/澄清:我应该补充一点,我们或多或少已经解决了文件上传问题(通过比较远程和本地校验和)。但是,我们需要处理的问题远不止这些,因为我们为 HPC 中心的所有项目提供了类似“Dropbox”的解决方案,因此我们基本上从这个 Dropbox 界面管理所有内容,直到用户想要从存储中取回一个特殊文件。
因此,我们需要处理项目、归档事件、所有文件的元数据(包括创建校验和等),所有这些都以完全自动化的方式进行,其中一个归档事件可以包含 5TB,分布在数千个中型到小型文件上。
这要求以健壮且容错的方式编写我们的自动化软件,因为我们无法真正手动跟踪存储的每个文件。
因此,我更多地寻找编写软件的一般提示/最佳实践(特别是数据处理/执行系统调用),而不仅仅是如何验证上传。
我希望看到最佳实践和提示,例如:异常处理、日志记录、验证、自动化测试等......以及如何将所有这些结合起来以获得一个您可以依赖的解决方案而无需持续关注它(您应该在需要时收到邮件等)。
答案1
我将使用经典的校验和方法和 tar 档案。
- 创建 tar
- 计算 SHA-1 校验和
- 转让
- 比较校验和
脚本编写足够简单、独立于协议并且绝对是最可靠的方法。
答案2
顺便说一下,我想我现在至少自己找到了一些东西(但如果有的话,我还在寻找更多!):