Le web de Dominique Guebey – Bazar informatique

Page web  : http://www.dg77.net/tekno/manuel/tarzip.htm


   D o m i n i q u e   G u e b e y    J u n g l e      Bazar informatique

TAR, gZIP, 7-zip et cie

Sommaire

Voir aussi :

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.txtcf 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".


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.


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
  1. Important : il est indispensable de spécifier les chemins complets y compris la lettre d’unité (ex : c:\)
  2. (*) On peut indiquer des noms multiples de fichiers à ziper : mettre @ puis un nom de fichier par ligne, sans espace avant ni après
  3. (**) Le mot de passe peut être mis entre apostrophes
  4. Les noms longs de fichiers doivent être entre apostrophes
  5. 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