我有一些磁带驱动器,并决定将我的数据备份到磁带(原因之一是我的大部分数据没有变化,因此,一旦我做了充分的备份,磁带将有更好的机会工作后,坐在架子上一段时间比硬盘驱动器)。
我想使用简单的Linux工具来做这些备份,而不是像bacula这样有自己数据库的更复杂的软件。我的用例有点不同,我宁愿编写自己的脚本来这样做。
tar和cpio对此很有用,但由于格式的原因,它需要读取整个磁带(可能需要几个小时)才能列出文件,如果我想在磁带的末尾还原一个文件,它需要再次读取整个磁带。
由于LTO磁带的写入方式(多次传递以填充磁带),因此可以在不读取磁带开头的所有数据的情况下相对较快地查找存档末尾的文件。
例如,使用mt到达下一个文件所需的时间比tar要短得多,可以扫描存档以生成文件列表,或者从归档的末尾恢复1KB的文件。
在磁带的开头放一个“目录”也是可能的,这样你就可以知道磁带上有哪些文件,它们在哪里。
像BackupExec这样的软件可以做到这一点--“编录”磁带只需要很短的时间,恢复磁带末尾的文件也需要很短的时间。
我可以在目录上运行ls (或find),将输出写到磁带,然后将该目录转到磁带。这将解决清单问题,但是tar仍然需要很长时间才能恢复最后一个文件。
是否有一个与tar类似的简单工具,但可以在归档开始时创建文件列表,并能够寻求恢复文件?
发布于 2020-01-26 13:37:29
如果你可以随心所欲地跳过磁带,我看不出把内容清单放在最前面有多大的好处。
我会在每个磁带上附加一些较小的tar档案,以提高对特定文件的检索时间。每个磁带可能有20个存档子文件是一个适当的平衡。
我会将每个磁带的目录保存在磁盘上:可能是每个磁带的子目录,包含每个tarfile的tar -tvf,命名如下:
tar_yyyymmdd_hhmmss_LTO_nnnnn_sub_vv.toc
这为您提供了一个用于整个集合的在线搜索工具,而不必知道要加载哪个磁带才能获得内容列表。
我会把具体的目录存档到它自己的磁带的末尾,当你不打算再附加的时候,并且把所有的目录定期地存档到一个单独的磁带上。将目录多次存档到自己的磁带不会有什么坏处:您可以通过跳过媒体结束,然后跳回1,找到最后一个版本。
发布于 2020-01-26 15:09:22
我们过去在一个磁带上存储多个tar档案,在Solaris上存储QIC磁带。
要管理物理磁带,有mt(1)命令。具体来说,这允许您使用磁带标记(使用绝对或相对编号)前后间隔。令人困惑的是,术语使用的是“文件”,即由磁带标记分隔的多个子文件。完整的tar存档将对应于一个“文件”。
mt命令在我的LinuxMint18.1上有一个二进制文件和一个手册页。磁带是非常不标准的-一些类型的甲板不会有所有的命令,但塔帕马克是相当基本的。
标准磁带设备通常在每次使用之前和之后都会在默认情况下倒带,从而破坏您所做的任何预定位。通常,每个甲板都有一个像/dev/rmt0 0这样的指示符,以及一个额外的设备,用于/dev/nrmt0 0这样的物理单元,其中n表示“不倒带”。
因此,您可以将追加的tar命令嵌入到执行以下操作的脚本中:
mt -f /dev/nrmt0 rewind
mt -f /dev/nrmt0 eod
tar -f /dev/nrmt0 ...
mt -f /dev/rmt0 offline您需要保存一个目录,说明哪些档案位于哪个磁带上,哪个子文件上有哪些档案,您的检索结果如下:
mt -f /dev/nrmt0 rewind
mt -f /dev/nrmt0 fsf 17
tar -f /dev/nrmt0 ...将您的档案分解成许多较小的部分,并在它们之间跳过,将是检索少量文件的重要优化。
https://unix.stackexchange.com/questions/564146
复制相似问题