我想使用dd或tar为每个文件保存我写入磁带的文件日志.然后在运行结束时,使用dd将该日志添加到磁带的开头.如果它工作,我可以通过读取前几个块看到任何磁带的内容,然后使用“mt fsf”将磁带定位在指定的文件.日志看起来像:
原文链接:https://www.f2er.com/bash/385390.html1 file1.gz 2 file2.gz 3 ...
也许我会包含一个有用的例子:
to restore the second file from the this list: mt -f /dev/nst0 fsf 2; tar xf /dev/nst0
我通过在磁带上写一个空格来开始运行:
## prepare a placeholder at the beginning of the tape dd if=/dev/zero bs=32k count=1024 of=/dev/nst0 ## loop through the files in the directory,writing them to tape and a log for file in $(ls test_dir); do tar cf /dev/nst0 $file && echo $file >>process.log done ## rewind the tape and prepend the process.log to the tape mt -f /dev/nst0 rewi (dd if=process.log bs=32k; dd if=/dev/zero bs=32k count=1024)|dd of=/dev/nst0 bs=32k conv=noerror,sync,block count=1024 ## see if worked mt -f /dev/nst0 rewi dd if=/dev/nst0 of=process.log bs=32k mt -f /dev/nst0 fsf 1 tar tf /dev/nst0
不幸的是,虽然我可以从磁带上读取日志,但我似乎无法提取任何进一步的数据,从而产生下面的输出.如果我不尝试使用进程日志覆盖第一个文件,它会在test目录中生成一个文件的名称.
tar: This does not look like a tar archive tar: Error exit delayed from prevIoUs errors
这真的没办法吗?我知道我可以统计所有文件,然后将一个应该放在磁带上的文件列表(基于已知/估计的磁带容量),然后先写入;那不是那么聪明.