Sauvegarde

mardi 16 septembre 2008
par  Jerome ROBERT
popularité : 11%

XII. Sauvegarde utilisateur

 

A. Introduction :

Une bande magnétique est un support (média) structuré en
blocs àaccès séquentiel (et non direct comme pour les disques durs par
exemple). Les données y sont simplement placées (ou extraites)
séquentiellement.

Pour utiliser une bande magnétique, on a donc besoin d’un
fichier spécial fonctionnant en mode caractère (type c).

Le fichier spécial correspondant au lecteur de DAT est
généralement :

  • /dev/rmt/0m sous HP-UX

  • /dev/rm0 sous AIX

  • /dev/.... sous SCO-UNIX

 

Deux commandes sont standard sous UNIX : tar & cpio .

 

Elles permettent de créer et de relire une archive sur une
bande magnétique (ce qui est aussi possible sur le file system).

Une archive est un énorme fichier d’un format très spécial
qui contient :

  • La liste de ce qui a été sauvegardé (chemins d’accès
    menant aux fichiers),

  • Les contenus de tous les fichiers sauvegardés.

 

Attention :

On ne peut récupérer le contenu d’une archive qu’en employant la même
commande que celle qui a été utilisée pour effectuer la sauvegarde.

Ne pas confondre archivage et compression de données ; ce sont deux notions
indépendantes.

La commande tar, la plus ancienne, d’emploi aisé, est
notamment utilisée sur le réseau internet

La commande cpio, plus complexe àutiliser, permet
d’effectuer des sauvegardes partielles sur des critères très fins. La
restauration est aussi plus aisée.

 

B. Commande tar

Quelques caractéristiques

  • Commande d’origine Berkeley
  • Traitement récursif des répertoires ( sauvegarde de toute la
    sous-arborescence )
  • Écrase le support de sauvegarde ( possibilité de créer l’archive sur un
    fichier disque )
  • Commande de transfert ( bonne portabilité entre machines Unix )

 

Comportements par défaut en restauration ( modifiables par options )

- Ecrasement des fichiers existants du disque dur

- Restauration avec la date de sauvegarde et les propriétaires et
permissions d’origine

 

syntaxe : tar clé f fichier_spécial [fichiers ou répertoire]

 

Exemple :

$ tar -cvf /dev/rmt/0m  Crée une archive àpartir des fichiers du répertoire courant et des sous-répertoires. Les chemins d’accès mémorisés le sont en relatif (.)
$ tar -rvf /dev/rmt/0m *.c  Rajoute tous les fichiers .c àla fin de l’archive existante.
$ tar -tvf /dev/rmt/0m affiche la Table des entrées de l’archive.
$ tar -xvf /dev/rmt/0m eXtrait les fichiers de l’archive.
$ tar -xvf /dev/rmt/0m "/home/*" eXtrait l’arborescence située sous /home de l’archive.

Si le dernier argument est un nom de fichier ou un masque tel que
"*.c" , la sauvegarde se fait alors sur un seul niveau dans
l’arborescence du file system.

Si par contre on indique un nom de répertoire en tant qu’objet à
sauvegarder, la commande tar sauvegardera également toute l’arborescence se
trouvant sous le répertoire précisé.

 

Autres options : 

  • u (Update) : les fichiers sont
    ajoutés àla fin de l’archive s’ils sont nouveaux ou modifiés.

  • r (Rajoute) : les fichiers spécifiés sont
    ajoutés àla fin de l’archive.

 

Lors d’une restauration, si un fichier est déjà
présent sur le disque dur, il est écrasé.

 

Exemple
de sauvegarde des fichiers du répertoire courant

$ tar cvf /tmp/archive .

a ./ 0 tape blocks
a ./.profile 1 tape block
a ./.rhosts 1 tape block
a ./.exrc 1 tape block
a ./.mwmrc 4 tape blocks
a ./.xsession 1 tape block
a ./.xresources 1 tape block
a ./.sh_history 7 tape blocks
a ./rep/ 0 tape blocks
a ./rep/fic2 1 tape block
a ./rep/fic1 1 tape block
a ./main.c 3 tape blocks
$

On utilise, dans cet exemple, un fichier disque comme destination de la
sauvegarde. Dans la pratique, on utilisera le nom d’un périphérique ( fichier
spécial ).

On fait le choix d’une sauvegarde en nom relatif, ce qui donne plus de
possibilités en restauration puisque les fichiers sont recréés avec le nom
enregistré sur le support de sauvegarde.

Liste du contenu de l’archive

$ tar tvf /tmp/archive

drwxr-xr-x1001/1000 0 Dec 18 16:51 1995 .
-rwxr-xr-x1001/1000 390 Oct 17 10:49 1995 ./.profile
-rwxr-xr-x1001/1000 187 Oct 16 18:52 1995 ./.rhosts
-rw-r—r—1001/1000 38 Oct 16 18:51 1995 ./.exrc
-rwxr-xr-x1001/1000 1966 Jan 3 11:03 1995 ./.mwmrc
-rwxr-xr-x1001/1000 408 Sep 29 16:31 1995 ./.xsession
-rwxr-xr-x1001/1000 185 Jan 3 11:03 1995 ./.xresources
-rw-------1001/1000 3578 Dec 18 16:52 1995 ./.sh_history
drwxr-xr-x1001/1000 0 Dec 18 16:51 1995 ./rep
-rw-r—r—1001/1000 75 Dec 18 14:32 1995 ./rep/fic2
-rw-r—r—1001/1000 29 Dec 18 14:32 1995 ./rep/fic1
-rwxr—r—1001/1000 1271 Dec 18 14:47 1995 ./main.c
$

 

 

Restauration complète

$ pwd #S’assurer d’être au bon endroit
/home/stage1
 
$ tar xvf /tmp/archive
x ., 0 bytes, 0 tape blocks
x ./.profile, 390 bytes, 1 tape block
x ./.rhosts, 187 bytes, 1 tape block
x ./.exrc, 38 bytes, 1 tape block
x ./.mwmrc, 1966 bytes, 4 tape blocks
x ./.xsession, 408 bytes, 1 tape block
x ./.xresources, 185 bytes, 1 tape block
x ./.sh_history, 3578 bytes, 7 tape blocks
x ./rep, 0 bytes, 0 tape blocks
x ./rep/fic2, 75 bytes, 1 tape block
x ./rep/fic1, 29 bytes, 1 tape block
x ./main.c, 1271 bytes, 3 tape blocks
$

 

Restauration d’un fichier individuel

$ ls -l main.c
-rwxr—r— 1 stage1 stage 1271 Dec 18 14:47 main.c
$ $ rm main.c
$ tar xvf /tmp/archive main.c
UX:tar : INFO : 1 file not extracted
$ tar xvf /tmp/archive ./main.c #Donner le nom exact sur l’archive
x ./main.c, 1271 bytes, 3 tape blocks
$ ls -l main.c
-rwxr—r— 1 stage1 stage 1271 Dec 18 14:47 main.c
$

 

C. Commande cpio

Quelques caractéristiques

  • Commande d’origine System V
  • Ecrase le support de sauvegarde ( possibilité de créer l’archive sur un
    fichier disque )
  • N’est pas une commande de transfert ( mauvaise portabilité entre machines
    Unix )

 

Comportements par défaut en restauration ( modifiables par options )

- Refus d’écrasement des fichiers existants du disque dur

- Restauration avec la date courante et propriétaires et permissions du
login courant

 

On doit alimenter l’entrée standard de la commande avec des noms de
fichiers,la commande « find » est souvent la plus appropriée.

La commande fabrique une archive résultat qu’elle écrit sur sa sortie
standard.

 

 

La commande cpio comporte trois options fondamantales (et
exclusives) :

-i Input : Restitution des fichiers sauvegardés

-o Output : Sauvegarde sur bande magnétique

-p Restitution immédiate vers un autre endroit du file
system (Copie de branches)

 

Autres options :

-o

-I

Fonctionnalité de l’option

-c

-c

Ecrit un en-tête ASCII en début d’archive ( si utilisé avec -o ,
doit être utilisé avec -i)

-x

-x

Permet de manipuler les fichiers spéciaux (/dev/...)

 

-u

Restitution inconditionnelle (Si le fichier existe déjàil l’écrase)

 

-m

maintient les infos de dates

 

-d

Recréer les structures des (sous)répertoires si nécessaire

-v

-v

Affiche la liste des fichiers copiés

 

 

Exemples :

$ find . -print | cpio -ocx > /dev/rmt/0m

 Crée l’archive (Output)

$ cpio -icudmx < /dev/rmt/0m

 Restitue l’archive (Input)

$ cpio -ict < /dev/rmt/0m 

Affiche la Table des matières

$ cpio -icudm "*.c" < /dev/rmt/0m

 Extrait des fichiers de l’archive

$ find . -print | cpio -pvd /users/newU

 Recopie
d’une branche, avec conservation des attributs.

Lors d’une restauration, si un fichier existe déjàcpio
conserve le plus récent.

 

Exemple de sauvegarde des fichiers du répertoire courant

$ find . -print | cpio -ov > /tmp/archive
.
.profile
.rhosts
.exrc
.mwmrc
.xsession
.xresources
.sh_history
main.c
rep
rep/fic2
rep/fic1
48 blocks
$

 

 

Liste du contenu de l’archive

$ cpio -itv < /tmp/archive
drwxr-xr-x 3 stage1 stage 0 Dec 18 16:54 1995, .
-rwxr-xr-x 1 stage1 stage 390 Oct 17 10:49 1995, .profile
-rwxr-xr-x 1 stage1 stage 187 Oct 16 18:52 1995, .rhosts
-rw-r—r— 1 stage1 stage 38 Oct 16 18:51 1995, .exrc
-rwxr-xr-x 1 stage1 stage 1966 Jan 3 11:03 1995, .mwmrc
-rwxr-xr-x 1 stage1 stage 408 Sep 29 16:31 1995, .xsession
-rwxr-xr-x 1 stage1 stage 185 Jan 3 11:03 1995, .xresources
-rw------- 1 stage1 stage 3578 Dec 18 16:52 1995, .sh_history
-rwxr—r— 1 stage1 stage 1271 Dec 18 14:47 1995, main.c
drwxr-xr-x 2 stage1 stage 0 Dec 18 16:53 1995, rep
-rw-r—r— 1 stage1 stage 75 Dec 18 14:32 1995, rep/fic2
-rw-r—r— 1 stage1 stage 29 Dec 18 14:32 1995, rep/fic1
48 blocks
$

Restauration d’un fichier individuel

$ ls -l main.c
-rwxr—r— 1 stage1 stage 1271 Dec 18 14:47 main.c
$ cpio -iv < /tmp/archive main.c
Existing "main.c" same age or newer
48 blocks
$
$ rm main.c
$ cpio -iv < /tmp/archive main.c
main.c
48 blocks
$ ls -l main.c
-rwxr—r— 1 stage1 stage 1271 Dec 18 17:09 main.c

 

Restauration d’un fichier individuel en forçant l’écrasement du fichier

$ ls -l main.c
-rwxr—r— 1 stage1 stage 1271 Dec 18 17:09 main.c
$ cpio -iuv < /tmp/archive main.c
main.c
48 blocks
$ ls -l main.c
-rwxr—r— 1 stage1 stage 1271 Dec 18 17:22 main.c
$

 

Restauration d’un fichier individuel nécessitant de recréer un
sous-répertoire

$ rm -r rep
$ cpio -iv < /tmp/archive rep/fic1
cpio : ERROR : Missing -d option.
cpio : ERROR : Cannot create directory for "rep/fic1" : No such file or directory
48 blocks
2 errors
$ cpio -idv < /tmp/archive rep/fic1
rep/fic1
48 blocks
$

 

D. Commande dd

Il s’agit d’une commande de copie physique avec éventuelle conversion de
formats. La commande peut traiter des fichiers spéciaux, permettant, par exemple, la
duplication de supports ( disquettes, bandes ... ) ou le positionnement àun endroit précis ( sauts
de blocs ou de fichiers ... ).

 

Syntaxes simples

dd if=fic1 of=fic2 conv=mode

ou

dd < fic1 > fic2 conv=mode

Quelques conversions possibles

conv=swab

 Permutation des paires d’octets

conv=ascii

 EBCDIC -> ASCII

conv=ebcdic

 ASCII -> EBCDIC

conv=ucase

 minuscules -> MAJUSCULES

conv=lcase

 MAJUSCULES -> minuscules

 

Exemples d’utilisation

$ dd < /dev/fd0 > /tmp/manip Copie physique de disquette
2880+0 records in
2880+0 records out
$ dd < /tmp/manip > /dev/fd0 Changement de disquette et duplication
2880+0 records in
2880+0 records out
$ file fic1
fic1 : ascii text
$ dd if=fic1 of=fic2 conv=ebcdic
5+1 records in
5+1 records out
$ file fic2
fic2 : data or International Language text
$
$ ls -l fic*
-rw-r—r— 1 root system 2808 Jan 3 11:09 fic1
-rw-r—r— 1 root system 2808 Jan 3 11:09 fic2
$ ls -l fic* | dd conv=ucase
-RW-R—R— 1 ROOT SYSTEM 2808 JAN 3 11:09 FIC1
-RW-R—R— 1 ROOT SYSTEM 2808 JAN 3 11:09 FIC2
0+1 records in
0+1 records out
$ ls -l fic* | dd conv=swab
r—w-rr--- 1 r oo t ystsme 8280J na 3110 : 9if1c-
wrr----r - 1orto s syet m 2 08 8aJ n3 1 :190f ci
20+1 records in
0+1 records out

Statistiques

Dernière mise à jour

mercredi 4 octobre 2023

Publication

273 Articles
Aucun album photo
Aucune brève
6 Sites Web
2 Auteurs

Visites

5 aujourd’hui
108 hier
827603 depuis le début
2 visiteurs actuellement connectés