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 et cie

Sommaire


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

@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.

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
  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

Cre : 11 nov 2006 - Maj : 06 sep 2013

A propos de ces pages / about these pages : http://www.dg77.net/about.htm
Gen : 21/04/2017-13:53:55,83