Petite question sur tar

Fermé
lili42 - 26 mars 2005 à 19:29
 lili42 - 27 mars 2005 à 18:21
salut,
je cherche comment faire pour ajouter des fichiers/dossiers à une archive tar existant, mais en les placant dans un répertoire précis de l'archive.
j'ai epluché le man mais j'ai rien trouvé là-dessu.
merci d'avance pour votre aide.

3 réponses

C'est assez facile avec l'option "r" pour ajouter. Pour le repertoire precis c'est le repertoire original ou les fichiers se trouvent et l'endroit ou tu es pendant l'appel de la commande tar qui comptent!

Par exemple supposons tu as un repertoire "toto" avec de fichier *.c et *.h la dedans.
D'abord du cree l'archive ou tu mets les *.c avec:
tar cvf archive.tar toto/*.c

Maintenant tu veux ajouter les autres fichier *.h. Pour ca tu fais:
tar rvf archive.tar toto/*.h

et ca sera aussi dans toto/... dans l'archive.

Mais supposons au lieu de ca tu veux separer les *.h dans un autre repertoire dans le tar, disons "toto_bis". Dans ce cas il faut preparer sur ton disque dur dans un repertoire quelconque le sous-repertoire "toto_bis" et tu dois y copier les *.h, par exemple tu peux le faire dans le repertoire temporaire:
mkdir /tmp/toto_bis
cp toto/*.h /tmp/toto_bis
cd /tmp
tar rvf /repertoire_initial/archive.tar toto_bis/*.h

ici /repertoire_initiale/ est le repertoire initial ou tu etais au debut et ou il y a le sous-repertoire toto et l'archive a creer.

Donc pour placer de fichiers dans un sous-repertoire specifique dans le tar il faut fournir la meme structure de sous-repertoire quelque part sur ton disque dur (dans ton home ou /tmp). Apres il faut aller avec "cd" au bon endroit ou la structure de sous-repertoires commence (la tete de l'arbre) et apres il faut faire la commande

"tar rvf /.../archive.tar "chemin_relatif_des fichiers"

Bien sur il faut faire attention a l'endroit ou le fichier archive.tar se trouve (c'est pour ca il y a le /.../ pour designer le bon repertoire de ce fichier).
C'est n'est pas tres commode comme methode mais ca fonctionne.


Apres il y a aussi l'option "-C" pour changer de repertoire. Par exemple avec:
tar -r -C toto -vf archive.tar dummy.h 

tu ajoutes le fichier dummy.h qui se trouve dans toto/... dans l'archive mais dans la racine de l'archive. Je ne crois pas que tu peux placer un fichier a un sous-repertoire autre que la racine comme ca. Pour ca il faut utiliser la methode de ci-dessus.


Moi personnellement je n'aime pas l'option "r" pour ajouter car elle ne marche avec la l'option "z" (ou "j") pour comprimer avec gzip (ou bzip2). Elle ne marche qu'avec des archives tar non-comprimes.
Pour des archives de tailles modeste (quelques Mo) c'est plus simple de recreer l'archive completement si on veut le modifier.
3
Si tu as toujours une copie de ton arbre sous la main sur le DD tu peux simplement faire avec "tar rvf archive.tar chemin/fichier".
Ca devient seulement plus complique s'il faut recreer l'arbre de repertoires mais avec "mkdir -p ..." tu peux creer une chaine de sous-repertoire d'un seul coup et dans un script tu peux tres bien faire ca, plus la copie et plus le nettoyage apres.

Par contre si tu veux comprimer ton archive il faut le faire apres avec gzip ou bzip2. On ne peut plus faire avec une seule commande tar et l'option "z" ou "j' car l'option "r" n'est pas compatible avec ca.
1
oki, je vais me débrouiller avec ca.
en tout cas merci beacoup pour ton aide.
0
hum...
en gros c'es vrament la merde...
en fait je dois coder un script qui gere de grosses archives tar (~50mo), et donc entre autre pouvoir ajouter par exemple un seul petit fichier dans l'arborescence d'une archive. apparemment je vais donc etre obligé de tout décompacter, placer mon fichier, et recréer le tar...
en tout cas merci beacoup de ta reponse
0