Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/02/2007, 18h00   #1
Débutant
 
Inscription : septembre 2006
Messages : 496
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 496
Points : 109
Points : 109
Par défaut comment zipper un fichier de n'importe quel extension

Bonjour

Dans un script je recois plusieurs fichiers de différentes extensions.

J'aimerais utiliser une commande dans script_2 qui va zipper ces fichiers.

Ces fichiers seront dézippées sur un pc fonctionnant sous windows.


Script_1 ==> contient une ligne: echo "$fichier"

puis dans script_2 il y a :

......................
Script_1
zipper $fichier
.......................
.......................

Merci de votre aide.
diamonds est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 18h16   #2
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Bonjour,
Tu veux créer une archive compressée contenant tous les fichiers ou bien compresser chaque fichier indépendemment ?
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 18h56   #3
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
Je comprends pas ce que tu dis : tu dis que dans un script tu reçois plusieurs fichiers, et dans ton exemple tu ne traites que d'un seul fichier ($fichier). Détaille un peu plus, steuplé
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 23h10   #4
Débutant
 
Inscription : septembre 2006
Messages : 496
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 496
Points : 109
Points : 109
Ok je m'explique. c'est plus simple que ça a l'air

J'ai deux scripts appelés script_1 et script_2

Script_1 appelle script_2

Script_2 crée un fichier (exemple toto.txt)

Je veux que script_1 prends toto.txt et le zip pour produire toto.txt.zip

N-B :Le zippage se fait dans unix, alors que le dézippage se fait sur windows(PC de l'utilisateur) je ne sais pas si la commande zip est toujours bonne pour ce type d'action.
diamonds est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 23h42   #5
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Bonsoir,
Montre-nous ce que tu as déjà fait pour voir ce qui cloche.
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 01h55   #6
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 743
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 743
Points : 9 980
Points : 9 980
gzip est le mieux pour faire dans ce sens-là..
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 08h40   #7
Expert Confirmé
 
Homme
Inscription : septembre 2006
Messages : 2 292
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2006
Messages : 2 292
Points : 2 740
Points : 2 740
Citation:
Envoyé par souviron34
gzip est le mieux pour faire dans ce sens-là..
gzip disponible en standard sous tous les Windows ?

dans script_1, on supposant que script_2 renvoit le nom (complet : path compris…) du fichier via stdout et utilise exit avec un code non nul pour notifier une erreur… et que script_2 est dans le dossier courant… (sinon mettez son chemin complet au lieu de ./script_2) … et qu'il a les permissions d'exécutions (chmod 755)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
fname=`./script_2`
if [ $? -ne 0 ]
then
    echo "error processing file" 1>&2
    exit 1
fi
# will create "$fname".zip in its enclosing directory
pushd `dirname "$fname"` > /dev/null
f=`basename "$fname"`
zip "$f" "$f"
popd > /dev/null
ce script créera le zip à côté de l'original, et le chemin du fichier dans l'archive sera "vide" : lors du désarchivage, le fichier sera placé dans le cwd…

à adapter selon vos besoins… qui restent assez vagues…
JeitEmgie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 16h07   #8
Débutant
 
Inscription : septembre 2006
Messages : 496
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 496
Points : 109
Points : 109
Citation:
Envoyé par JeitEmgie
gzip disponible en standard sous tous les Windows ?

dans script_1, on supposant que script_2 renvoit le nom (complet : path compris…) du fichier via stdout et utilise exit avec un code non nul pour notifier une erreur… et que script_2 est dans le dossier courant… (sinon mettez son chemin complet au lieu de ./script_2) … et qu'il a les permissions d'exécutions (chmod 755)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
fname=`./script_2`
if [ $? -ne 0 ]
then
    echo "error processing file" 1>&2
    exit 1
fi
# will create "$fname".zip in its enclosing directory
pushd `dirname "$fname"` > /dev/null
f=`basename "$fname"`
zip "$f" "$f"
popd > /dev/null
ce script créera le zip à côté de l'original, et le chemin du fichier dans l'archive sera "vide" : lors du désarchivage, le fichier sera placé dans le cwd…

à adapter selon vos besoins… qui restent assez vagues…
J'ai fais un essai sur la ligne de commande avez zip et ca me donne une erreru pour les grands fichiers.

Lorsque je fais :
Code :
zip fichier_zipper xxxx.xml
et xxx.xml est petit, tout marche bien. le taux de compressage est de 79%.

mais lorsque xxx.xml est un gros fichier (2 GO), je recois l'erreur suivante :
Code :
Zip error : Nothing to do! (<a href="http://www.zip)" target="_blank">www.zip)</a>
Qu'est ce que ca veut dire cette erreur ?

Y a t-il un taux de compressage mieux que 79% ?

Merci.
diamonds est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 17h18   #9
Débutant
 
Inscription : septembre 2006
Messages : 496
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 496
Points : 109
Points : 109
Citation:
Envoyé par souviron34
gzip est le mieux pour faire dans ce sens-là..
Pourquoi gzip est mieux dans ce cas ?

Zip ne peut zipper les gros fichiers.

C'est quoi la syntaxe de gzip pour l'essayer aussi ?

Code :
1
2
 
gzip nouveau_fichier fichier_à_zipper.txt
Ne marche pas. Faut rajouter des paramètres peut-être.

Diamonds
diamonds est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 17h33   #10
Expert Confirmé
 
Homme
Inscription : septembre 2006
Messages : 2 292
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2006
Messages : 2 292
Points : 2 740
Points : 2 740
Citation:
Envoyé par diamonds
J'ai fais un essai sur la ligne de commande avez zip et ca me donne une erreru pour les grands fichiers.

Lorsque je fais :
Code :
zip fichier_zipper xxxx.xml
et xxx.xml est petit, tout marche bien. le taux de compressage est de 79%.

mais lorsque xxx.xml est un gros fichier (2 GO), je recois l'erreur suivante :
Code :
Zip error : Nothing to do! (<a href="http://www.zip)" target="_blank">www.zip)</a>
Qu'est ce que ca veut dire cette erreur ?
que l'implémentation de zip sur votre plate-forme ne supporte pas les fichiers > 2Go… (une limitation assez "classique"…)

il faut splitter les fichiers avant de les zipper…
(man csplit ; man split)

ou utiliser autre chose que zip…
mais vous avez un critère de compatibilité Windows… donc prudence…
notamment avec gzip… tous les "unzip" de Windows ne reconnaissent pas le format gzip… (dont l'extension par défaut sous Windows est .z au lieu de .zip pour les archives "zip")

(si vous contrôler l'environnement Windows en question et que vous pouvez installer ce que vous voulez cela devient secondaire, mais si c'est pour distribuer au tout venant…)

le taux de compression dépend des données en entrée…
et il existe de méthodes plus efficaces que zip…
JeitEmgie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 21h29   #11
Débutant
 
Inscription : septembre 2006
Messages : 496
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 496
Points : 109
Points : 109
Citation:
Envoyé par JeitEmgie
que l'implémentation de zip sur votre plate-forme ne supporte pas les fichiers > 2Go… (une limitation assez "classique"…)

il faut splitter les fichiers avant de les zipper…
(man csplit ; man split)

ou utiliser autre chose que zip…
mais vous avez un critère de compatibilité Windows… donc prudence…
notamment avec gzip… tous les "unzip" de Windows ne reconnaissent pas le format gzip… (dont l'extension par défaut sous Windows est .z au lieu de .zip pour les archives "zip")

(si vous contrôler l'environnement Windows en question et que vous pouvez installer ce que vous voulez cela devient secondaire, mais si c'est pour distribuer au tout venant…)

le taux de compression dépend des données en entrée…
et il existe de méthodes plus efficaces que zip…
Quelles sont ces méthodes qui sont plus efficaces et dont les unzip de windows reconnaissent ?
diamonds est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 23h09   #12
Débutant
 
Inscription : septembre 2006
Messages : 496
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 496
Points : 109
Points : 109
Citation:
Envoyé par JeitEmgie
que l'implémentation de zip sur votre plate-forme ne supporte pas les fichiers > 2Go… (une limitation assez "classique"…)

il faut splitter les fichiers avant de les zipper…
(man csplit ; man split)

ou utiliser autre chose que zip…
mais vous avez un critère de compatibilité Windows… donc prudence…
notamment avec gzip… tous les "unzip" de Windows ne reconnaissent pas le format gzip… (dont l'extension par défaut sous Windows est .z au lieu de .zip pour les archives "zip")

(si vous contrôler l'environnement Windows en question et que vous pouvez installer ce que vous voulez cela devient secondaire, mais si c'est pour distribuer au tout venant…)

le taux de compression dépend des données en entrée…
et il existe de méthodes plus efficaces que zip…
Je viens de faire un essai avec gzip et ça a l'air de marcher.
ça donne l'extension gz.
J'ai ensuite unzipper avec winzip sous windows et ca me donne mon fichier original (mais le unzip a duré plus longtemps que le gzip et il a fini par me donner une erreur du type "time out")

Y a-il moyen d'augmenter le temps pour ce compteur ? peux-être dans le Winzip lui même ou bien dans IE.

Diamonds
diamonds est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h15.


 
 
 
 
Partenaires

Hébergement Web