Tar wird angehalten, nachdem ein Eintrag oder EOF in einem tatsächlichen Bandarchiv gefunden wurde

410
tanantish

Ich habe gerade einen Stapel LTO-5s und eine Bandbibliothek bekommen und die aufregende Aufgabe, eine Teilmenge von Dateien zu extrahieren.

Die Größenordnung liegt bei 60 Bändern von diesem Stapel, rund 10.000 Dateien von 70.000 pro Band (in etwa einem halben Dutzend oder einem Dutzend asstd-Verzeichnissen), die ich ziehen muss. In der Bandbibliothek wird tar 1.23 ausgeführt

Ich habe bereits vorhandene Dumps vom Inhalt der einzelnen Bänder, tar --listso dass ich dies mit meiner Liste der Dateien, die ich ziehen muss, in Einklang bringen kann, damit ich einen ordentlichen Strom von Datensätzen einlesen kann

tar -xvf /dev/nst0 -b $file_to_pull 

hält nicht an, bis ich das Bandende erreicht habe. Was sinnvoll ist - tar könnte mit einem Platzhaltermuster gefüttert werden, sodass es nur bis zum Ende des Archivs geht.

Ich denke, ich könnte das Problem lösen, indem ich einfach das Verzeichnis glob einspeise und unerwünschte Dateien lösche, sobald sie vom Band sind, aber ich kann nicht anders, als zu denken, dass es eine Möglichkeit gibt, tar an der EOF-Grenze anzuhalten und den Löschschritt zu überspringen . Recht? Bei all meiner Jagd habe ich jedoch nichts dergleichen gefunden.

Also fragen:

  • Gibt es eine Möglichkeit, Teer (oder etwas anderes) dazu zu bringen, nur eine Datei von dem Ort abzurufen, an dem sich der Bandkopf befindet, und dann anzuhalten ? Oder um Tar zu signalisieren, sobald er eine EOF bekommen hat und aufhört?

  • Oder greife ich dies auf eine seltsame Weise an? Gerne nehmen wir Vorschläge von anderen, wenn jemand sie hat.

Natürlich ist dies kein derzeit unlösbares Problem, nur meine derzeitigen Optionen scheinen sehr umständlich zu sein - dies war das erste Mal, dass ich mich in dieser Größenordnung wirklich mit Band beschäftigen musste (und unsere anderen Bänder sind alle LTFS) )

1

1 Antwort auf die Frage

2
meuh

Sie können tar dazu auffordern, alle paar Blöcke eine Aktion an den Kontrollpunkten auszuführen . Mit dieser Aktion kann getestet werden, ob die gewünschte Datei extrahiert wurde, und wenn dies der Fall ist, beenden Sie den Teer. Ich habe es mit einer tar-Datei ausprobiert und es scheint ok zu funktionieren.

Hier ist mein Beispielskript, um meinen Test durchzuführen, / usr / bin zu tarieren und usr / bin / bash in / tmp / usr / bin / bash zu extrahieren. Der Standardwert --checkpoint ist 10 Blöcke.

#!/bin/bash  cat <<\! >/tmp/checkdone #!/bin/bash # env has TAR_CHECKPOINT TAR_ARCHIVE TAR_VERSION TAR_BLOCKING_FACTOR # tar -C directory is NOT used for checkpoint action! want=$1  if size=$(stat --printf='%s\n' "$want" 2>&1) then if [ "$(</tmp/lastsize)" = "$size" -a -s /tmp/pid ] then echo "same size $size. time to stop" ls -l "$want" >/tmp/lastsize kill -1 $(</tmp/pid) else echo "partial size $size" echo "$size" >/tmp/lastsize fi else echo -n "." fi ! chmod +x /tmp/checkdone >/tmp/lastsize >/tmp/pid  tar -cf /tmp/tar /usr/bin/ # create example tar file # wanted file. must be in current dir want=usr/bin/bash cd /tmp || exit # dont use tar -C dir  tar -xvf /tmp/tar "$want" --checkpoint=10 --checkpoint-action=exec="/tmp/checkdone $want" & echo $! >/tmp/pid wait  rm /tmp/tar /tmp/pid /tmp/lastsize /tmp/checkdone rm -fr /tmp/usr 
Hm, Prost, ich denke, dies könnte der nächste sein, den ich (einige Tests jetzt) ​​am nächsten bekomme, ohne etwas Low-Level neu schreiben zu müssen, aber beim Erstellen des Bandkatalogs (den ich ohnehin als Referenz verwenden könnte) Holen Sie sich Dateigrößen, um zu wissen, wann ich anhalten muss. Ich muss bereits einen einzigen Durchlauf des Bandes durchführen. Zu diesem Zeitpunkt könnte ich auch nur einen vollständigen Speicherauszug erstellt haben. Verdammt, Teer! * waves faust * tanantish vor 8 Jahren 0
Ich erinnere mich an Bandlaufwerke (vor über 10 Jahren), dass das Laufwerk vielleicht zum Teil durch eine Datei gestoppt wird und sich trotzdem auf eine Lücke zwischen den Dateien auswirkt! Viel Glück und meine Sympathien. meuh vor 8 Jahren 0
Nun, es ist Band, also bekommen die Leute, die mich bitten, es wie ein Dateisystem mit wahlfreiem Zugriff zu behandeln, eine Schulung. Ich habe gerade akzeptiert, dass ich vielleicht auch ein paar Terabyte von Festplatten brennen könnte, also ja, die Laufwerke plappern weg und ich habe einen sekundären Prozess, um unerwünschte Dateien zu beschneiden, wenn der Wechsel von der Bereitstellung zum Leben eintritt. Die Dinge, die Sie tun: P tanantish vor 8 Jahren 0