我们需要备份具有大量硬链接的文件系统。由于每个“真实”文件都有多个硬链接,我们希望在备份文件系统时跳过所有硬链接以避免每个文件的 n 个精确副本。
备份是使用 Tivoli Storage Manager Backup 完成的,我们一直无法让它将硬链接视为要一起备份的单独文件以外的任何内容。
如果它与可能的解决方案相关,我想指出,可以通过文件名从正确的文件中区分硬链接:
foobarbaz-123.ext # file
foobarbaz-123-1.ext # hardlink
foobarbaz-123-2.ext # hardlink
barbazfoo-456.ext # file
barbazfoo-456-1.ext # hardlink
barbazfoo-456-2.ext # hardlink
barbazfoo-456-3.ext # hardlink
也就是说,所有硬链接的文件名中都有两个连字符,而正确的文件只有一个。
服务器运行 Ubuntu Linux,文件位于我们 SAN 上的 gfs 卷上。
快速阅读一些 TSM 文档建议“不要那样做!”
对于 unix,“文件”只是一个指向 inode 的目录条目。“硬链接”只是当您有多个目录条目(指针)指向给定的 inode 时。出于所有意图和目的,这两个“文件”完全 100% 相同。
硬链接在 Unix 中是一种成熟且易于理解的机制。遇到它们是正确和常见的,备份软件通常会准确理解硬链接是什么并完全按照应有的方式备份它——作为指向特定数据片段的另一个指针,而不是作为独特和新颖的片段恰好与其他硬链接完全相同的数据。
tsm 和硬链接的快速谷歌表明 tsm 理解硬链接,并且文档特别警告:
有趣的是,似乎有两种不同的方式可以使用 TSM 进行备份——备份和存档,这两种方式似乎处理硬链接的方式不同。
备份和恢复文件:
归档和恢复文件:
由此看来,如果备份服务器正在“归档”事物,您似乎会炸毁备份服务器,而如果您正在“备份”,它会做您想做的事情。让 IBM 让它变得简单!
首先,“正确文件”和“硬链接”没有区别,硬链接只是同一个对象的另一个名称,而软链接实际上是一个包含指向真实文件的指针的文件,这就是为什么软链接可以跨文件系统边界和硬链接不能。
关于实际问题:查看文档中的 Exclude 选项和 include-exclude-list 选项,您应该能够使用它们解决问题。(喜欢
exclude /path/to/your/files/*-*-?.*
什么的)。在不了解 Tivoli Storage manager 的情况下,不可能获得任何软件以区别对待文件的硬链接,因为原始文件句柄和其他硬链接之间没有实际区别。(可能会根据文件名编写脚本)
升级到 TSM 6.1 并激活重复数据删除。(目前仅适用于设备类型 FILE,但耐心是一种美德)