extraire des fichiers tar répartis sur plusieurs DVD


2

Si j'ai un fichier tar bziped divisé en plusieurs DVD, quel est le meilleur moyen de l'extraire sans créer beaucoup de fichiers intermédiaires? Je ne veux pas d'abord copier toutes les parties de l'archive sur un disque intermédiaire.

jusqu'à présent, le mieux que je puisse trouver est

terminal 1:

mkfifo temppipe1
mkfifo temppipe2
...
mkfifo temppipen
cat temppipe* | bunzip2 |tar -xvf -

terminal 2:

dd if=archive.tar.bz_part1 of=temppipe1
....
dd if=archive.tar.bz_partn of=temppipen

Cela fonctionne, me permettant de changer le dvd après chaque dvd mais me semble potentiellement créer beaucoup de pipes nommées et potentiellement sujettes aux erreurs. Une faute de frappe dans le terminal 2 et tar va cesser, ne laissant aucune option mais recommencer. Il est également essentiel de créer suffisamment de tubes de noms au début

Quelqu'un a de meilleures idées?


Vous devriez examiner l' --multi-volumeoption suivante - L'une des tarspécialités de 's est le fractionnement séquentiel d'une archive sur plusieurs périphériques.
Darth Android

Malheureusement, l'utilisation de -Mempêche la compression sur toutes les versions de tar (gros inconvénient), n'aide en rien à extraire les archives fractionnées existantes et pose un problème de portabilité.
camelccc

Réponses:


3

Vous pouvez utiliser un seul canal et laisser un scripteur ouvert dessus pour qu'il ne se ferme pas avant que vous n'ayez terminé.

terminal 1:

mkfifo temppipe
tar xvfj temppipe

terminal 2:

cat > temppipe

Nous catn'aurons rien écrit dans le tuyau, mais sa présence gardera le tuyau ouvert pendant l'exécution des ddcommandes.

terminal 3:

dd if=archive.tar.bz_part1 of=temppipe # and so on

Retournez ensuite au terminal 2 et appuyez sur Control-D. catenverra la fin de fichier finale et tar se terminera.


Cela a l'air très unix. J'ai une question cependant, je suis en train de sauvegarder des choses en utilisant des disques BD 50G. Je me demande si cela va faire exploser la mémoire?
Carl Dong

Non, l'utilisation de la mémoire sera constante. Seule une quantité limitée d'informations peut être dans la conduite en attendant d'être lue. Si vous ddessayez d'écrire des données plus rapidement que vous tarne pouvez le lire, il se bloquera jusqu'à ce qu'il se tarrattrape.
wingedsubmariner

Voulez-vous dire qu'il est extrait à la volée au fur et à mesure que j'insère les données? Aussi, je suppose que cat archive > temppipefonctionne aussi, non?
Carl Dong

Oui, il sera extrait à la volée. Et catdevrait fonctionner aussi bien que dd.
wingedsubmariner
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.