Table des matières

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

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 :

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 :

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