Niveau : Admin Junior	Numéro de la Leçon	Dernière Modification
skill>2/4	<progrecss 6/12 style=inline />

Archivage et Compression

Archivage

Afin de poursuivre, il convient de créer une arborescence à sauvegarder :

root@debian:~# mkdir -p /test/repY; mkdir /test/repZ
root@debian:~# cd /test/repY; touch Y1 Y2 Y3
root@debian:/test/repY# cd /test/repZ; touch Z1 Z2
root@debian:/test/repZ# ls -lR /test
/test:
total 8
drwxr-xr-x 2 root root 4096 1 févr. 11:33 repY
drwxr-xr-x 2 root root 4096 1 févr. 11:33 repZ
/test/repY:
total 0
-rw-r--r-- 1 root root 0 1 févr. 11:33 Y1
-rw-r--r-- 1 root root 0 1 févr. 11:33 Y2
-rw-r--r-- 1 root root 0 1 févr. 11:33 Y3
/test/repZ:
total 0
-rw-r--r-- 1 root root 0 1 févr. 11:33 Z1
-rw-r--r-- 1 root root 0 1 févr. 11:33 Z2

tar

Présentation

Le programme tar a été originellement prévu pour sauvegarder sur des bandes magnétiques, d'où son nom issu de tape archiver.

La commande tar peut sauvegarder vers :

un fichier spécial, par exemple le nom d'un lecteur de bande,

un fichier ordinaire sur disque,

la sortie standard pour être utilisé dans un pipe.

Options de la Commande

Les options de la commande tar sont :

root@debian:/test/repZ# tar --help
Utilisation : tar [OPTION...] [FICHIER]...
Le programme « tar » de GNU permet de sauvegarder une grande quantité de
fichiers dans une unique archive sur disque ou sur cartouche et de récupérer
ces fichiers depuis l'archive de manière individuelle.
Exemples :
tar -cf archive.tar foo bar # Crée le fichier archive.tar à partir de foo
et bar.
tar -tvf archive.tar # Liste tous les fichiers de archive.tar de
manière détaillée.
tar -xf archive.tar # Extrait tous les fichiers de archive.tar.
Mode d'opération principal :
-A, --catenate, --concatenate Ajouter des fichiers tar à une archive
-c, --create Créer une nouvelle archive
-d, --diff, --compare Trouver les différences entre l'archive et le
système de fichiers
--delete Effacer de l'archive (pas sur les bandes
magnétiques !)
-r, --append Ajouter des fichiers à la fin de l'archive
-t, --list Afficher le contenu de l'archive
--test-label Tester l'étiquette du volume d'archive et
terminer
-u, --update Ajouter seulement les fichiers plus récents que
les copies présentes dans l'archive
-x, --extract, --get Extraire les fichiers de l'archive
Modificateurs d'opération :
--check-device vérifier les numéros de périphériques lors de
la création d'archives incrémentales (par
défaut)
-g, --listed-incremental=FICHIER
Prendre en charge les sauvegardes incrémentales
au nouveau format GNU
-G, --incremental Prendre en charge les sauvegardes incrémentales
à l'ancien format GNU
--ignore-failed-read Ne pas s'arrêter à cause des non-zéros sur les
fichiers illisibles
--level=NOMBRE dump level for created listed-incremental archive
-n, --seek L'archive peut être parcourue
--no-check-device Ne pas vérifier les numéros de périphériques
lors de la création d'archives incrémentales
--no-seek archive is not seekable
--occurrence[=NOMBRE] Traiter seulement l'occurrence n°NOMBRE de chaque
fichier dans l'archive ; cette option n'est
valable qu'accompagnée de l'une des
sous-commandes « --delete », « --diff », «
--extract » ou « --list » et lorsqu'une liste
de fichiers est fournie soit sur la ligne de
commande, soit avec l'option « -T ». NOMBRE vaut
1 par défaut.
--sparse-version=MAJEUR[.MINEUR]
Définir la version du format de dispersion à
utiliser (implique « --sparse »)
-S, --sparse Économiser efficacement l'espace dans les
fichiers dispersés (fichiers à trous)
Contrôle de l'écrasement :
-k, --keep-old-files Ne pas écraser les fichiers préexistants lors de
l'extraction
--keep-newer-files Ne pas écraser les fichier préexistants qui sont
plus récents que leur copie dans l'archive
--no-overwrite-dir Préserver les métadonnées des répertoires
préexistants
--overwrite Écraser les fichiers préexistants lors de
l'extraction
--overwrite-dir Écraser les métadonnées des répertoires
préexistants lors de l'extraction (comportement
par défaut)
--recursive-unlink Vider les hiérarchies avant d'extraire les
répertoires
--remove-files Supprimer les fichiers après les avoir ajoutés
à l'archive
-U, --unlink-first Effacer chaque fichier préexistant avant
l'extraction
-W, --verify Tenter de vérifier l'archive après écriture
Choix du flux de sortie :
--ignore-command-error Ignorer les codes de retour des processus enfants
--no-ignore-command-error Traiter les codes de retours non nuls des
processus enfants comme des erreurs
-O, --to-stdout Extraire les fichiers vers la sortie standard
--to-command=COMMANDE Renvoyer par tube les fichiers extraits vers un
autre programme
Traitement des attributs de fichiers :
--atime-preserve[=MÉTHODE]
Préserve la date d'accès des fichiers archivés,
soit en la restaurant après lecture (MÉTHODE =
« replace » par défaut) ou en ne définissant
pas les dates initialement (MÉTHODE = « system
»)
--delay-directory-restore Reporter à la fin de l'extraction le
changement des dates de modification et des
permissions des répertoires extraits
--group=NOM Utiliser NOM comme groupe des fichiers ajoutés
--mode=CHANGEMENTS Utiliser les CHANGEMENTS de mode (symboliques)
pour les fichiers ajoutés
--mtime=DATE-OU-FICHIER Définir la date de modification des fichiers
ajoutés avec DATE-OU-FICHIER
-m, --touch Ne pas extraire la date de modification du fichier
--no-delay-directory-restore
Annule l'effet de l'option «
--delay-directory-restore »
--no-same-owner extract files as yourself (default for ordinary
users)
--no-same-permissions Appliquer l'umask de l'utilisateur lors de
l'extraction des permissions (par défaut pour les
utilisateurs normaux)
--numeric-owner Toujours utiliser les valeurs numériques des
utilisateurs/groupes
--owner=NOM Utiliser NOM comme propriétaire des fichiers
ajoutés
-p, --preserve-permissions, --same-permissions
Extraire les informations de permissions sur les
fichiers (par défaut pour le superutilisateur)
--preserve Équivalent à « -p -s » à la fois
--same-owner try extracting files with the same ownership as
exists in the archive (default for superuser)
-s, --preserve-order, --same-order
Trier les noms à extraire dans le même ordre que
l'archive
Sélection et option de périphérique :
-f, --file=ARCHIVE Utiliser le fichier ou le périphérique ARCHIVE
--force-local Le fichier d'archive est local même si « : » a
été spécifié
-F, --info-script=NOM, --new-volume-script=NOM
Exécuter le script à la fin de chaque cartouche
(implique « -M »)
-L, --tape-length=NOMBRE Changer de cartouche après avoir écrit NOMBRE x
1024 octets
-M, --multi-volume Créer/lister/extraire une archive multi-volumes
--rmt-command=COMMANDE Utiliser la COMMANDE rmt fournie au lieu de rmt
--rsh-command=COMMANDE Utiliser la COMMANDE distante à la place de rsh
--volno-file=FICHIER Utiliser/mettre à jour le numéro de volume dans
le FICHIER
Blocs du périphérique :
-b, --blocking-factor=BLOCS BLOCS x 512 octets par enregistrement
-B, --read-full-records Refaire les blocs pendant la lecture (pour les
tubes BSD 4.2)
-i, --ignore-zeros Ignorer les blocs de zéros dans l'archive (càd
EOF)
--record-size=NOMBRE NOMBRE d'octets par enregistrement (multiple de
512)
Sélection du format d'archive :
-H, --format=FORMAT Créer l'archive au format désiré.
FORMAT peut prendre une des valeurs suivantes :
gnu Format GNU tar 1.13.x
oldgnu Format GNU issu de tar <= 1.12
pax Format POSIX 1003.1-2001 (pax)
posix Identique à pax
ustar Format POSIX 1003.1-1988 (ustar)
v7 Vieux format tar V7
--old-archive, --portability
Identique à « --format=v7 »
--pax-option=mot_clé[[:]=valeur][,mot_clé[[:]=valeur]...
Mots-clés de contrôle pax
--posix Identique à « --format=posix »
-V, --label=TEXTE Créer l'archive en attribuant le TEXTE au nom de
volume. À la lecture ou à l'extraction, utiliser
le TEXTE comme motif de correspondance (glob) au
nom de volume.
Options de compression :
-a, --auto-compress Utiliser le suffixe de l'archive pour déterminer
le programme de compression
-I, --use-compress-program=PROG
Filtrer à travers le PROG (doit accepter l'option
« -d »)
-j, --bzip2 filter the archive through bzip2
-J, --xz filter the archive through xz
--lzip filter the archive through lzip
--lzma filter the archive through xz
--lzop
--no-auto-compress Ne pas utiliser l'extension du fichier d'archive
pour déterminer le programme de compression
-z, --gzip, --gunzip, --ungzip filter the archive through gzip
-Z, --compress, --uncompress filter the archive through compress
Sélection des fichiers locaux :
--add-file=FICHIER Ajouter le FICHIER donné à l'archive (utile si
son nom commence par un tiret)
--backup[=CONTRÔLE] Faire une copie de sauvegarde avant suppression,
choisir le CONTRÔLE de version
-C, --directory=RÉP Utiliser RÉP comme répertoire de travail
--exclude=MOTIF Exclure les fichiers correspondant au MOTIF
--exclude-backups exclude backup and lock files
--exclude-caches Exclure le contenu des répertoires contenant
CACHEDIR.TAG, sauf le fichier de tag lui-même
--exclude-caches-all Exclure les répertoires contenant CACHEDIR.TAG
--exclude-caches-under Tout exclure dans les répertoires contenant
CACHEDIR.TAG
--exclude-tag=FICHIER Exclure le contenu des répertoires contenant le
FICHIER, sauf le FICHIER lui-même
--exclude-tag-all=FICHIER Exclure les répertoires contenant le
FICHIER
--exclude-tag-under=FICHIER
Tout exclure dans les répertoires contenant le
FICHIER
--exclude-vcs Exclure les répertoires de contrôle de version
(CVS, .svn, etc.)
-h, --dereference Suivre les liens symboliques ; archiver les
fichiers vers lesquels ils pointent
--hard-dereference Suivre les liens physiques : archiver les fichiers
vers lesquels ils pointent
-K, --starting-file=NOM-DE-MEMBRE
Débuter au NOM-DE-MEMBRE dans l'archive
--newer-mtime=DATE Ne comparer que la date et l'heure de modification
des données
--no-null désactive l'effet de l'option --null précédente
--no-recursion Empêcher la descente automatique dans les
sous-répertoires
--no-unquote Ne pas enlever la protection de caractères des
noms de fichiers lus avec « -T »
--null « -T » permet de lire les noms terminés par un
NULL et désactive l'option « -C »
-N, --newer=DATE-OU-FICHIER, --after-date=DATE-OU-FICHIER
Stocker seulement les fichiers plus récents que
DATE-OU-FICHIER
--one-file-system Rester dans le système de fichiers local lors de
la création de l'archive
-P, --absolute-names Ne pas enlever le « / » au début des noms de
fichiers
--recursion Parcourir les sous-répertoires de manière
récursive (par défaut)
--suffix=CHAÎNE Faire une copie de sauvegarde avant suppression,
en remplaçant le suffixe habituel (« ~ » sauf
s'il est définit par la variable d'environnement
SIMPLE_BACKUP_SUFFIX)
-T, --files-from=FICHIER Lire depuis le FICHIER la liste des noms à
extraire ou à créer
--unquote Enlever la protection de caractères des noms de
fichiers lus avec « -T » (par défaut)
-X, --exclude-from=FICHIER Exclure les motifs listés dans le FICHIER
Transformation des noms de fichiers :
--strip-components=NOMBRE Supprimer NOMBRE composants au début des
noms de fichiers à l'extraction
--transform=EXPRESSION, --xform=EXPRESSION
Utiliser l'EXPRESSION de remplacement « sed »
pour transformer les noms de fichiers
Options de correspondance de noms de fichiers (pour les motifs d'exclusion et
d'inclusion)
--anchored Les motifs doivent correspondre au début des noms
de fichiers
--ignore-case Ignorer la casse (majuscules/minuscules)
--no-anchored Les motifs peuvent correspondre après n'importe
quel « / » (par défaut pour l'exclusion)
--no-ignore-case Correspondance sensible à la casse (comportement
par défaut)
--no-wildcards Correspondance exacte de chaîne
--no-wildcards-match-slash « / » ne correspond à aucun caractère de
correspondance
--wildcards Utiliser des caractères de correspondance (par
défaut pour l'exclusion)
--wildcards-match-slash « / » peut correspondre à un caractère de
correspondance (par défaut pour l'exclusion)
Options d'affichage :
--checkpoint[=NOMBRE] Afficher un message de progression tous les NOMBRE
enregistrements (10 par défaut)
--checkpoint-action=ACTION exécuter l'ACTION à chaque point de
contrôle
--index-file=FICHIER Envoyer la sortie détaillée vers le FICHIER
-l, --check-links Afficher un message si tous les liens n'ont pas pu
être suivis et archivés
--no-quote-chars=CHAÎNE Enlever la protection des caractères faisant
partie de la CHAÎNE
--quote-chars=CHAÎNE Protéger aussi les caractères faisant partie de
la CHAÎNE
--quoting-style=STYLE Définir le style de protection de caractères
appliqués aux noms. Voir ci-dessous pour les
valeurs du STYLE
-R, --block-number Afficher le numéro du bloc de l'archive avec
chaque message
--show-defaults Afficher les paramètres par défaut de tar
--show-omitted-dirs Lors du listage ou de l'extraction, lister chaque
répertoire qui ne concorde pas avec le critère
de recherche
--show-transformed-names, --show-stored-names
Afficher les noms des fichiers ou des archives
après transformation
--totals[=SIGNAL] Afficher le nombre total d'octets après
traitement de l'archive. Avec un argument,
afficher ce nombre si le SIGNAL est émis. Les
signaux permis sont : SIGHUP, SIGQUIT, SIGINT,
SIGUSR1 et SIGUSR2. Les noms sans préfixe « SIG
» sont aussi acceptés
--utc Afficher les dates de modification de fichier en
UTC
-v, --verbose Afficher de manière détaillée les fichiers
traités
--warning=KEYWORD warning control
-w, --interactive, --confirmation
Demander confirmation pour chaque action
Options de compatibilité :
-o Lors de la création, identique à «
--old-archive ». Lors de l'extraction, identique
à « --no-same-owner »
Autres options :
-?, --help Afficher cette aide-mémoire
--restrict Désactiver certaines options potentiellement
néfastes
--usage Afficher un court mode d'emploi
--version Afficher la version du programme
Les arguments obligatoires ou facultatifs pour les formes longues des options
le sont également pour les formes courtes qui leur correspondent.
Le suffixe de sauvegarde est « ~ », à moins qu'il ne soit défini avec «
--suffix » ou SIMPLE_BACKUP_SUFFIX.
Le contrôle de version peut être défini avec « --backup » ou
VERSION_CONTROL, les valeurs sont :
none, off Ne jamais faire de sauvegarde.
t, numbered Faire des sauvegardes numérotées.
nil, existing Numérotées si déjà numérotées, sinon simples.
never, simple Faire toujours des sauvegardes simples.
Valid arguments for the --quoting-style option are:
literal
shell
shell-always
c
c-maybe
escape
locale
clocale
Les valeurs par défaut de *ce* tar sont :
--format=gnu -f- -b20 --quoting-style=escape --rmt-command=/usr/sbin/rmt
--rsh-command=/usr/bin/rsh
Rapportez toute anomalie à <bug-tar@gnu.org>.

Exercices

Vous allez maintenant sauvegarder votre dossier test ainsi que son contenu vers un fichier :

root@debian:/test/repZ# tar cvf /tmp/test.tar /test
tar: Suppression de « / » au début des noms des membres
/test/
/test/repY/
/test/repY/Y1
/test/repY/Y3
/test/repY/Y2
/test/repZ/
/test/repZ/Z1
/test/repZ/Z2

Pour visualiser la table of contents de votre sauvegarde, utilisez la commande suivante :

root@debian:/test/repZ# tar tvf /tmp/test.tar
drwxr-xr-x root/root 0 2012-02-01 11:32 test/
drwxr-xr-x root/root 0 2012-02-01 11:33 test/repY/
-rw-r--r-- root/root 0 2012-02-01 11:33 test/repY/Y1
-rw-r--r-- root/root 0 2012-02-01 11:33 test/repY/Y3
-rw-r--r-- root/root 0 2012-02-01 11:33 test/repY/Y2
drwxr-xr-x root/root 0 2012-02-01 11:33 test/repZ/
-rw-r--r-- root/root 0 2012-02-01 11:33 test/repZ/Z1
-rw-r--r-- root/root 0 2012-02-01 11:33 test/repZ/Z2

Afin de créer une sauvegarde incrémentale, vous avez besoin de créer un fichier qui servira de référence de date :

root@debian:/test/repZ# touch /tmp/dateref

Modifiez maintenant deux des fichiers de votre arborescence test :

root@debian:/test/repZ# echo "Debian est super \!" > /test/repY/Y1
root@debian:/test/repZ# echo "Debian is wonderful \!" > /test/repZ/Z1

Pour procéder à votre sauvegarde incrémentale, vous devez sauvegarder uniquement les fichiers modifiés ou créés depuis la création de votre fichier /tmp/dateref.

Saisissez donc la commande suivante :

root@debian:/test/repZ# tar -cvf /tmp/incremental.tar -N /tmp/dateref /test
tar: Suppression de « / » au début des noms des membres
/test/
/test/repY/
/test/repY/Y1
tar: /test/repY/Y3 : le fichier n'est pas modifié ; fichier non archivé
tar: /test/repY/Y2 : le fichier n'est pas modifié ; fichier non archivé
/test/repZ/
/test/repZ/Z1
tar: /test/repZ/Z2 : le fichier n'est pas modifié ; fichier non archivé

<note important> Notez l'utilisation de l'option -N avec l'arguement /tmp/dateref qui pezrmet d'identifier les fichiers modifiés ou créés depuis la création de /tmp/dateref. </note>

Contrôlez maintenant le contenu de l'archive /tmp/incremental.tar :

root@debian:/test/repZ# tar tvf /tmp/incremental.tar
drwxr-xr-x root/root 0 2012-02-01 11:32 test/
drwxr-xr-x root/root 0 2012-02-01 11:33 test/repY/
-rw-r--r-- root/root 20 2012-02-01 11:36 test/repY/Y1
drwxr-xr-x root/root 0 2012-02-01 11:33 test/repZ/
-rw-r--r-- root/root 23 2012-02-01 11:37 test/repZ/Z1

Supprimez maintenant le contenu du répertoire test :

root@debian:/test/repZ# rm -rf /test/*

<note important> Notez que le système vous permet de supprimer le répertoire /test/repZ, or vous vous situez dans ce même répertoire ! </note>

Afin de pouvoir restaurer les fichiers de votre première sauvegarde, placez-vous à la racine de votre système et restaurez le contenu de votre répertoire test en saisissant la commande tar suivante :

root@debian:/test/repZ# cd /
root@debian:/# tar xvf /tmp/test.tar
test/
test/repY/
test/repY/Y1
test/repY/Y3
test/repY/Y2
test/repZ/
test/repZ/Z1
test/repZ/Z2

Constatez maintenant que l'opération s'est bien déroulée :

root@debian:/# ls -lR /test
/test:
total 8
drwxr-xr-x 2 root root 4096 1 févr. 11:33 repY
drwxr-xr-x 2 root root 4096 1 févr. 11:33 repZ
/test/repY:
total 0
-rw-r--r-- 1 root root 0 1 févr. 11:33 Y1
-rw-r--r-- 1 root root 0 1 févr. 11:33 Y2
-rw-r--r-- 1 root root 0 1 févr. 11:33 Y3
/test/repZ:
total 0
-rw-r--r-- 1 root root 0 1 févr. 11:33 Z1
-rw-r--r-- 1 root root 0 1 févr. 11:33 Z2

<note important> Notez qu'à ce stade les fichiers /test/repY/Y1 et /test/repZ/Z1 sont vides. </note>

Restaurez maintenant votre archive incrémentale :

root@debian:/# tar xvf /tmp/incremental.tar
test/
test/repY/
test/repY/Y1
test/repZ/
test/repZ/Z1

Constatez maintenant que l'opération s'est bien déroulée :

root@debian:/# ls -lR /test
/test:
total 8
drwxr-xr-x 2 root root 4096 1 févr. 11:33 repY
drwxr-xr-x 2 root root 4096 1 févr. 11:33 repZ
/test/repY:
total 4
-rw-r--r-- 1 root root 20 1 févr. 11:36 Y1
-rw-r--r-- 1 root root 0 1 févr. 11:33 Y2
-rw-r--r-- 1 root root 0 1 févr. 11:33 Y3
/test/repZ:
total 4
-rw-r--r-- 1 root root 23 1 févr. 11:37 Z1
-rw-r--r-- 1 root root 0 1 févr. 11:33 Z2

<note important> Notez que les fichiers /test/repY/Y1 et /test/repZ/Z1 sont maintenant non-vides. </note>

cpio

Présentation

La commande cpio (Copy Input To Output). cpio peut gérer les archives au format tar. La différence majeure entre tar et cpio est que ce dernier stocke les chemins d'accès aux fichiers sauvgardés en même temps que les fichiers eux-mêmes. Ceci implique que dans le cas où le chemin absolu a été spécifié lors de la sauvegarde, il est impossible de restaurer un fichier à un autre emplacement que son emplacement d'origine.

Vous allez utiliser maintenant le logiciel cpio pour effectuer les sauvegardes et restaurations.

Options de la Commande

Les options de la commande cpio sont :

root@debian:/# cpio --help
Usage: cpio [OPTION...] [répertoire-cible]
GNU "cpio" copie des fichiers vers ou depuis des archives
Exemples:
# Copier des fichiers à partir des noms d'une liste vers l'archive
cpio -o < liste [> archive]
# Extraire des fichiers à partir d'une archive
cpio -i [< archive]
# Copier des fichiers à partir des noms d'une liste vers un répertoire
cible
cpio -p répertoire-cible < liste
Mode opératoire principal:
-i, --extract Extraire les fichiers de l'archive (exécution en
mode "copy-in")
-o, --create Créer une archive (exécution en mode
"copy-out")
-p, --pass-through Exécuter en mode "copy-pass" (copie de
répertoire à répertoire)
-t, --list Afficher une table du contenu de l'entrée
Modificateurs opératoires valides dans tous les modes:
--block-size=TAILLE-DE-BLOC
Utiliser une taille de bloc d'entrée/sortie de
TAILLE-DE-BLOC*512 octets
-B Utiliser une taille de bloc d'entrée/sortie de
5120 octets
-c Utiliser un vieux format d'archive portable
(ASCII)
-C, --io-size=NOMBRE Utiliser une taille de bloc d'entrée/sortie de
NOMBRE octets
--force-local Le fichier d'archive est local, même si son nom
contient un « : »
-f, --nonmatching Copier seulement les fichiers qui ne concordent
pas avec les patrons fournis
-F, --file=[[UTILISATEUR@]HÔTE:]FICHIER
Utiliser le FICHIER au lieu de l'entrée ou de la
sortie standard. Les options UTILISATEUR et HÔTE
spécifient les noms de l'utilisateur et de
l'hôte dans le cas d'une archive distante.
-H, --format=FORMAT Utiliser le FORMAT d'archive donné
-M, --message=CHAÎNE Afficher la CHAÎNE lorsque la fin du volume d'un
média d'archivage est atteinte
-n, --numeric-uid-gid Dans la table commentée du listing du contenu,
afficher les valeurs numériques de UID et GID
--quiet Ne pas afficher les numéros des blocs copiés
--rsh-command=COMMANDE Utiliser la COMMANDE à distance au lieu de rsh
-v, --verbose Afficher en mode bavard la liste des fichiers
traités
-V, --dot Afficher un "." pour chaque fichier traité
-W, --warning=FANION Contrôle de l'affichage des avertissement. Le
FANION peut prendre une des valeurs suivantes:
'none', 'truncate', 'all'. Les options multiples
s'accumulent.
Les modificateurs d'opération sont valides seulement en mode copy-in:
-b, --swap Interchanger les deux demi-mots des mots et des
octets des demi-mots dans les données.
Équivalent à -sS
-r, --rename Renommer interactivement les fichiers
-s, --swap-bytes Interchanger les octets de chaque demi-mot dans
les fichiers
-S, --swap-halfwords Interchanger les demi-mots de chaque mot (4
octets) dans les fichiers
--to-stdout Extraire les fichiers vers la sortie standard
-E, --pattern-file=FICHIER Lit les motifs additionnels spécifiant les noms
de fichier à extraire ou la liste à partir du
FICHIER
--only-verify-crc Lors de la lecture d'une archive avec CRC,
vérifie seulement le CRC de chaque fichier dans
l'archive, n'extrait pas le fichier
Modificateurs d'opération valides seulement en mode copy-out:
-A, --append Accoler à une archive existante.
-O [[UTILISATEUR@]HÔTE:]FICHIER
Nom de fichier de l'archive à utiliser au lieu de
la sortie standard. Les paramètres USAGER et
HÔTE spécifient l'usager et le nom de l'hôte
respectivement dans le cas du machine distante.
Modificateurs d'opération valides seulement en mode copy-pass:
-l, --link Lier les fichier au lieu de les copier, lorsque
c'est possible.
Modificateurs d'opération valides seulement en modes "copy-in" et
"copy-pass":
--absolute-filenames Ne pas enlever les éléments systèmes en début
des noms de fichier.
--no-absolute-filenames Créer tous les fichiers relatifs au
répertoire courant
Modificateurs d'opération valides seulement en mode "copy-out" et
"copy-pass":
-0, --null Une liste des noms de fichiers doit être terminé
par un caractère nul au lieu d'un retour de
chariot.
-a, --reset-access-time Réinitialiser les dates d'accès des fichiers
après les avoir lus
-I [[UTILISATEUR@]HÔTE:]FICHIER
Nom de fichier de l'archive à utiliser au lieu de
la sortie standard. Les paramètres UTILISATEUR et
HÔTE spécifient l'usager et le nom de l'hôte
respectivement dans le cas d'une archive située
sur un hôte distante.
-L, --dereference Déréférencer les liens symboliques (copier les
fichiers pointés au lieu de copier les liens).
-R, --owner=[UTILISATEUR][:.][GROUPE]
Sélectionner la propriété de tous les fichiers
créés à l'UTILISATEUR et/ou au GROUPE
Modificateurs d'opération valides seulement en modes "copy-in" et
"copy-pass":
-d, --make-directories Créer les répertoires supérieurs lorsque
nécessaire
-m, --preserve-modification-time
Conserver les dates antérieures de modification
des fichiers lors de la création des fichiers
--no-preserve-owner Ne pas modifier le propriétaire des fichiers
--sparse Écrire les fichiers avec de grands blocs de
zéros comme des fichiers creux ("sparse")
-u, --unconditional Remplacer tous les fichiers sans condition
-?, --help Affiche cette aide
--usage Afficher un court message d'utilisation
--version Affiche la version du logiciel
Les arguments optionnels ou obligatoires pour les options longues le sont aussi
pour les options courtes correspondantes.
Rapporter les anomalies à <bug-cpio@gnu.org>.

Exercices

Dans un premier temps, vous devez utiliser la commande find pour construire une liste de fichiers à sauvegarder :

root@debian:/# find /test > /tmp/cpio.liste
root@debian:/# cat /tmp/cpio.liste
/test
/test/repY
/test/repY/Y1
/test/repY/Y3
/test/repY/Y2
/test/repZ
/test/repZ/Z1
/test/repZ/Z2

Sauvegardez maintenant les fichiers et répertoires référencés par le fichier /tmp/cpio.liste :

root@debian:/# cpio -ov < /tmp/cpio.liste > /tmp/test.cpio
/test
/test/repY
/test/repY/Y1
/test/repY/Y3
/test/repY/Y2
/test/repZ
/test/repZ/Z1
/test/repZ/Z2
1 bloc

Consultez maintenant la table of contents de votre sauvegarde :

root@debian:/# cpio -it < /tmp/test.cpio
/test
/test/repY
/test/repY/Y1
/test/repY/Y3
/test/repY/Y2
/test/repZ
/test/repZ/Z1
/test/repZ/Z2
1 bloc

Supprimez maintenant le répertoire /test/repY et son contenu :

root@debian:/# rm -rf /test/repY

Contrôlez le bon déroulement de la suppression :

root@debian:/# ls -lR /test
/test:
total 4
drwxr-xr-x 2 root root 4096 1 févr. 11:33 repZ
/test/repZ:
total 4
-rw-r--r-- 1 root root 23 1 févr. 11:37 Z1
-rw-r--r-- 1 root root 0 1 févr. 11:33 Z2

Restaurez les fichiers supprimés :

root@debian:/# cpio -ivdum "/test/repY/*" < /tmp/test.cpio
/test/repY/Y1
/test/repY/Y3
/test/repY/Y2
1 bloc

<note important> Notez l'utilisation de la chaîne “/test/repY/*” qui permet de rechercher uniquement le répertoire repY ainsi que les fichiers Y1, Y2 et Y3 dans l'archive test.cpio. </note>

Contrôlez le bon déroulement de la restauration :

root@debian:/# ls -lR /test
/test:
total 8
drwxr-xr-x 2 root root 4096 1 févr. 11:46 repY
drwxr-xr-x 2 root root 4096 1 févr. 11:33 repZ
/test/repY:
total 4
-rw-r--r-- 1 root root 20 1 févr. 11:36 Y1
-rw-r--r-- 1 root root 0 1 févr. 11:33 Y2
-rw-r--r-- 1 root root 0 1 févr. 11:33 Y3
/test/repZ:
total 4
-rw-r--r-- 1 root root 23 1 févr. 11:37 Z1
-rw-r--r-- 1 root root 0 1 févr. 11:33 Z2

dd

Présentation

La commande dd n'est pas réellement une commande de sauvegarde.

La commande dd copie le fichier passé en entrée dans le fichier de sortie en limitant le nombre d'octets copiés par l'utilisation de deux options :

count

le nombre

bs

la taille du bloc à copier

Options de la Commande

Les options de la commande dd sont :

root@debian:/# dd --help
Utilisation : dd [OPERAND]...
ou : dd OPTION
Copie un fichier en le convertissant et le formatant selon les opérandes.
bs=BYTES lit et écrit BYTES à la fois (voir aussi ibs= et obs=)
cbs=BYTES convertit BYTES octets à la fois
conv=CONVS convertit le fichier en liste de symboles séparés par une
virgule
count=BLOCKS copie seulement BLOCKS blocks d'entrée
ibs=BYTES lit BYTES octets à la fois (par défaut 512)
if=FILE lit FILE au lieu de l'entrée standard (stdin)
iflag=FLAGS lit selon la liste de symboles séparés par des virgules
obs=BYTES écrit BYTES octets à la fois (par défaut 512)
of=FILE écrit dans FILE au lieu de la sortie standard (stdout)
oflag=FLAGS écrit selon à l'aide de LISTE de symboles séparés par des virgules
seek=BLOCKS se déplace de BLOCKS blocs de taille « obs » au début de la sortie
skip=BLOCKS ignore BLOCKS blocs de taille « ibs » au début de l'entrée
status=noxfer supprime les statistiques de transfert
BLOCKS et BYTES peuvent être suivis des suffixes multiplicatifs suivants :
c = 1, w = 2, b = 512, kB = 1000, K = 1024, MB = 1000*1000, M = 1024*1024,
xM = M, GB = 1000 * 1000 * 1000, G = 1024*1024*1024 et ainsi de suite pour
T, P, E, Z et Y.
Chaque symbole CONV peut être :
ascii de l'EBCDIC vers l'ASCII
ebcdic de l'ASCII vers l'EBCDIC
ibm de l'ASCII vers l'EBCDIC alternatif
block remplit les enregistrements terminés par un saut de ligne
par des espaces jusqu'à la taille « cbs »
unblock remplace les espaces à la fin des enregistrements de taille « cbs »
par des sauts de ligne
lcase change les majuscules en minuscules
nocreat ne crée pas de fichier de sortie
excl échoue si le fichier de sortie existe déjà
notrunc ne tronque pas le fichier de sortie
ucase change les minuscules en majuscules
swab inter-change chaque paire d'octets en entrée
noerror continue même après des erreurs de lecture
sync remplit chaque bloc lu avec des nuls jusqu'à concurrence
de la taille « ibs » ; avec block ou unblock, remplit avec des
espaces au lieu de nuls
fdatasync écrit physiquement les données en sortie avant la fin
fsync identique, mais écrit aussi les métadonnées
Chaque symbole FLAG peut être :
append mode d'ajout (n'a de sens que pour la sortie ; conv=notrunc suggéré)
direct utilise des E/S directes pour les données
directory échoue sauf si un répertoire
dsync utilise des E/S synchronisées pour les données
sync identique mais aussi pour les métadonnées
fullblock accumule des blocs pleins en entrée (uniquement iflag)
nonblock utilise des E/S non bloquantes
noatime ne met pas à jour la date d'accès
noctty n'assigne pas de terminal contrôleur depuis le fichier
nofollow ne suit pas les liens symboliques
L'envoi du signal USR1 vers le processus « dd » actif provoque
l'écriture des statistiques sur la sortie d'erreur standard
puis la copie reprend.
$ dd if=/dev/zero of=/dev/null& pid=$!
$ kill -USR1 $pid; sleep 1; kill $pid
18335302+0 enregistrements lus
18335302+0 enregistrements écrits
9387674624 octets (9.4 Go) copiés, 34.6279 secondes, 271 Mo/s
Les options sont :
--help affiche l'aide et quitte
--version affiche des informations de version et quitte
Signalez les anomalies de « dd » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « dd » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'dd invocation' »

Exercices

Vous allez utiliser maintenant le logiciel dd pour effectuer une sauvegarde de votre MBR et de la FAT.

Effectuez une sauvegarde de votre MBR qui se trouve dans les premiers 446 octets de votre disque /dev/sda :

root@debian:/# dd if=/dev/sda of=/tmp/mbr.save bs=1 count=446
446+0 enregistrements lus
446+0 enregistrements écrits
446 octets (446 B) copiés, 0,00212248 s, 210 kB/s

Effectuez maintenant une sauvegarde de votre FAT qui se trouve dans les 64 octets après les 446 précédement sauvegardés :

root@debian:/# dd if=/dev/sda of=/tmp/fat.save bs=1 count=64 skip=446
64+0 enregistrements lus
64+0 enregistrements écrits
64 octets (64 B) copiés, 0,000372657 s, 172 kB/s

<note important> Notez l'utilisation de l'option skip qui permet de positionner le début de la sauvegarde au 447ième octet. </note>

dump et restore

Présentation

Les commandes dump et restore se basent sur le format d'enregistrement des données ( ext3 ). Pour cette raison il n'est pas possible de sauvegarder des répertoires à l'intérieur d'un système de fichiers mais uniquement des systèmes de fichiers complets.

Il est important de noter que le système de fichier ne doit pas être utilisé pendant le processus de dump. Pour cette raison il est normalement conseillé de démonter le système de fichiers.

Il existe 10 niveaux de dump possibles de 0 à 9. Lors d'un dump le niveau est spécifié. Chaque fois qu'un dump est effectué, cette information est sauvegardée dans le fichier /etc/dumpdates.

Par définition un dump de niveau 0 est une sauvegarde complète tandis que le dump de niveau 1 est une sauvegarde incrémentale.

Notez que les fichiers sont sauvegardés avec des nom relatifs. Ceci implique que vous devez vous positionner dans le système de fichiers lors de la restauration avec la commande restore.

Compression

gzip

Présentation

La commande gzip est un utilitaire de compression sous GNU/Linux. La commande gunzip est un utilitaire de décompression sous GNU/Linux.

Options des Commandes

Les options de la commande gzip sont :

root@debian:/# gzip --help
Usage: gzip [OPTION]... [FILE]...
Compress or uncompress FILEs (by default, compress FILES in-place).
Mandatory arguments to long options are mandatory for short options too.
-c, --stdout write on standard output, keep original files unchanged
-d, --decompress decompress
-f, --force force overwrite of output file and compress links
-h, --help give this help
-l, --list list compressed file contents
-L, --license display software license
-n, --no-name do not save or restore the original name and time stamp
-N, --name save or restore the original name and time stamp
-q, --quiet suppress all warnings
-r, --recursive operate recursively on directories
-S, --suffix=SUF use suffix SUF on compressed files
-t, --test test compressed file integrity
-v, --verbose verbose mode
-V, --version display version number
-1, --fast compress faster
-9, --best compress better
--rsyncable Make rsync-friendly archive
With no FILE, or when FILE is -, read standard input.
Report bugs to <bug-gzip@gnu.org>.

Les options de la commande gunzip sont :

root@debian:/# gunzip --help
Usage: gzip [OPTION]... [FILE]...
Compress or uncompress FILEs (by default, compress FILES in-place).
Mandatory arguments to long options are mandatory for short options too.
-c, --stdout write on standard output, keep original files unchanged
-d, --decompress decompress
-f, --force force overwrite of output file and compress links
-h, --help give this help
-l, --list list compressed file contents
-L, --license display software license
-n, --no-name do not save or restore the original name and time stamp
-N, --name save or restore the original name and time stamp
-q, --quiet suppress all warnings
-r, --recursive operate recursively on directories
-S, --suffix=SUF use suffix SUF on compressed files
-t, --test test compressed file integrity
-v, --verbose verbose mode
-V, --version display version number
-1, --fast compress faster
-9, --best compress better
--rsyncable Make rsync-friendly archive
With no FILE, or when FILE is -, read standard input.
Report bugs to <bug-gzip@gnu.org>.

Exercices

Utilisez gzip pour compresser votre fichier tar :

root@debian:/# gzip /tmp/test.tar

Constatez la taille du fichier test.tar.gz :

root@debian:/# ls -l /tmp/test.tar.gz
-rw-r--r-- 1 root root 221 1 févr. 11:34 /tmp/test.tar.gz

<note important> Notez que le fichier compressé a été créé dans le même répertoire que le fichier source et que le fichier source a disparu. </note>

Décompressez le fichier test.tar.gz :

root@debian:/# gunzip /tmp/test.tar.gz

bzip2

Présentation

La commande bzip2 est un utilitaire de compression sous GNU/Linux. La commande bunzip2 est un utilitaire de décompression sous GNU/Linux.

Options des Commandes

Les options de la commande bzip2 sont :

root@debian:/# gunzip /tmp/test.tar.gz
root@debian:/# bzip2 --help
bzip2, a block-sorting file compressor. Version 1.0.5, 10-Dec-2007.
usage: bzip2 [flags and input files in any order]
-h --help print this message
-d --decompress force decompression
-z --compress force compression
-k --keep keep (don't delete) input files
-f --force overwrite existing output files
-t --test test compressed file integrity
-c --stdout output to standard out
-q --quiet suppress noncritical error messages
-v --verbose be verbose (a 2nd -v gives more)
-L --license display software version & license
-V --version display software version & license
-s --small use less memory (at most 2500k)
-1 .. -9 set block size to 100k .. 900k
--fast alias for -1
--best alias for -9
If invoked as `bzip2', default action is to compress.
as `bunzip2', default action is to decompress.
as `bzcat', default action is to decompress to stdout.
If no file names are given, bzip2 compresses or decompresses
from standard input to standard output. You can combine
short flags, so `-v -4' means the same as -v4 or -4v, &c.

Les options de la commande bunzip2 sont :

root@debian:/# bunzip2 --help
bzip2, a block-sorting file compressor. Version 1.0.5, 10-Dec-2007.
usage: bunzip2 [flags and input files in any order]
-h --help print this message
-d --decompress force decompression
-z --compress force compression
-k --keep keep (don't delete) input files
-f --force overwrite existing output files
-t --test test compressed file integrity
-c --stdout output to standard out
-q --quiet suppress noncritical error messages
-v --verbose be verbose (a 2nd -v gives more)
-L --license display software version & license
-V --version display software version & license
-s --small use less memory (at most 2500k)
-1 .. -9 set block size to 100k .. 900k
--fast alias for -1
--best alias for -9
If invoked as `bzip2', default action is to compress.
as `bunzip2', default action is to decompress.
as `bzcat', default action is to decompress to stdout.
If no file names are given, bzip2 compresses or decompresses
from standard input to standard output. You can combine
short flags, so `-v -4' means the same as -v4 or -4v, &c.

Exercices

Utilisez bzip2 pour compresser votre fichier tar :

root@debian:/# bzip2 /tmp/test.tar

Constatez la taille du fichier tar.bz2 :

root@debian:/# ls -l /tmp | grep test.tar.bz2
-rw-r--r-- 1 root root 200 1 févr. 11:34 test.tar.bz2

<note important> Notez que le fichier compressé a été créé dans le même répertoire que le fichier source et que le fichier source a disparu. </note>

Décompressez le fichier tar.bz2 :

root@debian:/# bunzip2 /tmp/test.tar.bz2

<note important> La commande compress peut également être utilisée pour compresser un fichier. </note>

~~DISCUSSION:off~~

Donner votre Avis

{(rater>id=debian_6_l111|name=cette page|type=rate|trace=user|tracedetails=1)}