Her dosya için dd veya tar kullanarak kasete yazdığım dosyaların bir kaydını tutmak istiyorum. Ardından, çalışmanın sonunda, o günlüğü dd kullanarak kasetin başına kadar hazırlayın. Eğer çalışırsa, ilk birkaç bloğu okuyarak herhangi bir bandın içeriğini görebilirim ve daha sonra kaseti belirtilen dosyaya yerleştirmek için "mt fsf" yi kullanabilirim. Günlük, şöyle bir şeye benzeyecektir:
1 file1.gz
2 file2.gz
3 ...
Ve belki de faydalı bir örnek eklerim:
to restore the second file from the this list: mt -f /dev/nst0 fsf 2; tar xf /dev/nst0
Teybe boş bir yer yazarak koşuya başlıyorum:
## 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
Maalesef kayıt kaydını banttan okuyabildiğim halde, daha fazla veri çekemiyorum, bunun altındaki çıktıyı üretiyorum. İşlem günlüğüyle ilk dosyanın üzerine yazmayı denemezsem, test dizinindeki bir dosyanın adını üretir.
tar: This does not look like a tar archive
tar: Error exit delayed from previous errors
Bunun gerçekten bir yolu yok mu? Tüm dosyaları sıralayabildiğimi ve ardından teybe sığması gereken dosyaların bir listesini hazırlayabileceğimi biliyorum (bilinen / tahmini teyp kapasitesine bağlı olarak), sonra ilk önce bunu yazın; Bu neredeyse zekice değil.