Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/07/2012, à 13:02

doukremt

[RESOLU] Tar - lister contenu d'une archive avant qu'elle soit splitée

Bonjour,

Je viens solliciter votre aide à propos de tar, que j'utilise conjointement à split pour faire des sauvegardes incrémentielles, de la manière suivante :

tar -czvg $INCR -f - -T $LISTEFICHIERS | split -db 50m - $BACKUP

L'intérêt du pipe est d'éviter de se retrouver avec, d'une part, une grosse archive .tar.gz, et de l'autre, plein de petits fichiers .00, .01, etc. Le volume disque requis pour la sauvegarde est ainsi réduit de moitié.

Cependant, je ne trouve pas de moyen pour enregistrer quelque part sur mon disque la liste des fichiers compris dans l'archive tar, cela avant qu'elle soit découpée en morceaux. S'il ne s'agissait pas d'une sauvegarde incrémentielle, ce ne serait pas gênant, mais, dans le cas présent, il m'est utile de savoir ce que contient chaque sauvegarde, pour pouvoir, si c'est possible, ne décompresser que les fichiers dont j'ai besoin. Je pourrais certes lister l'archive après qu'elle ait été créée, en utilisant

tar -tvf

mais cela obligerait à agir en deux temps.

Je me demande donc s'il y a un moyen, quel qu'il soit, de savoir ce que contient ou va contenir l'archive tgz, sans pour autant être obligé de rester devant mon ordinateur. J'aimerais, en fait, que la liste de fichiers qui s'affiche sur l'écran pendant que tar compresse me soit accessible plus tard.[RESO

Dernière modification par doukremt (Le 12/07/2012, à 14:29)

Hors ligne

#2 Le 12/07/2012, à 13:49

Haleth

Re : [RESOLU] Tar - lister contenu d'une archive avant qu'elle soit splitée

ls > fichier

Par exemple:

alex@jack:~/toto$ ls
t1  t2
alex@jack:~/toto$ ls > fichier
alex@jack:~/toto$ ls
fichier  t1  t2

Le > permet de rediriger un flux vers un fichier, ou vers un autre flux
> est le stdout (alias de 1>)
2> est la sortie d'erreur (stderr)

Tu peux compiner les deux:
2>&1 (stderr s'ajoute à stdout)


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#3 Le 12/07/2012, à 13:59

doukremt

Re : [RESOLU] Tar - lister contenu d'une archive avant qu'elle soit splitée

Haleth a écrit :
ls > fichier

Par exemple:

alex@jack:~/toto$ ls
t1  t2
alex@jack:~/toto$ ls > fichier
alex@jack:~/toto$ ls
fichier  t1  t2

Le > permet de rediriger un flux vers un fichier, ou vers un autre flux
> est le stdout (alias de 1>)
2> est la sortie d'erreur (stderr)

Tu peux compiner les deux:
2>&1 (stderr s'ajoute à stdout)

En fait, je connais ça, mais je ne sais pas quelle syntaxe il faut adopter lorsqu'on utilise un pipe en plus. J'avais bien essayé :

tar -czvg $INCR -f - -T $LISTEFICHIERS > $LISTETAR | split -db 50m - $BACKUP

mais cela ne donne pas les résultats escomptés.

Je pourrais bien faire

tar -czvg $INCR -f $BACKUP.tar.gz -T $LISTEFICHIERS > $LISTETAR

puis

split -db 50m $BACKUP.tar.gz $BACKUP

mais cela oblige à passer par deux étapes. L'idéal serait de ne pas enlever le pipe, pour que l'opération se déroule en un seul moment.

Dernière modification par doukremt (Le 12/07/2012, à 14:06)

Hors ligne

#4 Le 12/07/2012, à 14:04

Haleth

Re : [RESOLU] Tar - lister contenu d'une archive avant qu'elle soit splitée

Les fichiers sont envoyés sur stderr
Donc:

tar -czvg $INCR -f - -T $LISTEFICHIERS 2> $LISTETAR | split -db 50m - $BACKUP

Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#5 Le 12/07/2012, à 14:04

louis94

Re : [RESOLU] Tar - lister contenu d'une archive avant qu'elle soit splitée

Bonjour,

Sinon, il y a moyen de simplement lister les fichiers qui vont être archivés :

find $LISTEFICHIERS

Et uniquement les fichiers :

find -type f

Ça ne résout pas ton problème d'agir en deux temps, mais ça évite un deuxième appel à tar (et donc une analyse de l'archive).

Louis

Hors ligne

#6 Le 12/07/2012, à 14:12

doukremt

Re : [RESOLU] Tar - lister contenu d'une archive avant qu'elle soit splitée

Haleth a écrit :

Les fichiers sont envoyés sur stderr
Donc:

tar -czvg $INCR -f - -T $LISTEFICHIERS 2> $LISTETAR | split -db 50m - $BACKUP

Merci, ça marche nickel !
Par contre, je saisis pas l'histoire de stderr : vu le nom, j'aurais pensé que c'était pour les messages d'erreur, or ici, si le code de retour est 0, il ne devrait rien avoir d'écrit ?

Hors ligne

#7 Le 12/07/2012, à 14:14

Haleth

Re : [RESOLU] Tar - lister contenu d'une archive avant qu'elle soit splitée

En fait, chaque programme possède 3 flux par défault:
- stdin
- stdout
- stderr

Chaque programme peut:
- fermer les flux
- en ouvrir d'autre
- écrire ce qu'il veut, la où il veut

Dans le cas présent, le flux stdout fait passer le contenu de tar, qui est recup par split via le pipe
Pour pouvoir, cependant, afficher la liste des fichiers, les dev le font passer par stderr


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#8 Le 12/07/2012, à 14:28

doukremt

Re : [RESOLU] Tar - lister contenu d'une archive avant qu'elle soit splitée

Ah ok je saisis ! Merci pour l'info wink

Je passe tout ça en résolu.

Hors ligne