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?

camelccc
la source
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.

Wingedsubmariner
la source
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