首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >恢复旧的SunOS磁带

恢复旧的SunOS磁带
EN

Server Fault用户
提问于 2012-03-05 18:03:30
回答 5查看 2K关注 0票数 5

我有一些旧的SunOS磁带,我需要看一下目录,然后再把它们撕碎。

是否有Linux解决方案来恢复这些磁带?

EN

回答 5

Server Fault用户

发布于 2012-03-05 20:34:22

如果磁带是tar格式的,那么您可以尝试

代码语言:javascript
复制
tar -tf /dev/sr0

如果文件是cpio格式,那么

代码语言:javascript
复制
cpio -ivtB </dev/sr0

可能会起作用。如果磁带是ufsdump格式的,可以尝试使用restore

代码语言:javascript
复制
restore -if /dev/st0

然后使用ls和cd查看上面的内容

票数 8
EN

Server Fault用户

发布于 2012-03-21 11:49:12

我给出了部分答案,但还不完整。下面是关于如何在linux主机上读取未知磁带的建议:

阻塞因子

您需要知道使用了什么阻塞因子,除非(可能是古老的)驱动器使用固定的块大小。首先,必须设置驱动器以使用软阻塞因子:

代码语言:javascript
复制
# mt -f /dev/nst0 setblk 0

然后,您将使用dd从磁带读取一个块:

代码语言:javascript
复制
dd if=/dev/nst0 of=./testfile bs=128k count=1

你可能需要尝试几个块大小,最好是足够大的东西。如果选定的dd块大小大于实际磁带块大小,dd将只读取一个块,如下所示:

代码语言:javascript
复制
# dd if=/dev/nst0 of=./testfile bs=128k count=1
1+0 records read
1+0 records written
32768 bytes (32 kiB) copied, 236 kiB/s

这里我们发现使用了32K块大小,这是第一个重要的信息。注意:如果使用太大的块大小,可能会出现各种奇怪的错误,比如IO错误。大多数旧的磁带驱动器一次不接受超过128 K的读数,对于QIC这样的古老格式,则可能更少。

数据格式

现在您已经确定了磁带块大小,现在是时候了解磁带数据格式是什么样的!在这里,我们应该使用一个宝贵而强大的工具:file命令。现在,我们应该从磁带中拿出更多的块,以确定什么更容易:

代码语言:javascript
复制
# dd if=/dev/nst0 of=./testtape.img bs=32k count=100
100+0 records read
100+0 records written
3276800 bytes (3 MiB) copied, 160 kiB/s
# file ./testtape.img
testtape.img: POSIX tar archive (GNU)

方便地,文件将正确识别大部分tar,cpio,*转储数据,压缩数据,从长期的尝试和错误游戏。

警告

磁带很可能承载几种不同的数据格式。对于使用无索引格式(如tar)的磁带,常见的情况是有一个文本文件将磁带内容作为第一个文件列出,或者其他一些类似的标题。因此,在找到实际数据之前,您可能需要阅读几条记录。

票数 6
EN

Server Fault用户

发布于 2013-02-05 18:05:09

这些磁带是用SunOS的一个独特版本编写的,我猜SunOS 2或3只存在于早期版本中。当时,S(当时我还是个牛仔,而不是系统管理员),Auspex (SunOS)是UNIX文件服务器上的主要游戏之一。Sun试图启用大型文件(> 2GB,又名BIG_FILE)。CPIO的具体内容是CPIO转储记录中X位的第一个字段是该INODE中的字节计数。一切都很好很好。但是,后来的CPIO被标准化为不同的字节数,以表示INODE的字节数。

您可以想象,当您的文件名前面是随机位时,并且字节计数是错误的,会带来多大的乐趣。

票数 4
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/366571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档