我有一个惠普Ultrium 448磁带备份,这是公认的,似乎没有问题的Ubuntu。我能在/dev/st0看到它。
当我发布mt -f /dev/st0 offline时,磁带会弹出。当我发布mt -f /dev/st0 status时,我得到:
SCSI 2 tape drive:
File number=0, block number=0, partition=0.
Tape block size 0 bytes. Density code 0x42 (LTO-2).
Soft error count since last status=0
General status bits on (41010000):
BOT ONLINE IM_REP_EN当我发布tar -tzf /dev/st0时,我得到:
tar (child): /dev/st0: Cannot read: Cannot allocate memory
tar (child): At beginning of tape, quitting now
tar (child): Error is not recoverable: exiting now
gzip: stdin: unexpected end of file
tar: Child returned status 2
tar: Error is not recoverable: exiting now我怀疑这是因为它是用Windows 2003 Backup实用程序创建的。我意识到我可以利用mtftar来获取这些内容,但是如何首先获得原始备份数据?我似乎无法在这里列出驱动器上的文件内容。为了查看备份磁带上的数据结构,我是否需要通过管道,通过mt启动某种读取,然后通过mtftar进行传输?
发布于 2015-04-21 06:31:36
根据文档,mftar应该能够直接从磁带上读出,所以.
mftar < /dev/st0 | tar tvf -如果您希望先从磁带上抓取数据,然后使用mftar操作,那么可以使用dd例如
dd if=/dev/st0 of=output1您可能需要用dd指定块大小。如果您不知道磁带是如何编写的,那么tcopy可以向您报告其格式。
如果在一个磁带上有多个图像,那么您需要使用非回绕设备/dev/nst0,并在需要时使用显式重卷。
发布于 2017-05-21 02:44:26
我只是偶然发现了同样的错误信息,并在这个问题中发布了详细的解释。
简而言之,Cannot allocate memory意味着用于读取磁带的程序没有使用足够大的缓冲区读取磁带上的数据。如果正在使用的程序不能具有读取缓冲区集的大小,则可以为此使用dd:
dd if=/dev/nst0 bs=1M | tar tvf -这将使用1MB的读缓冲区,它将能够读取1MB或小于1MB的磁带块。根据需要增加,直到Cannot allocate memory消失-值需要相同或大于磁带上最大的块。
磁带块的大小是在编写过程中由编写应用程序设置的。
https://serverfault.com/questions/684248
复制相似问题