TAR, gZIP, 7-zip et cie
Sommaire
Voir aussi :
- Dans les pages sécurité, le petit outil de sauvegarde sur internet.
- Sur IBM AS/400 - iSeries, Java et QSH — zipage/compression de fichiers.
7-zip en ligne de commande
Diverses considérations
Version batch
Pour utiliser 7-zip en ligne de commande, il faut se servir de l’exécutable 7-z.exe (et non pas 7-zip.exe).
Mode silencieux
Terminer la commande par > nul (à la place de la sortie dans div.txt — cf l’exemple ci-dessous).
Indication du chemin dans l’archive
Dans « l’archive », le nom de fichier sera précédé de l’indication des répertoires dans la mesure où ce sont ces seuls derniers qui ont été spécifiés dans la commande. Exemple :
c:\Progra~1\7-Zip\7z a -tzip h:\SAV\sav%DATE%.zip info/
Avec cette commande, les noms de fichiers seront stockés précédés par info/. Attention : dans la suivante, les noms de fichiers figureront par contre seuls :
c:\Progra~1\7-Zip\7z a -tzip h:\SAV\sav%DATE%.zip info/*
Création automatique d’un auto-extractible
Ce batch a pour but de mettre à disposition un fichier exploitable sur un système de la famille UNIX aussi bien que sous Windows. Il compresse un fichier en gz standard via un tar, puis crée un auto-extractible spécifiquement "Win32". Le nom du fichier est mis dans une variable d’environnement "nfic".
@echo off :: archivage-compression utilisant 7-zip http://www.7-zip.org/ :: ----------------------------------------------------------- :: Parametre : nom du fichier a traiter set nfic=%1 :: adapter ici le nom qualifié du programme :: remarque : l'indication du chemin complet reduit le temps de traitement set PROG="c:\Progra~1\7-Zip\7z" cls if exist %nfic% goto suite echo Le fichier %nfic% n'existe pas pause goto :EOF :suite echo -------------- Genere tar puis gzip --------------------- if exist %nfic%.gz del %nfic%.gz %PROG% a -ttar %nfic%.tar %nfic% %PROG% a -tgzip %nfic%.gz %nfic%.tar echo ----------- Genere self-extractible (pour Win32) --------------- %PROG% a -sfx7zC.sfx %nfic%.exe %nfic% echo -------------- Fin du traitement - End Processing -------------- if exist %nfic%.tar del %nfic%.tar
Au lancement de l'autoextractible (".exe"), un prompt demandera dans quel répertoire le(s) fichier(s) seront écrits.
Création d’une somme de contrôle
Exemple avec SHA256 :
7z h -scrcsha256 [nom_fichier] > [sortie].sha
Sauvegardes sur le réseau
Ce fichier de commandes envoie des sauvegardes au format 7z sur un lecteur réseau de style Microsoft (s:\). Noter la façon précise dont 7-zip analyse les "wilcards" (« * » n’est pas la même chose que « *.* »). Le troisième fichier sauvegarde est assorti d’un mot-de-passe (argument -p). Le fichier div.txt sert seulement à sortir et éventuellement conserver une trace des traîtements.
@echo off :: **** SAUVEGARDE DONNEES LOCALES SUR SERVEUR RESEAU **** :: envoyer avec un mot-de-passe en parametre :: pour avoir la date et l'heure echo '*******************************************' > div.txt dir div* >> div.txt :: Envoie sur S: le répertoire "PROJET" de l'utilisateur woyoo 7z a -t7z s:\PUBLIC\MONDOSSIER\PROJET.7z "c:\docume~1\woyoo\mesdoc~1\PROJET\*" >> div.txt :: Noter "*.*" et non pas "*" : on ne traite que les fichiers, pas les sous-repertoires 7z a -t7z s:\PUBLIC\MONDOSSIER\voy_bin.7z "c:\docume~1\woyoo\mesdoc~1\woy\bin\*.*" >> div.txt :: -p : utilisation du mot de passe pour cryptage 7z a -t7z s:\PUBLIC\MONDOSSIER\voy_data.7z "c:\docume~1\woyoo\mesdoc~1\woy\data\*" -p%1 >> div.txt :: visu resultat et log (facultatif) type div.txt | more if exist logsav.txt copy logsav.txt + div.txt logsav.txt if not exist logsav.txt rename div.txt logsav.txt if exist div.txt del div.txt
Lancement de 7-Zip sur une liste de fichiers.
On peut lancer 7-Zip en batch pour une liste de fichiers écrite dans un simple fichier texte.
- Exemple de commande
- 7z a -tzip archive.zip @listefic.txt
- Fichier listefic.txt avec utilisation d’un groupe "*".
-
"mes recettes\*.rtf" java\*.class
Camouflage de données dans une image.
Un fichier quelconque est compressé/chiffré par le logiciel 7z avec option mot-de-passe. Puis on l'ajoute à la fin d’un fichier image de type jpg/jpeg.
@echo off cls :: Camouflage de données :: Parametre 1 : nom complet (avec extension) du fichier à cacher :: Parametre 2 : nom de l'image lue en entree (sans ".jpg" à la fin) :: Parametre 3 : image sortie (sans ".jpg" à la fin) :: Parametres saisis dans le cas où ils ne sont pas passes en entree if "%1"=="" goto s1 set nfic=%1 goto s10 :s1 echo Fichier lu: set /P nfic= :s10 if exist %nfic% goto suit1 echo Le fichier %nfic% n'existe pas pause goto :EOF :suit1 if "%2"=="" goto s2 set d_img=%2 goto s20 :s2 echo Image utilisee: set /P d_img= :s20 if exist %d_img%.jpg goto suit2 echo Le fichier %d_img%.jpg n'existe pas pause goto :EOF :suit2 if "%3"=="" goto s3 set sortie=%3 goto s30 :s3 echo Image sortie: set /P sortie= :s30 :: Controle existence programme 7z set PROG="c:\Progra~1\7-Zip\7z.exe" if exist %PROG% goto suit3 echo Le programme %PROG% n'existe pas pause goto :EOF :suit3 :: -p=entrée d'un mot de passe echo Entrer un mot de passe %PROG% a -t7z -p sortie.7z %nfic% > nul if exist %sortie%.jpg del %sortie%.jpg copy/B %d_img%.jpg + sortie.7z %sortie%.jpg > nul del sortie.7z
Grâce à l’option B (comme binaire), le fichier créé par l’opération copy reste connu et utilisable sans problème en tant qu’image JPEG ; néanmoins, cette dernière, une fois ouverte par le logiciel de (dé)zipage, le fichier ajouté précédemment est reconnu et peut être extrait tout aussi simplement. Exemple en ligne de commande :
c:\Progra~1\7-Zip\7z.exe e div.jpg -oC:\temp
Dans ce dernier exemple, l’option -o permet d’extraire vers un emplacement (répertoire) particulier (ici : temp, à la racine du disque C).
WinZip en ligne de commande
Ou comment utiliser Winzip32 dans des script batch DOS ou assimilés sous MS Windows (adapter les chemins à votre configuration)
Créer-Maj un fichier ZIP avec Winzip
- Syntaxe :
- c:\progra~1\winzip\winzip32 -a (options) (chemin)nom_du_fichier.zip (chemin)nom_du_fichier à ziper (*)
- Code opération (4 possibilités) :
- -a : crée
- -f : rafraichit
- -u : met à jour
- -m : retire
- Options
- -r : prendre aussi le contenu des sous-répertoires
- -p : garde les informations de répertoire
- -ex : compression poussée mais lente
- -en : compression normale (par défaut)
- -ef : compression rapide
- -e0 : compression nulle
- -hs : prendre les fichiers système ou cachés
- -s[mot_de_passe) (**)
Extraction d’un fichier zip
- Syntaxe :
- c:\progra~1\winzip\winzip32 -e (options) nom_du_fichier.zip répertoire_de_sortie
- Code opération :
- -e
- Options
- -o : écrase les fichiers existants sans demander confirmation
- -j : ne pas utiliser les informations de répertoire
- -s[mot_de_passe] (**)
Remarques
- Important : il est indispensable de spécifier les chemins complets y compris la lettre d’unité (ex : c:\)
- (*) On peut indiquer des noms multiples de fichiers à ziper : mettre @ puis un nom de fichier par ligne, sans espace avant ni après
- (**) Le mot de passe peut être mis entre apostrophes
- Les noms longs de fichiers doivent être entre apostrophes
- Une option -min qui doit être indiquée en toute première place permet d’exécuter winzip dans une icone minimale.
Bonus : un petit utilitaire vite fait
Le nom du fichier zip est complèté par la date système. Si le séparateur est « / » (ex.: 14/07/2009), il y aura une erreur à l’exécution. Il faut donc un autre caractère de séparation. Exemple dans Windows XP : Démarrer > Paramètres > Panneau de configuration > Options régionales et linguistiques > Onglet options régionales > Personnaliser > Onglet Date > Séparateur de date : choisir le tiret > Appliquer + Ok (deux fois)
@echo off cls set TRAV=%date% :: remplace espace par zero set TRAV=%TRAV: =0% :: remplace antislash eventuel par tiret set TRAV=%TRAV:\=-% echo Sauvegarde quelques donnees locales echo Zipage du ss-dossier "Etudes" "C:\Program Files\Winzip\WINZIP32" -a -r -p "F:\Informatique\Prestataires\Alphonse\Etudes%trav%.zip" c:\docume~1\Alphonse\mesdoc~1\Etudes\* echo Zipage de la messagerie (outlook.ost) echo Priere d’arreter Outlook, merci. pause "C:\Program Files\Winzip\WINZIP32" -a -r -p "F:\Informatique\Prestataires\Alphonse\outlook%trav%.zip" "C:\Documents and Settings\Alphonse\Local Settings\Application Data\Microsoft\Outlook\Outlook.ost" echo Vous pouvez redemarrer Outlook. pause
Commandes classiques (tar, gzip…)
Utilisation sous Windows
Rappelons que Cygwin [http://www.dg77.net/tekno/manuel/cygwin.htm] permet d’utiliser les fonction UNIX/LINUX dans les O/S Microsoft.
Archives tar
- Création d’un fichier tar contenant tout un répertoire
- tar -cf nom.tar repertoire/
- Création d’un fichier tar avec le contenu du répertoire en cours
- tar -cf nom.tar *
- Visualiser le contenu d’un fichier tar
- tar -tf nom.tar
- Extraire le contenu d’un fichier tar
- tar -xf nom.tar
- Options de tar
- c : créer
- r : ajouter
- t : afficher
- u : remplacement
- x : extraction
- b : facteur de blocage (maximum 1024)
- f : périphérique de sortie si autre que disquette
- z : données compressées
- k : information suivante en ko
- Exemple :
- tar -cvfbk /dev/rct0 20 125000
gzip/gunzip
gzip sait aussi traiter les fichiers zip, compress et pack. Il connait les extensions .gz -gz, .z, -z, _z et .Z
- Compression d’un fichier
- gzip fichier
- Décompression d’un fichier
- gunzip fichier.gz
- gzip -d fichier.gz
bzip2/bunzip2
Version évoluée de gzip. On trouve ainsi des archives .tar.bz2