• Les pertes de données...
    • erreur de manipulations ;
    • acte de cyberdélinquance ;
    • défaillance du matériel ;
    • incendie.
  • ... ont un coût élevé...
    • remise en service
    • interruption des activités
    • impossibilité d'honorer des obligations contractuelles.
  • ... avec des conséquences graves :
    • pertes de contrats
    • pertes de données clients/fournisseurs
    • perte de réputation
    • faillite d'entreprise
    • vies humaines (e.g. hôpitaux)
⚠ Il est ainsi vital d'effectuer régulièrement des sauvegardes :
  • en vérifiant la procédure de restauration ;
  • stockées dans des lieux différents (e.g. cambriolages, incendies, inondations).
  • sur des disques coupés du réseau (e.g. rançongiciel).
  • réellement utile qu'une fois qu'il est trop tard.
Préparer une sauvegarde :
  • quoi : que va-t-on sauvegarder ?
  • comment et va-t-on enregistrer la sauvegarde ?
  • quand et à quelle fréquence va-t-on effectuer la sauvegarde ?
Bien organiser ses fichiers :
  • retrouver facilement un fichier ;
  • identifier les fichiers obsolètes ;
  • faciliter les sauvegardes.
  • cohérence ;
  • consistance.
Par exemple :
  • : supports de cours, rendus de TP, etc. à sauvegarder chaque soir.
  • : téléchargements temporaires, ne nécessite pas de sauvegardes.
  • : fichiers personnels de l'utilisateur (dossier potentiellement sensible).
  • : logiciels installés (lecture seule et partagé entre plusieurs ordinateurs).
  • : configuration du logiciel , données spécifiques à l'ordinateur (lecture seule).
  • : fichiers servis par le serveur (e.g. pour un serveur Web, de fichier, etc), peu utilisé.
  • : données écrites par les logiciels en cours d'exécution, contient les logs.
  • : fichiers temporaires, supprimés au redémarrage de la machine (stockés en RAM).
⚠ Générer aléatoirement les noms des fichiers temporaires de afin d'éviter des collisions.
💡 Pour de gros fichiers temporaire, on utilisera généralement au lieu de .
⚠ Les utilisateurs ne peuvent modifier que les fichiers de leur home et de (sauf exceptions).
Standard/PartagéLocalPersonnel
Base
Exécutables
Exécutables (admin)
Bibliothèques
Ressources
Configuration
Cache
💡 , : contiennent les commandes (fichier de même nom).
💡 : donne le type et emplacement de la commande.
💡 : alternative à .
Pour chaque fichier, le système enregistre ses méta-données :
  • son type
  • son propriétaire
  • sa date de dernière modification
  • sa taille
  • les droits d'accès au fichier
  • etc.
💡 : afficher les méta-données.
$ ls -lh -d foo
Permissions  User    Group   Size       Date Modified        Name  
drwxrwxr-x  demigda demigda 4.0 KB Tue Apr  1 09:16:45 2025 📂  foo
⚠ Ne pas confondre les méta-données stockées au niveau du :
  • système de fichiers : communes entre tous les fichiers ;
  • fichier : dépendant de son format (e.g. png, jpeg, pdf, zip).
Permissions  User    Group   Size       Date Modified        Name  
drwxrwxr-x  demigda demigda 4.0 KB Tue Apr  1 09:16:45 2025 📂  foo
Les droits sont décrits par 3 caractères ( affiché si le droit n'est pas donné) :
  • (read) : lecture du fichier (ou lister le contenu d'un dossier).
  • (write) : écriture du fichier (ou modifier le contenu d'un dossier).
  • (exec) : exécution du fichier script/binaire qui est alors un exécutable (ou aller dans le dossier).
Ces droits peuvent être attribués à :
  • : l'utilisateur (user) propriétaire du fichier.
  • : le groupe d'utilisateur (group) propriétaire du fichier ;
  • : les autres utilisateurs.
⚠ Bien penser à donner le droit d'exécution (et de lecture) sur les fichiers de script.
(change owner) : changer l'utilisateur/groupe propriétaire.
(change mode) : changer les droits d'un fichier.
💡 (recursive) : appliquer les changements de manière récursive.
s'écrit sous la forme suivante :
  • (user) : l'utilisateur
  • (group) : le groupe
  • (other) : les autres
  • (all) : tous les utilisateurs
  • : ajouter
  • : retirer
  • : appliquer
  • : ajouter le droit d'exécution à l'utilisateur propriétaire.
  • : retire le droit de lecture au groupe propriétaire et aux autres.
  • : donne aux autres uniquement les droits de lecture et d'exécution (retire le droit de lecture).
  • : retire le droit d'exécution à tous, et ajoute le droit de lecture.
Sauvegarde complète : sauvegarde l'ensemble des données.
  • : copier les fichiers en conservant les méta-données (archive).
  • : créer une archive compressée.
  • : créer une archive compressée.
Problèmes :
  • fichiers non-modifiés dupliqués d'une sauvegarde sur l'autre.
  • lent, prend beaucoup de place pour rien.
Sauvegardes incrémentales : ne sauvegarde que les modifications depuis la dernière sauvegarde.
  • : permet de faire des sauvegardes incrémentales (usage similaire à ).
    💡 Un script basé sur sera fourni en TP afin de faciliter son usage.
  • On veut pouvoir parcourir et manipuler les sauvegardes incrémentales comme si créée via .
    • si modifié : copier le fichier.
    • sinon : créer un lien physique.
Lien physique (hard link) : place un même fichier (inode) dans plusieurs dossiers, sans le copier.
  • fichier supprimé lorsque toutes les occurrences sont supprimées.
Lien symbolique : fichier spécial contenant le chemin de la cible (pour les dossiers/entre volumes).
  • fichier supprimé lorsque la cible est supprimée.
(link) : crée un lien physique (ou symbolique).
Gestionnaire de version (e.g. Git) : sauvegardes plus intelligentes (e.g. pour code/configs), permet de :
  • ajouter une description aux versions.
  • comparer deux versions.
  • gérer plusieurs versions en parallèle.
  • annuler une modification précise.
  • intégration avec des interfaces Web et des fonctionnalités comme les issues.
Synchronisation de fichiers (e.g. Seafile) : conserve un historique de chaque modifications en temps réel.
  • pour dossiers partagés entre plusieurs utilisateurs.
  • permet de restaurer un fichier à une version précédente.
Exportations/Importations (e.g. dump d'une base SQL) :
  • format de l'export généralement adapté aux besoins spécifiques du logiciel.
Un volume est un espace de stockage :
  • disque entier ;
  • partie de disque (partition) ;
  • ensemble de partitions ;
  • clef USB ;
  • etc.
💡 Sur un ordinateur personnel, généralement un seul système de fichier, sur le disque entier.
monter (mount) un volume : l'associer à un dossier (point de montage/mountpoint) de l'arborescence :
# lsvol
PATH              LABEL TYPE  PARTTYPENAME       SIZE FSUSE% FSTYPE MOUNTPOINT
/dev/nvme0n1            disk                   238,5G                    
├─/dev/nvme0n1p1  EFI   part  EFI System         512M     1% vfat   /boot/efi
├─/dev/nvme0n1p2  BOOT  part  Linux filesystem   732M    36% ext4   /boot
├─/dev/nvme0n1p3  DATA  part  Linux filesystem 237,3G     0% ext4   /
: monter un volume (de nombreuses options e.g. lecture seule ).
: démonter le volume.
💡 Par défaut, on monte usuellement les volumes dans :
  • : pour les volumes amovibles (e.g. clef USB) ;
  • : pour les volumes montés manuellement.
(FileSystem Table) : liste les systèmes de fichiers à monter au démarrage de la machine :
  • : options à transmettre à la commande . (noauto cf TP).
  • : obsolète.
  • : ordre dans lequel monter le système de fichier (1 pour la racine, 2+ pour les suivants).
💡 Il est aussi possible de monter :
  • des volumes NFS (Network FileSystem) distants, cf https://doc.ubuntu-fr.org/disque_reseau
  • des dossiers distants via SSH avec la commande , cf TP.
Différents systèmes de fichiers...
  • compression des données (, ) ;
  • chiffrement des données (via ) ;
  • conservation d'un historique (via , ou ) ;
  • données stockées sur la RAM ();
  • données stockées à distance (, ).
  • modifications possibles mais non-persistantes (via , , , ou );
... pour différents besoins :
  • sauvegardes fréquentes ;
  • lecture seule ;
  • partagé sur le réseau ;
  • stocké en RAM.
Or, un volume ne peut contenir qu'un seul système de fichier.
Il faut alors découper les ressources de stockages en plusieurs volumes.
💡 Par défaut, les systèmes de fichiers suivants sont usuellement utilisés :
  • pour Linux ;
  • pour Windows ;
  • pour Apple ;
  • pour les clefs USB ;
Pour créer un nouveau volume :
  1. (ou logiciel comme gparted) pour créer/manipuler les partitions d'un disque.
    • commande TUI en TP
  2. pour formatter la partition, i.e. lui attribuer un système de fichier.
  3. pour lui attribuer un label.
# mkfs.ext4 /dev/nvme0n1p3
# e2label /dev/nvme0n1p3 DATA
# lsvol
PATH              LABEL TYPE  PARTTYPENAME       SIZE FSUSE% FSTYPE
/dev/nvme0n1            disk                   238,5G                    
├─/dev/nvme0n1p1  EFI   part  EFI System         512M     1% vfat
├─/dev/nvme0n1p2  BOOT  part  Linux filesystem   732M    36% ext4
├─/dev/nvme0n1p3  DATA  part  Linux filesystem 237,3G     0% ext4
⚠ La commande permettant d'attribuer une étiquette au volume dépend du système de fichier utilisé.
Séparer données et OS sur deux volumes différents.
  • permet de (ré)installer l'OS sans effacer les données.
⚠ Sauvegardez vos données avant toutes opérations de ce genre !
Possibilité, sur un même ordinateur, d'installer plusieurs OS (qu'on choisi au démarrage) pour :
  • avoir un dual boot Linux-Windows ;
  • avoir un système d'exploitation de secours ;
  • tester un système d'exploitation.
💡 live USB : clef USB surlaquelle un système d'exploitation est installé.
⚠ Il est très vivement recommandé d'avoir au moins un live USB.
LVM (Logical Volume Manager) : permet de gérer les volumes d'un ordinateur.
  • volumes physiques (physical volume) : volumes formatés pour LVM.
  • groupe de volume (volume group ≈ disque virtuel) : ensemble de volumes physiques.
  • volumes logiques (logicial volume ≈ partition virtuelle) : partition d'un groupe de volumes.
LVM offre alors différentes fonctionnalités :
  • RAID :
  • instantanés (snapshots) du système de fichier ;
  • etc.
💡 LVM possède de très nombreuses commandes pour manipuler les PV, VG, et LV.
RAID (Redundant Array of Inexpensive Disk) : duplique les données sur plusieurs disques pour se protéger en cas de défaillance matérielle.
Nom Description # disques Résilience
RAID 0 (striping) volume sur plusieurs disques N 0
RAID 1 (mirroring) duplique un disque 1+1 1
RAID 5 (distributed parity) bloc de parité bp = b1 ⊕ ... ⊕ bn N+1 1
RAID 6 (dual parity) 2 blocs de parité N+2 2
💡 Possibilité de faire des combinaisons, e.g. RAID 1+0 ou RAID 10.
Les opérations de sauvegardes peuvent être longues, de plusieurs minutes à plusieurs heures.
  • que se passe-t-il si le serveur modifie des fichiers pendant la sauvegarde ?
    • mix de fichiers pré/post modifications ⇒ état incohérent/invalide.
  • services indisponibles pendant la sauvegarde.
Solution : créer un instantané (snapshot) du système de fichier, et effectuer la sauvegarde de l'instantané.
  • si modification d'un bloc, stocke la version originelle dans l'instantané.
  • si bloc non-modifié, ira le rechercher dans le volume originel.
⚠ Bien penser à supprimer l'instantané une fois la sauvegarde effectuée.