A voir également:
- Tar désactiver/contouner arborescence
- Desactiver instagram - Guide
- Desactiver windows defender - Guide
- Mode securise android desactiver - Guide
- Desactiver uac - Guide
- Desactiver edge - Guide
12 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 2/10/2011 à 16:27
Modifié par dubcek le 2/10/2011 à 16:27
il faut la mettre sur la ligne de commande.
on peut faire comme ça
on peut faire comme ça
$ cat f1 #!/bin/bash CMD="" for F in /home/baba/fic*.txt /lala/caca/ba* /var/local/aa/bb/*.c ; do CMD="$CMD -C ${F%/*} ${F##/*/}" done echo tar -cvzf x.tar $CMD $ ./f1 tar -cvzf x.tar -C /home/baba fic*.txt -C /lala/caca ba* -C /var/local/aa/bb *.c
Bonjour,
Tiens, en voilà une belle colle !
Je n'ai rien trouvé dans le man de tar.
A la limite, tu peux utiliser cpio :
Pour compresser :
Pour décompresser :
Et si tu veux recréer l'arborescence, tu ajoutes un -d à cpio à la décompression (attention car contrairement à tar, il ne supprime pas d'office le slash initial).
Tiens, en voilà une belle colle !
Je n'ai rien trouvé dans le man de tar.
A la limite, tu peux utiliser cpio :
Pour compresser :
ls lala.tar.gz /home/baba/fic*.txt /lala/caca/ba* /var/local/aa/bb/*.c | cpio -ov | gzip > fichiers_au_nom_bizarre.cpio.gz
Pour décompresser :
gunzip -c fichiers_au_nom_bizarre.cpio.gz | cpio -iv
Et si tu veux recréer l'arborescence, tu ajoutes un -d à cpio à la décompression (attention car contrairement à tar, il ne supprime pas d'office le slash initial).
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
28 sept. 2011 à 09:22
28 sept. 2011 à 09:22
Salut,
Idem pour la man tar, rien de bien probant ;-((
Attention toutefois à la commande "ls" si les noms de fichiers comportent des espaces, ça va faire mal ;-)
Mieux vaut préférer la commande "find" et l'option "-print0" avec côté "cpio" l'option "-0" ou "--null" pour parer à toutes éventualités ;-))
Idem pour la man tar, rien de bien probant ;-((
Attention toutefois à la commande "ls" si les noms de fichiers comportent des espaces, ça va faire mal ;-)
Mieux vaut préférer la commande "find" et l'option "-print0" avec côté "cpio" l'option "-0" ou "--null" pour parer à toutes éventualités ;-))
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
28 sept. 2011 à 09:41
28 sept. 2011 à 09:41
hello
et avec
et avec
tar -czvf lala.tar.gz -C /home/baba fic*.txt -C /lala/caca ba* -C /var/local/aa/bb *.c
merci, je vais essayer avec cpio, ça me permet de résoudre une partie de mon problème (transfert de fichiers par pipe via ssh)
le problème qui pourrait se poser c'est que dans le cas ou je compresse en fichier .cpio.gz, ce fichier peut etre destiné à des postes sous windows qui risquent de ne pas savoir comment l'ouvrir
ça m'embêterait de devoir décompresser avec cpio pour ensuite recompresser avec tar.
Le -C pourrait aussi etre une solution, merci pour cette réponse, mais ça risque d'etre compliqué à mettre en place dans mon cas: j'ai de grosses listes de fichiers générées dynamiquement.
le problème qui pourrait se poser c'est que dans le cas ou je compresse en fichier .cpio.gz, ce fichier peut etre destiné à des postes sous windows qui risquent de ne pas savoir comment l'ouvrir
ça m'embêterait de devoir décompresser avec cpio pour ensuite recompresser avec tar.
Le -C pourrait aussi etre une solution, merci pour cette réponse, mais ça risque d'etre compliqué à mettre en place dans mon cas: j'ai de grosses listes de fichiers générées dynamiquement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour et merci pour vos réponses.
Mais hélas ça ne fonctionne pas : cpio se comporte exactement comme tar, il stocke les répertoires, et les recrée à l'extraction.
Quand je fais le cpio -iv, il cherche à parcourir arborescence des fichiers compactés dans le .tar, et comme ce chemin n'existe pas là ou j'extrais, j'ai droit à un message d'erreur. Avec le -d il me recrée l'arborescence, retour au point de départ.
Je ne trouve pas de solution avec les options de cpio
Auriez vous une solution ?
Merci
Mais hélas ça ne fonctionne pas : cpio se comporte exactement comme tar, il stocke les répertoires, et les recrée à l'extraction.
Quand je fais le cpio -iv, il cherche à parcourir arborescence des fichiers compactés dans le .tar, et comme ce chemin n'existe pas là ou j'extrais, j'ai droit à un message d'erreur. Avec le -d il me recrée l'arborescence, retour au point de départ.
Je ne trouve pas de solution avec les options de cpio
Auriez vous une solution ?
Merci
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
1 oct. 2011 à 13:56
1 oct. 2011 à 13:56
utiliser tar -C en fabriquant une variable avec la liste des répertoires et fichiers:
CMD="-C dir1 fich1 -C dir2 fich2 -C dir3 fich3" tar -czvf lala.tar.gz $CMD
merci je vais faire comme ça alors, pas d'autre solution.
Savez vous s'il est possible de passer toute cette chaine $CMD sur l'entrée standard de tar ? pour ne pas être limité
Savez vous s'il est possible de passer toute cette chaine $CMD sur l'entrée standard de tar ? pour ne pas être limité
Sinon, aux grands maux les grands remèdes : tu crées un répertoire temporaire, et tu fais des liens hard vers tous tes fichiers dans ce répertoire, tu tarres, puis tu supprimes le répertoire.
Merci dubcek!
Pour la solution hard c'est pas possible, je n'ai accès qu'en lecture au serveur.
L'idée c'est de transférer tous ces fichiers en les passant dans un pipe par une seule commande.
J'ai donc besoin, uniquement, qu'il m'envoie dans le pipe le nom de fichier+son contenu, et pouvoir recreer les fichiers à l'arrivée. voilà pourquoi tar,zip,cpio me parraissaient bien...
ps: Savez vous comment renommer les fichiers avant de les mettre dans le tar ? par exemple /lala/lili.txt s'enregistrerait comme serv1-lili.txt dans le tar ? ( bon avec -C pour le rep, OK :D . mais pour le nom du fichier ?)
Merci:o
Pour la solution hard c'est pas possible, je n'ai accès qu'en lecture au serveur.
L'idée c'est de transférer tous ces fichiers en les passant dans un pipe par une seule commande.
J'ai donc besoin, uniquement, qu'il m'envoie dans le pipe le nom de fichier+son contenu, et pouvoir recreer les fichiers à l'arrivée. voilà pourquoi tar,zip,cpio me parraissaient bien...
ps: Savez vous comment renommer les fichiers avant de les mettre dans le tar ? par exemple /lala/lili.txt s'enregistrerait comme serv1-lili.txt dans le tar ? ( bon avec -C pour le rep, OK :D . mais pour le nom du fichier ?)
Merci:o
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
3 oct. 2011 à 12:38
3 oct. 2011 à 12:38
il faudrait les renommer sur le disque avant le tar. sinon je ne vois pas
pas très pratique ces utilitaires tar,cpio :( à part pour faire de la sauvegarde...
Il en faudrait surement un autre plus adapté à mon cas mais je n' en trouve pas
merci pour l'aide en tout cas
Il en faudrait surement un autre plus adapté à mon cas mais je n' en trouve pas
merci pour l'aide en tout cas
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
3 oct. 2011 à 13:02
3 oct. 2011 à 13:02
Ben à ce moment là il faut te faire un script sur mesure adapter à tes besoins...
tar et cpio sont faits justement pour faire de la sauvegarde, oui :)
Write programs that do one thing and do it well
Je ponds les solutions capilotractées sur ce sujet moi, alors une de plus, une de moins...
Dans une boucle "for", faire un echo du nom de fichier que tu veux, puis le contenu du fichier en Base64 (via uuencode).
Write programs that do one thing and do it well
Je ponds les solutions capilotractées sur ce sujet moi, alors une de plus, une de moins...
Dans une boucle "for", faire un echo du nom de fichier que tu veux, puis le contenu du fichier en Base64 (via uuencode).
Oui mais je serai alors obligé de placer le script sur chaque serveur, ce qui ne m'est pas possible. Ou alors faire de multiples actions avec ouverture de session à chaque fois à distance... peu importe je viens de trouver !!
J'utilise l'utilitaire pax, qui a une option extrêmement pratique : le -s pour faire une substitution avec les expr régulières... de quoi enfin me permettre de faire exactement ce que je veux :)
=> ls /lala/b*.txt /etc/*.conf /aa/bb/lala/caca/p* | pax -w -s '/.*\///' > archivenormalesansarborescencebizarre.pax
!
J'utilise l'utilitaire pax, qui a une option extrêmement pratique : le -s pour faire une substitution avec les expr régulières... de quoi enfin me permettre de faire exactement ce que je veux :)
=> ls /lala/b*.txt /etc/*.conf /aa/bb/lala/caca/p* | pax -w -s '/.*\///' > archivenormalesansarborescencebizarre.pax
!