Configuration de la sauvegarde dans Ubuntu. Sauvegarde Ubuntu et restauration complète

Les programmes utilisés pour effectuer une sauvegarde complète en dupliquant les données originales sont appelés programmes de sauvegarde. De toute évidence, l’objectif principal de la sauvegarde est de mettre de l’ordre dans le chaos en restaurant les fichiers importants en cas de sinistre. Dans certaines programmes populaires les sauvegardes sont utilisées SQL, accès à distance sur le système et copier les fichiers sur un autre système.

Si vous utilisez Linux, vous avez le choix entre de nombreux programmes de sauvegarde. Vous trouverez ci-dessous une liste de quelques-uns des meilleurs. programmes gratuits outils de sauvegarde open source que vous pouvez essayer.

C'est l'équivalent Linux de Time Machine d'Apple, basé sur GNOME. Comme beaucoup d'autres utilitaires de sauvegarde, ce package crée des sauvegardes incrémentielles de fichiers qui peuvent ensuite être utilisées pour la récupération. Ses instantanés sont des copies d'un répertoire à un moment précis. Les instantanés pris à partir de fichiers qui n'ont pas changé depuis l'instantané précédent occupent très peu d'espace. En effet, au lieu de sauvegarder l'intégralité du fichier sans le modifier, les instantanés utilisent un lien physique vers une sauvegarde existante du fichier dans son état d'origine.

Il s'agit d'un clone open source de Symantec Ghost Corporate Edition. Le package est basé sur l'utilisation de DRBL, d'images de partition, ntfsclone, partclone et udpcast, qui vous permettront d'obtenir un instantané des données pour la sauvegarde et la récupération. Il existe deux versions du package Clonezilla : Clonezilla live et Clonezilla SE (Server Edition). Clonezilla live convient à la sauvegarde et à la restauration d'une seule machine. Et Clonezilla SE est conçu pour un déploiement de masse et peut créer des clones de plusieurs ordinateurs en même temps.

Fait des copies de répertoires, crée des volumes cryptés au format tar et les télécharge sur un serveur de fichiers distant ou local. Étant donné que Duplicity utilise librsync, les archives incrémentielles sont économes en espace et n'enregistrent que les parties des fichiers qui ont été modifiées depuis la sauvegarde précédente. Étant donné que Duplicity utilise GnuPG pour crypter et/ou signer ces archives, elles sont protégées contre l'espionnage et/ou la falsification sur le serveur.

Il s'agit d'un système de sauvegarde open source au niveau de l'entreprise, conçu pour les réseaux hétérogènes. Le package est conçu pour automatiser les tâches qui nécessitent souvent l'intervention d'un administrateur système ou d'un opérateur. Bacula dispose de clients de sauvegarde Linux, UNIX et Windows et peut également utiliser une gamme de périphériques de sauvegarde professionnels, notamment des bibliothèques de bandes. Les administrateurs et les opérateurs peuvent configurer le système à l'aide d'une console de ligne de commande, d'une interface graphique et d'une interface Web ; Les données stockées constituent un catalogue d'informations qui peut être stocké dans MySQL, PostgreSQL ou SQLite.

Advanced Maryland Automatic Network Disk Archiver est un système de sauvegarde qui permet à un administrateur de configurer un serveur maître pour sauvegarder un grand nombre d'hôtes réseau sur des bandes ou des lecteurs de bande. support optique. AMANDA utilise le dump de données et/ou GNU tar et peut sauvegarder un grand nombre de postes de travail exécutant différentes versions d'Unix.

Original : Sauvegarde de Linux et d'autres systèmes de type Unix

Date de traduction : décembre 2011

"Les gens sont divisés en deux catégories : certains font déjà des sauvegardes, tandis que d'autres n'ont pas encore eu de panne de disque dur", - auteur inconnu.

1. Introduction

Le sujet de la sauvegarde d'un système d'exploitation de type Unix (généralement Linux) revient régulièrement sur les listes de diffusion et les forums Linux. Et invariablement, quelqu'un conseille de simplement archiver avec tar cvfz backup.tgz /bin /boot /etc ... Malheureusement, créer une sauvegarde appropriée nécessitera plus d'efforts. Dans cet article, je couvrirai de nombreux (peut-être pas tous) les défis et les détails auxquels il faut prêter attention lors de la sauvegarde.

Gardez à l'esprit qu'il ne s'agit pas d'un manuel de programme, alors ne copiez pas aveuglément les exemples donnés ici ; et il ne s'agit pas d'une liste exhaustive des programmes de sauvegarde existants et des exemples de leur utilisation. De plus, il ne s’agit pas d’instructions étape par étape. Ce texte est destiné à ceux qui connaissent déjà suffisamment les systèmes de type Unix. Cependant, il est important de lire la documentation d’outils spécifiques dans son intégralité, car cela vous aidera à prendre en compte des détails qui autrement pourraient être négligés.

Notez également que cet article décrit principalement le processus de sauvegarde sur des supports externes ou des machines distantes. Si la sécurité des données est importante, je recommande également fortement d'utiliser des matrices RAID. Bien que le RAID ne soit d'aucune utilité en cas d'incendie, de tremblement de terre ou de corruption des données utilisateur, il est bonne protection lorsque les disques tombent en panne. Cela m'a aidé plus d'une fois. De plus, n'oubliez pas une alimentation sans interruption.

Bien que le mien expérience personnelle n'est pas hors du cadre de Linux, les problèmes abordés dans ce texte devraient (peuvent) s'appliquer à la plupart des systèmes de type Unix.

2. La sauvegarde est bien plus que de simples données

Une sauvegarde appropriée enregistre bien plus que de simples données. Il contient également des données sur les données : les métadonnées. Les attributs d'un système de fichiers et les fichiers de périphérique spéciaux nécessaires au fonctionnement du système d'exploitation. Il est d'une importance vitale que le support de sauvegarde et le logiciel utilisé pour fonctionner avec celui-ci puissent fournir une telle copie. Par exemple, je déconseille fortement de sauvegarder un système de fichiers Ext3 (le système de fichiers standard sous Linux) sur des partitions formatées en FAT32/FAT16 (le système de fichiers antédiluvien de Microsoft, toujours présent sur les clés USB et périphériques similaires, bien qu'ils le soient, bien sûr, possible, formatage vers n'importe quel système de fichiers). Cette section est dédiée spécifiquement aux métadonnées et aux fichiers spéciaux.

2.1. Métadonnées du fichier

Sur les partitions avec Ext3 FS, les métadonnées des fichiers incluent : l'heure de modification du fichier, l'heure de modification de l'inode, l'heure du dernier accès, les ID d'utilisateur et de groupe, ainsi que les droits d'accès aux fichiers et répertoires. S'il existe des attributs étendus, il peut y avoir beaucoup plus de métadonnées, principalement en raison des informations de la liste de contrôle d'accès (ACL, Access Control List). Plus les données sont copiées, mieux c'est. Bien entendu, si vous n'enregistrez pas et ne restaurez pas les droits d'accès, cela entraînera l'inopérabilité du système. Cela est vrai même pour quelque chose d'aussi simple que mtime (temps de modification). Par exemple, la distribution Gentoo Linux utilise mtime pour déterminer si les fichiers appartiennent à un package spécifique ou ont été modifiés ultérieurement. Si vous ne restaurez pas les heures de modification correctes des fichiers, le système de gestion des packages sera complètement cassé.

Selon le logiciel que vous utilisez, différentes étapes peuvent être nécessaires pour sauvegarder toutes ces informations. Par exemple, lorsque vous utilisez tar avec ses options par défaut, les informations d'autorisation correctes ne peuvent pas être stockées. Un test rapide peut sembler possible, mais c’est trompeur. Avec les paramètres par défaut, tar décompresse les fichiers avec les paramètres umask (masque du mode de création de fichiers utilisateur) de l'utilisateur actuel. Si les paramètres umask actuels sont suffisamment lâches, alors les fichiers peuvent être récupérés avec leurs paramètres de droits, mais avec des paramètres umask plus stricts, ces restrictions seront appliquées aux fichiers récupérés. Pour éviter cela, tar doit être utilisé avec l'option --preserve-permissions.

Les informations sur les propriétaires de fichiers peuvent être stockées de deux manières : numérique et forme de texte. De nombreux programmes de sauvegarde préfèrent une représentation textuelle pour une meilleure lisibilité, mais cela n'est pas souhaitable lors de la sauvegarde d'un système entier. Il est probable que vous restaurerez le système à l'aide d'une sorte de Live CD, alors que la sauvegarde a été créée sur le système en cours de copie. Une fois restaurés, les fichiers appartenant à l'utilisateur bin recevront un ID de système de fichiers basé sur les données du fichier /etc/passwd du Live CD. S'il s'agit, par exemple, de l'ID 2, mais que le même ID est attribué au démon utilisateur sur le système en cours de restauration, alors les fichiers appartenant à bin appartiendront au démon. Par conséquent, vous devez toujours stocker les informations sur la propriété des fichiers sous forme numérique. Il existe une option --numeric-owner dans tar à cet effet. Il existe un paramètre similaire dans rdiff-backup --preserve-numerical-ids , ajouté dans la version 1.1.0 à ma demande. dar ne prendra jamais en charge la représentation textuelle. Nous avons discuté de cette question avec l'auteur et il a souscrit à mes arguments.

Certains programmes de sauvegarde (tels que tar et dar) peuvent restaurer l'heure (temps d'accès) après avoir lu les fichiers lors de la création d'une copie. Ceci est fait pour garantir que les copies correspondent le plus possible à l’original. Cette fonction doit être utilisée avec précaution car la restauration de atime modifie ctime (change time). Vous ne pouvez rien y faire, car ctime ne peut pas être installé de force. La page de manuel dar indique que le serveur Leafnode NNTP, lors de la mise en cache, s'attend à ce que l'heure du dernier accès soit restaurée, mais il est généralement très rare d'avoir besoin de restaurer une heure. À mon avis, supposer que la valeur atime est restaurée dans une copie de sauvegarde constitue un grave défaut pour tout programme. Le temps d'accès peut être modifié arbitrairement, même par un utilisateur qui n'a pas accès pour écrire le fichier. De plus, les programmes d'indexation automatique tels que Beagle peuvent changer d'heure. De plus, un changement de ctime peut déclencher certains programmes pour protéger votre ordinateur. Comme déjà mentionné, ctime ne peut pas être défini de force, ce qui signifie que si la valeur ctime d'un fichier a changé alors que mtime est resté inchangé depuis la dernière vérification, ce fichier aurait pu être remplacé par un autre, cela indique généralement l'introduction d'un rootkit. . Par conséquent, gagner du temps d’accès n’a de sens que si vous savez absolument ce que vous faites. Par défaut, Dar gagne du temps. Des modifications pour corriger ce comportement ont déjà été apportées à CVS et apparaîtront probablement dans la version 2.4.0. Pour les anciennes versions, l'option --alter=atime doit être utilisée.

2.2. Fichiers spéciaux

2.2.1. Liens

Il existe deux types de liens : symboliques et physiques. Un lien symbolique, ou lien symbolique, est simplement un pointeur vers un autre emplacement du système de fichiers. Un lien physique, ou hardlink, est un pointeur supplémentaire vers un inode (descripteur d'index).

Pour enregistrer des liens symboliques, il vous suffit de vous assurer que votre application de sauvegarde enregistre le lien et non le fichier vers lequel il pointe. Tous les programmes ne se comportent pas de cette façon avec leurs paramètres par défaut, alors soyez prudent.

Les liens physiques nécessitent un peu plus d’attention. Comme déjà mentionné, un lien physique est essentiellement le deuxième (troisième, quatrième...) nom de fichier. Si vous avez un fichier A et un fichier B qui y font référence, ils se comportent comme si vous aviez deux fichiers. Si les deux fichiers font 1 Go, ils occuperont 1 Go d’espace disque, mais les applications penseront qu’ils occupent 2 Go. Étant donné que le fichier B n'est pas simplement un lien vers A, mais un autre nom pour le même fichier, vous pouvez supprimer le fichier A en toute sécurité. Le fichier B ne sera pas supprimé lorsque vous supprimerez le fichier A.

La plupart des applications de sauvegarde prennent en charge les liens physiques, mais uniquement si elles se trouvent toutes dans la même arborescence de répertoires. Si vous copiez les répertoires /bin, /etc, /usr, etc. avec une commande cp -a distincte pour chacun, les informations du lien physique ne seront pas reconnues et copiées. Étant donné que les liens physiques ne peuvent pas pointer vers un fichier sur un autre système de fichiers, il suffit de copier et de restaurer une partition à la fois. Par exemple, si le répertoire /home est placé sur une partition distincte, vous pouvez créer une archive distincte avec le répertoire racine / sans /home et une archive distincte avec uniquement /home . Si vous créez une archive incluant tous les points de montage, des étapes supplémentaires seront nécessaires pour garantir que les données sont restaurées sur les partitions appropriées. Si le programme n'interfère pas avec les répertoires existants, vous pouvez créer des points de montage portant les mêmes noms dans le nouveau système de fichiers avant de restaurer les données. DANS sinon Cette option devrait vous aider : restaurez d'abord les données sur une partition, puis copiez les parties sur vos partitions à l'aide de cp -a . N'utilisez pas mv pour déplacer des données. Imaginez ce qui se passerait si le programme tombait en panne sans terminer son travail.

Linux et d'autres systèmes d'exploitation de type Unix utilisent largement les liens physiques, alors assurez-vous que l'intégrité des liens est intacte à 100 %.

2.2.2. Fichiers clairsemés

Un fichier fragmenté est un fichier dans lequel les zéros ne sont pas écrits sur le disque sous forme de zéros, mais ne sont tout simplement pas marqués. Grâce à cela, par exemple, un fichier d'un gigaoctet avec beaucoup d'espace vide ne peut occuper qu'un mégaoctet. Ces fichiers sont utilisés par le client torrent Azureus.

Les programmes de sauvegarde ne prennent pas toujours en charge les fichiers fragmentés. Lorsque vous utilisez un programme qui ne prend pas en charge les fichiers fragmentés, le fichier est lu comme un fichier normal. Les données du fichier restent les mêmes, mais elles peuvent occuper beaucoup plus d'espace. Soyez prudent, la sauvegarde peut ne pas tenir sur le disque prévu lors de la restauration si des fichiers fragmentés sont créés comme des fichiers normaux.

Pour les fichiers téléchargés via torrents, ce n'est pas trop mal : ils seront remplis de données une fois téléchargés d'une manière ou d'une autre. Mais lorsque vous disposez d'un grand nombre de fichiers fragmentés qui doivent rester clairsemés, un programme de sauvegarde prenant en charge les fichiers fragmentés est nécessaire. Mais dans tous les cas, même si le fichier est défini comme clairsemé, la copie ne sera pas placée au même endroit et de la même manière que l'original, puisque cette information ne peut être obtenue. Au lieu de cela, un nouveau fichier fragmenté sera créé dans lequel les zones non allouées seront utilisées à la discrétion du programme qui le crée. Cependant, cela ne devrait pas poser de problème. Je ne peux pas imaginer une situation dans laquelle cela serait important.

2.2.3. Autre

Il existe d'autres fichiers spéciaux, tels que les FIFO, les canaux nommés, les périphériques de bloc, etc. Ils n'ont rien de spécial et la plupart des applications savent comment les utiliser. Mais vous devez spécifier les bons paramètres. Par exemple, cp sans l'option -a tentera de copier les données du pipeline nommé au lieu de les recréer.

Il existe également des répertoires spéciaux : loss+found (dans les systèmes de fichiers Ext2/3/4). En fait, ce n'est pas du tout un répertoire ; il ne peut pas être créé avec le programme mkdir. Utilisez plutôt mklost+found. Si vous ne le savez pas, loss+found est utilisé pour stocker les fichiers récupérés par le programme e2fsck lorsque le système de fichiers est endommagé.

3. Ce qui peut être exclu

Pour gagner de la place sur votre support de sauvegarde, vous pouvez choisir de ne pas sauvegarder certains répertoires. Sous Gentoo Linux, ce sont /usr/portage/ et /var/tmp/portage .

Il existe également des systèmes de fichiers spéciaux montés à la racine, qui sont créés dynamiquement au démarrage ; ils n'ont pas besoin d'être enregistrés. Sur mon système, ce sont /sys , /proc , /lost+found , /media (qui contient uniquement des répertoires créés dynamiquement pour les supports amovibles) et /dev (car j'utilise udev ). Je ne sauvegarde pas non plus /mnt, mais d'autres systèmes devront peut-être le sauvegarder.

4. Données de candidature

Lors de la création d'une copie de sauvegarde d'un système en cours d'exécution, vous ne devez pas oublier les programmes qui peuvent modifier leurs données lors de la copie. Un bon exemple est celui des bases de données telles que MySQL ou PostgreSQL, ainsi que des données des programmes de messagerie (les fichiers mbox sont plus vulnérables que maildir). Les fichiers de données (généralement stockés quelque part dans /var ) peuvent être sujets à des modifications pendant le fonctionnement du système. Cela peut être dû à des opérations normales ou au nettoyage automatique de la base de données. Ne vous fiez jamais aux fichiers de données d'une base de données en cours d'exécution, d'un serveur LDAP, d'un référentiel Subversion ou de tout programme similaire que vous utilisez.

S'il n'est pas possible d'arrêter ces programmes avant d'effectuer une sauvegarde, planifiez des tâches pour sauvegarder périodiquement les dumps de base de données (en utilisant pg_dump pour PostgreSQL, slapcat pour OpenLDAP, svnadmin dump ou svn-backup-dumps pour Subversion, etc.) dans des fichiers avec une note. à propos de l'époque de la création. Vous pouvez ensuite sauvegarder ces fichiers, cela devrait être sécurisé. Dans la mesure du possible, utilisez des utilitaires de dumping natifs tels que pg_dump et slapcat pour PostgreSQL et OpenLDAP respectivement.

La création de vidages planifiés est toujours utile, quelle que soit la situation. En cas de corruption soudaine des données, les sauvegardes des états précédents de la base de données resteront et tout ne sera pas perdu. Et si le dump est stocké sur le système de fichiers local, vous n'aurez pas à vous soucier de rechercher dans les sauvegardes lorsque vous devrez restaurer la base de données (ou d'autres données d'application).

5. Précautions de base

Cette section contient quelques précautions et principes à garder à l’esprit.

5.1. Sauvegarde incrémentielle et mtime

Certains utilitaires de sauvegarde prennent en charge les copies incrémentielles, ce qui signifie qu'ils copient uniquement les données modifiées depuis la dernière sauvegarde. Un bon exemple est rdiff-backup, il ne prend en charge rien d’autre que cela. Soyez prudent avec la copie incrémentielle et découvrez comment le programme détermine si les données ont changé. La meilleure façon est de vérifier la somme de contrôle, mais cela prend beaucoup de temps. En deuxième place est fiable et façon rapide- vérification du temps. Certes, le système de fichiers doit également prendre en charge ctime, mais la plupart des systèmes le peuvent. L'exception concerne les systèmes de fichiers que vous n'utiliserez probablement pas (par exemple, FAT32).

Certains utilitaires utilisent uniquement mtime ou une combinaison de mtime + size pour suivre les modifications apportées aux fichiers. Il s'agit d'une méthode peu fiable. Par exemple, les images disque montées en tant que périphériques de bouclage à l'aide de losetup ne voient pas leur mtime modifiée lorsque le périphérique est monté et écrit. Voici un exemple tiré de mon expérience personnelle : j'ai créé une image d'un disque nécessitant une correction majeure du système de fichiers à l'aide de ddrescue . Pour commencer, j'ai décidé de faire une sauvegarde quotidienne. Il m'est venu à l'esprit de vérifier si l'heure mtime du fichier image disque change lors de l'écriture sur un périphérique de bouclage monté, car on soupçonnait que le montage n'est pas perçu par le système comme l'ouverture du fichier. Les soupçons ont été confirmés. Pour qu'un fichier soit inclus dans la copie de sauvegarde, il fallait d'abord modifier son heure de modification à l'aide du toucher .

Un autre petit exemple est la modification des balises ID3 dans le programme Easytag. Dans les paramètres d'Easytag, il y a une option « Enregistrer l'heure de modification du fichier ». Si la taille du fichier ne change pas, par exemple si vous modifiez un caractère dans une balise, l'heure et la taille de modification seront identiques et le changement de fichier ne sera pas remarqué.

rsync a la capacité de vérifier si un fichier a changé, mais c'est un processus très long. Par exemple, l'analyse de mon répertoire /home à la recherche de fichiers modifiés prend plus de temps que la création d'une sauvegarde complète sans compression à l'aide de dar . Veuillez consulter la section 6.4 ci-dessous pour plus de détails.

Bien entendu, vous pouvez ignorer le risque d’une telle erreur dans la détection des changements (car les chances sont faibles) et bénéficier de l’augmentation de la vitesse. Personnellement, je n'aime pas quand je peux imaginer un scénario dans lequel le programme ne remplit pas ses fonctions, mais pour l'instant je le supporte et j'utilise rdiff-backup pour certaines partitions.

5.2. Sauvegarde sur un autre système de fichiers

Copier simplement des données vers un autre système de fichiers n'est probablement pas La meilleure décision. La commande cp -a peut suffire à vos besoins (en supposant que la copie se fasse sur un système de fichiers qui prend en charge tout ce qui se trouve sur le système de fichiers source et, dans le cas de cp , aucun attribut étendu n'est utilisé). Ce qui me préoccupe, c'est qu'il est trop facile de modifier accidentellement un fichier ou ses métadonnées en l'ouvrant et en l'enregistrant. Il est plus fiable de stocker les données dans des archives, comme le font tar ou dar.

Puisque rsync stocke également simplement les métadonnées sur le système de fichiers, ce danger s'applique également à rsync.

Grâce aux informations contenues dans cet article, vous pouvez décider vous-même si cela vous dérange ou non. Cette approche présente certains avantages, tels que la possibilité de rechercher et de copier rapidement un fichier individuel à partir d'une sauvegarde.

5.3. Taille des archives

De nombreux systèmes de fichiers (ou protocoles réseau) ont des limites strictes en matière de taille de fichier. Lors de la sauvegarde à l'aide de programmes créant des archives, vous devez prendre en compte la taille de l'archive. En règle générale, il est préférable de limiter la taille à deux gigaoctets (ou un peu moins, par sécurité). Les fichiers de cette taille peuvent être enregistrés dans les systèmes de fichiers ISO DVD et FAT32. Je préfère une taille de 650 Mo pour pouvoir graver les fichiers sur des CD de 74 minutes.

Même si vous n'avez pas l'intention de stocker des sauvegardes sur de tels systèmes de fichiers, il est toujours préférable de diviser les archives en plusieurs parties afin de pouvoir les graver sur un CD ou un DVD si nécessaire.

5.4. Récupération

La restauration à partir d'une sauvegarde est tout aussi importante que sa création. Vous devez étudier les pages de manuel pour choisir les bonnes options de sauvegarde et de récupération. Je pense qu'un bon programme de sauvegarde devrait soit avoir soigneusement choisi les options par défaut, soit stocker les options que vous sélectionnez lorsque vous créez une sauvegarde dans une archive ou des métadonnées à utiliser lors de la restauration.

À cet égard, dar est un bon choix et ne nécessite aucune spécification de paramètres particuliers lors de la restauration. Vous devrez être un peu plus prudent lorsque vous utiliserez du goudron.

Cette section fournit quelques détails et exemples d'utilisation de différents programmes. N'oubliez pas qu'il existe de nombreux programmes de sauvegarde autres que ceux mentionnés ici. Je n'ai décrit que ceux avec lesquels j'ai beaucoup travaillé et ils illustrent l'application pratique des principes énoncés ci-dessus.

Parfois, ce sont les versions GNU des applications standards pour Linux qui sont indiquées ; elles peuvent différer fondamentalement des versions classiques, il ne faut pas l'oublier.

6.1. Dar

Tout d'abord, un avertissement. Je recommande fortement d'utiliser la version 2.3.3 (la dernière version stable au moment de la rédaction) ou une version plus récente, car elle corrige un bug sérieux. Vous pouvez lire le rapport détaillé dans la newsletter du dar.

Dar est un programme bien conçu qui apporte des solutions aux problèmes classiques. Par exemple, il est livré avec un binaire compilé statiquement qui peut être copié sur le premier disque de sauvegarde. dar prend en charge la division automatique des archives en volumes et il est possible de spécifier séparément la taille du premier volume afin de laisser de l'espace sur le premier disque, par exemple pour créer un CD bootable. Il est également possible d'exécuter une commande entre la création de volumes, afin de pouvoir les graver sur CD, calculer les informations de parité, etc. Et, très important, les options par défaut sont bien choisies, à l'exception peut-être de l'économie de temps (voir plus haut).

J'utilise une commande comme celle-ci pour enregistrer mon système sur un lecteur USB externe environ une fois par semaine en utilisant dar 2.2.6 (options spécifiques à la machine supprimées ou légèrement abstraites).

dar --execute "par2 c -r5 \"%p/%b.%n.par2\" \"%p/%b.%n.%e\"" --alter=atime --empty-dir \ --fs-root / --noconf --create ARCHIVE_NAME --slice 620M --first-slice 600M -z6 \ -an -Z "*.ogg" -Z "*.avi" -Z "*.mp?" -Z "*.pk3" -Z "*.flac" -Z "*.zip" -Z "*.tgz" \ -Z "*.gz" -Z "*.gzip" -Z "*.bz2" -Z "*.bzip2" -Z "*.mov" -Z "*.rar" -Z "*.jar" \ --prune perdu+trouvé --prune usr/portage/ --prune var/tmp/portage --prune media \ --prune proc --prune mnt --prune sys

Avec l'option --execute, je calcule les informations de parité en utilisant par2 . Les caractères secrets transmis au programme par2 sont convertis en nom du fichier créé par par2 et en nom du volume d'archive. L'option --alter=atime a déjà été discutée ci-dessus ; --empty-dir stocke les répertoires vides dans l'archive pour tous les répertoires exclus de la sauvegarde ; -an suivi de -Z utilise un masque insensible à la casse pour indiquer quels fichiers ne doivent pas être compressés. Le taux de compression est spécifié à l'aide de -z6 . --prune est utilisé pour exclure des répertoires. Le reste devrait être clair.

De plus, je crée généralement une sauvegarde quotidienne non compressée de /home en utilisant dar. La taille est d'environ 6 Go, la copie prend environ 10 minutes. Tout à fait acceptable, à mon avis. Mais à mesure que la taille du répertoire personnel augmente, je passe à rsync puis à rdiff-backup et j'accepte le temps nécessaire pour vérifier les modifications.

La restauration à partir d'une archive dar devrait être sécurisée avec les paramètres par défaut (très aspect important, à mon avis), mais juste au cas où, lisez la page de manuel.

6.2. Tar GNU

GNU tar peut faire tout ce dont vous pourriez avoir besoin pour une sauvegarde fiable (cependant, il convient de le noter, je ne sais pas dans quelle mesure il prend en charge les attributs étendus, voire pas du tout). Attention toutefois à ne pas oublier l’option --numeric-owner. Cela peut également s'appliquer à l'option du même propriétaire, mais un test rapide et un coup d'œil au manuel suggèrent que l'option --preserve-permissions (qui est activée par défaut pour utilisateur root) Cela signifie. Si vous oubliez d'utiliser l'option --numeric-owner pour la commande de sauvegarde, vous pouvez la définir pendant le processus de restauration. Son utilisation pour la sauvegarde devrait, en théorie, éliminer le besoin de le spécifier lors de la restauration, car avec cette option, tar n'enregistre pas les noms des propriétaires sous forme de texte dans l'archive.

tar ne dispose pas non plus d'une fonctionnalité décente pour le partitionnement en volumes. Il existe des recommandations pour utiliser split , mais ce n'est pas très pratique. Pour utiliser le fractionnement, vous devez d'abord allouer de l'espace pour créer l'archive, puis de l'espace pour enregistrer les parties fractionnées. La restauration de fichiers est également un problème : vous devez d'abord connecter les segments à l'aide de cat , et ensuite seulement vous pourrez décompresser l'archive.

Un autre problème avec tar m'a été signalé par un lecteur. Dans la version 1.15.1, le programme corrompait les fichiers fragmentés de plus de 4 Go. DANS versions modernes tar (1,20 et supérieur) ne semble pas avoir ce problème, mais il vaut mieux vérifier.

Je recommande d'utiliser tar uniquement si les limitations ne vous dérangent pas et si vous devez spécifier les paramètres corrects.

6.3. Sauvegarde Rdiff

Lors de l'évaluation de la fiabilité de rdiff-backup, il faut prendre en compte la méthode de suivi des modifications utilisée dans ce programme. Si vous travaillez fréquemment avec des images disque, lisez l'exemple ci-dessus. Une fois que nous avons discuté avec l'auteur manière alternative suivre les changements, mais il n’avait pas le temps et la discussion ne menait nulle part. Peut-être qu'à l'avenir, le programme disposera d'un moyen fiable de suivre les modifications basées sur des sommes de contrôle ou sur ctime. Veuillez noter que rdiff-backup stocke les sommes de contrôle dans ses métadonnées depuis la version 1.1.1 (05/11/2005), mais ne les utilise toujours pas pour suivre les modifications dans les fichiers (à partir de la version 1.2.1, 24/08/2008). ).

De plus, lors de la restauration à l'aide de rdiff-backup à partir d'une copie complète du système sous un autre OS, par exemple un Live CD, n'oubliez pas de préciser le paramètre --preserve-numerical-ids, sinon les fichiers auront le mauvais propriétaire. C'est trop facile à oublier (testé à partir de ma propre expérience).

En attendant, si vous êtes complètement sûr de ne pas être affecté par le problème avec mtime décrit ci-dessus, par exemple dans /home, vous pouvez utiliser ce programme en toute sécurité. Il est possible que mes craintes vous paraissent exagérées et vous pourrez copier le système dans son intégralité quoi qu'il arrive. J'ai décidé que le danger n'était pas trop grand et j'ai utilisé rdiff-backup. C'est un programme très fiable et l'un des meilleurs pour la copie incrémentielle, à mon avis.

6.4. Rsync

Mon principal problème avec rsync est que les métadonnées du programme sont recréées sur le système de fichiers cible. Cela limite non seulement l'utilisation du système de fichiers cible, mais est aussi généralement étrange, comme décrit ci-dessus. De plus, rsync est l'un de ces utilitaires qui vérifie les modifications apportées aux fichiers en fonction d'une combinaison de mtime et de taille. Et comme ses options pour vérifier de manière fiable les modifications de fichiers (--ignore-times et surtout --checksum) ralentissent le programme, un dar non compressé peut être préférable. Bien sûr, uniquement lors d'une sauvegarde sur un support local rapide.

Il est important de noter ici que rsync ne sauvegarde pas les fichiers de métadonnées et compare donc le mtime et la taille du fichier à la copie. Cela signifie que uniquement lors de l'utilisation de l'option --times pour enregistrer les fichiers mtime, la vérification des modifications ne fonctionnera pas comme décrit précédemment.

rsync dispose d'un commutateur --archive spécial spécialement conçu pour enregistrer toutes les métadonnées. Certes, ce paramètre n'est toujours pas suffisant. Par exemple, les informations des liens physiques ne sont pas enregistrées par défaut car elles sont trop lentes. Les liens physiques, les attributs étendus et les listes de contrôle d'accès ne sont pas non plus enregistrés. Par conséquent, vous devez en outre spécifier --hard-links , --acls et --xattrs (rsync prend en charge les attributs étendus depuis la troisième version, semble-t-il). Il est également conseillé d'ajouter les options --sparse et --numeric-ids pour les raisons décrites ci-dessus. j'en ajouterais plus --delete --delete-exclu --delete-after afin que les anciens fichiers ne soient pas inclus dans la sauvegarde. L'option --delete-after est obligatoire car sinon, si le processus de copie échoue, les fichiers renommés depuis la dernière sauvegarde ( ancien fichier supprimé, un nouveau créé) sera supprimé avant que le nouveau fichier ne soit copié. Il est préférable de copier d'abord le nouveau fichier, puis de supprimer l'ancien.

Il est également important de constituer la bonne équipe de rétablissement. La copie restaurée devant être identique à la source, il devrait suffire de préciser les mêmes paramètres que lors de la création de la sauvegarde.

La troisième version de rsync est sortie il y a quelque temps. Il existe de nouvelles fonctionnalités intéressantes, telles que la prise en charge des listes de contrôle d'accès et des attributs étendus. Il peut y avoir des problèmes pour détecter les modifications, mais, surtout à partir de la version trois, le programme vaut la peine d'être utilisé (peut-être uniquement pour sauvegarder des parties) car il est très efficace et bien pensé.

6.5. CP GNU

J'ai toujours pensé que cp -a préservait tout ce qui était nécessaire, mais il s'avère que les informations de la liste de contrôle d'accès et éventuellement les attributs étendus ne sont pas du tout copiés. Je n'utilise pas de listes de contrôle d'accès, je ne peux donc fournir aucun test, alors essayez-le vous-même.

6.6. Clonezilla

Clonezilla est un Live CD spécialisé pour créer des images de systèmes de fichiers de différents types, y compris NTFS. Hormis quelques bizarreries d’interface, il s’agit d’un programme magnifiquement conçu. Il répond à toutes les attentes, comme l'utilisation de dd pour sauvegarder le MBR et la zone située entre le MBR et la première partition. Il démarre même la synchronisation une fois terminé. C'est comme si le programme lisait cet article :) Et peut-être le plus important : vous pouvez éjecter le CD lors de l'arrêt ou du redémarrage !

6.7. Autres outils de clonage de partition

Les programmes de clonage de partitions comme g4u, partimage, clonezilla (ou dd...) peuvent s'avérer très pratiques, mais ils présentent (pour la plupart) un inconvénient majeur : ils nécessitent (souvent) que les données soient restaurées sur un disque identique et (ou) les mêmes rubriques. Si un disque tombe et que vous devez en trouver un nouveau, cela peut être difficile.

Cependant, ce n'est pas toujours le cas. J'ai récemment copié un disque entier en utilisant dd sur un autre (1 Go plus grand) avec la commande dd if=/dev/sda of=/dev/sdb . Le nouveau disque dispose désormais d'une zone non allouée, mais il fonctionne correctement. Windows XP installé sur cette partition démarre à partir du nouveau disque, bien que Windows XP soit capricieux dans ce domaine. Dans tous les cas, la restauration sur une partition plus petite sera problématique. Parfois, vous pouvez improviser, mais il vaut mieux l'éviter. Si vous envisagez d'utiliser cette méthode de sauvegarde, il est préférable de vous assurer que le disque de rechange est de taille suffisante. Ceci peut être réalisé en permettant aux disques d'augmenter en taille au fil du temps ou en utilisant de petites partitions (mais pas trop petites pour éviter la fragmentation).

Les programmes de clonage peu intelligents, tels que g4u ou dd, perdent énormément de temps en copiant chaque bloc du système de fichiers, y compris ceux non alloués. Et si ces blocs non alloués ne sont pas pré-écrits avec des zéros, l'image finale s'avère très grande.

Un autre aspect que beaucoup trouveront gênant est la nécessité d'éteindre l'ordinateur avant de créer l'image. À ma connaissance, aucun programme ne peut créer une image du système de fichiers d'un système en cours d'exécution. Dans tous les cas, ce n'est certainement pas une bonne idée de créer une image d'une partition avec un système en cours d'exécution à l'aide de dd .

7. Automatisation

Lors de l'automatisation des sauvegardes, il y a un point important à retenir : synchronisez les tampons du disque aussi souvent que possible, et il est conseillé d'attendre une seconde ou deux après la synchronisation pour permettre au cache du périphérique d'être écrit directement sur le disque. Certains médias signaleront plus tôt qu'ils ont vidé le cache sur le disque, vous ne pouvez donc pas toujours compter sur l'écriture des données du cache volatile, et il est préférable d'attendre un peu après la fin de la synchronisation.

Voici un exemple pour démontrer l'importance de ce point : Disons que nous effectuons une sauvegarde en utilisant tar . Nous faisons d’abord une nouvelle copie, puis nous supprimons l’ancienne. Si cache disque n'est pas synchronisé et que l'alimentation a été coupée pendant la suppression de l'ancienne copie, il peut arriver que l'ancienne et la nouvelle copie soient endommagées. On m'a dit que cela était inutile car les données dans le cache sont classées séquentiellement et la suppression après la commande de copie initiale entraînera l'écriture du cache en premier. Ce n'est pas tout à fait vrai, surtout si vous possédez un disque avec NCQ/TCQ, qui constitue la majorité des disques modernes. L’intérêt de l’écriture d’un cache est de préparer les écritures dans le désordre.

synchroniser ; dormir 2 monter SECTION_TO_WRITE_COPY [BACKUP_COMMAND] sync ; dormir 2 [COMMAND_DELETE_OLD_FILES] synchronisation ; dormir 2 heures

Exécuter la synchronisation à la fin est également important afin qu'en cas de panne, les données ne soient pas endommagées lors du démontage si le support est, par exemple, physiquement déconnecté.

8. Copie du système de fichiers

Si vous souhaitez créer des instantanés de l'ensemble du système de fichiers, il est logique d'utiliser des partitions logiques créées à l'aide de LVM. Les partitions logiques vous permettent de créer des instantanés atomiques d'une partition entière. La meilleure sauvegarde est une copie au niveau du système de fichiers ou en dessous, car elle préserve toutes les données et métadonnées, c'est donc une méthode de sauvegarde très fiable.

Cependant, je n'ai jamais utilisé LVM et je ne peux donc rien en dire d'utile. Lisez vous-même la documentation pour savoir si cela vous convient vraiment.

Lorsque vous prenez des instantanés, vous devez toujours prendre des précautions avec les applications qui modifient leurs données lors de la copie. De la même manière, vous devez vider les bases de données, les arborescences LDAP, etc., afin de ne pas copier les fichiers lors des modifications.

9. Sélection d'un système de fichiers

Bien que cela dépasse quelque peu le cadre de l'article, je voudrais dire quelques mots sur le choix d'un système de fichiers. De nombreuses personnes préfèrent ReiserFS à Ext3 en raison de sa nouveauté ou de ses différences mineures. Ext3 est le système de fichiers par défaut dans la plupart des Distribution Linux. Je recommande de rester avec, sauf s'il y a une raison spécifique d'utiliser autre chose. ReiserFS, par exemple, dispose d'une journalisation logique. Il existe des informations selon lesquelles cela peut être dangereux en cas de panne de courant. De plus, Hans Reiser lui-même a déclaré (ou aurait dit) que ReiserFS est optimisé pour la vitesse et non pour un fonctionnement sans erreur.

Même le nouveau système de fichiers Ext4 présente des problèmes potentiels associés à une allocation paresseuse. Dans Ext3, c'était un paramètre facultatif (data=writeback

Aucune excuse : sauvegarde réseau distribuée sécurisée à faire soi-même

Si tu - Utilisateur Linux, alors vous disposez déjà d’outils extrêmement puissants pour créer des solutions de sauvegarde personnalisées. Les solutions décrites dans cet article vous permettent d'effectuer des sauvegardes réseau simples et plus avancées à l'aide des outils open source inclus dans presque toutes les distributions Linux.

Schéma de sauvegarde simple

Pour faciliter l'apprentissage, cet article utilise une approche étape par étape.

Nous commencerons par un mécanisme d'archivage simple mais efficace, puis passerons à une solution de sauvegarde distribuée avancée. Jetez un œil à arc, un script pratique qui vous permet de créer des sauvegardes à partir de la ligne de commande Linux.

Listing 1. Arc de script Shell
#!/bin/sh tar czvf $1.$(date +%Y%m%d-%H%M%S).tgz $1 exit $?

Le script arc prend le chemin d'accès à un fichier ou à un répertoire comme paramètre, puis crée un fichier d'archive dont le nom contient la date actuelle. Par exemple, pour archiver le répertoire beoserver, le script arc doit lui transmettre le chemin, après quoi une archive compressée sera générée avec un nom approximativement semblable à celui-ci : beoserver.20040321-014844.tgz

Pour faciliter l'organisation des fichiers d'archive, incluez la date et l'heure dans leurs noms à l'aide de la commande date. La date a le format suivant : année, mois, jour, heure, minutes, secondes – les secondes sont probablement inutiles dans notre cas. Vous pouvez en apprendre davantage sur les paramètres de la commande date dans son manuel, que vous pouvez consulter avec la commande man date . De plus, dans le listing 1, nous utilisons l'option -v (verbose, verbeux) de la commande tar. La commande tar, lorsqu'elle est exécutée avec cette option, affiche les noms de tous les fichiers en cours d'archivage. Si cela n'est pas requis, l'option -v peut être supprimée.

Listing 2. Archivage du répertoire beoserver
$ ls arc beoserver $ ./arc beoserver beoserver/ beoserver/bookl.dat beoserver/beoserver_ab_off beoserver/beoserver_ab_on $ ls arc beoserver beoserver.20040321-014844.tgz

Schémas de sauvegarde complexes

Un schéma de sauvegarde simple est très utile, mais il nécessite des opérations manuelles. Les meilleures pratiques du secteur recommandent d'effectuer des sauvegardes régulières et de stocker les sauvegardes sur différents supports et dans différents emplacements. Le principe de base est d’éviter de dépendre d’un seul support ou d’un seul emplacement de stockage multimédia.

Nous allons résoudre ce problème dans l'exemple suivant, basé sur un réseau distribué dont le schéma, illustré à la figure 1, comprend un administrateur système ayant accès à deux serveurs distants et un stockage de données externe.

Les copies de sauvegarde des fichiers situés sur le serveur n°1 et le serveur n°2 seront transférées en toute sécurité vers un stockage externe ; L’ensemble du processus de sauvegarde distribuée sera effectué de manière entièrement automatique et régulière. Nous utiliserons un ensemble standard d'outils, qui comprend des programmes du package Open Secure Shell (OpenSSH), un archiveur de bandes (tar) et un service de planification de tâches cron. En général, notre plan est d'utiliser cron pour planifier des tâches de sauvegarde, implémentées à l'aide de scripts shell et d'un archiveur de bande tar. Le shell sécurisé (ssh) assurera le cryptage du trafic et l'authentification des utilisateurs, et le programme de copie sécurisée (scp) automatisera les transferts de fichiers. Je vous recommande de lire d'abord les manuels d'utilisation de tous les outils répertoriés.

Accès à distance sécurisé à l'aide de clés publiques/privées

Dans le contexte de la sécurité des informations, une clé représente des données utilisées pour chiffrer et déchiffrer d'autres données. Ce qui est intéressant dans le fonctionnement des clés publiques et privées, c'est que les données chiffrées avec une clé publique ne peuvent être déchiffrées qu'à l'aide de la clé privée correspondante. La clé publique peut être distribuée librement afin que d'autres personnes puissent l'utiliser pour crypter les messages qui vous sont adressés. L’une des raisons pour lesquelles les systèmes à clé publique ont révolutionné la sécurité de l’information est que l’expéditeur et le destinataire d’un message n’ont pas besoin d’une clé ou d’un mot de passe partagé. Entre autres choses utiles, la cryptographie à clé publique a rendu possible le commerce électronique et d’autres types de transactions sécurisées. Dans cet article, nous allons créer une clé publique et privée que nous utiliserons pour créer une solution de sauvegarde distribuée sécurisée.

Chaque ordinateur impliqué dans le processus de sauvegarde doit exécuter le service shell sécurisé OpenSSH (sshd). Le port 22 utilisé par le service doit être ouvert pour ces machines sur tous les firewalls intermédiaires. Si vous travaillez avec des serveurs distants, il y a de fortes chances que vous le fassiez en utilisant un shell sécurisé.

Nous essaierons de fournir un accès à distance aux ordinateurs, en évitant d'avoir à saisir manuellement les mots de passe. Il existe une opinion selon laquelle le moyen le plus simple de résoudre ce problème est de refuser d'utiliser des mots de passe : ce n'est pas nécessaire. Ce n'est pas sûr. L'approche que nous allons considérer dans cet article vous permettra de mettre en place en une heure un système qui fournit haut niveau sécurité de l’information, tout en conservant tous les avantages d’un accès « sans mot de passe ».

Tout d'abord, vérifions si le package OpenSSH est installé et découvrons son numéro de version. Au moment d'écrire ces lignes, la dernière version d'OpenSSH est la version 3.8, publiée le 24 février 2004. Il est recommandé d'utiliser la version la plus récente et la plus stable, au moins ultérieure à la version 2.x. Pour obtenir des informations détaillées sur les vulnérabilités trouvées dans versions précédentes OpenSSH, visitez la page Sécurité OpenSSH (lien fourni ci-dessous dans la section). Actuellement, OpenSSH est un programme assez stable qui ne présente pas les vulnérabilités trouvées dans d'autres outils SSH.

Pour afficher la version du programme, exécutez la commande ssh avec le paramètre V ( lettre majuscule):

$ssh-V
OpenSSH_3.5p1, protocoles SSH 1.5/2.0, OpenSSL 0x0090701f

Si la commande ssh affiche une version supérieure à 2.x, l'ordinateur est en relativement bon état. Il est toutefois recommandé d'utiliser les dernières versions stables de tous les logiciels installés - ceci est particulièrement important pour les outils de sécurité des informations.

Notre première étape sera de nous connecter au serveur de stockage externe avec un compte qui aura accès aux serveurs 1 et 2 (Figure 1).

$ssh [email protégé]

Après vous être connecté au serveur de stockage externe, créez une paire de clés publique/privée en exécutant le programme ssh-keygen avec l'option -t dsa. Le paramètre -t est obligatoire et permet de spécifier le type de clé de chiffrement à générer. Nous utiliserons l'algorithme de signature numérique (DSA), qui nous permet d'utiliser le nouveau protocole SSH2. Des informations supplémentaires sur ce problème peuvent être obtenues en lisant le manuel du programme ssh-keygen.

Après avoir exécuté ssh-keygen, vous serez invité à spécifier le répertoire dans lequel les fichiers de clé ssh seront créés, après quoi il vous sera demandé un mot de passe. Si vous répondez à la question sur le répertoire dans lequel enregistrer les clés en appuyant simplement sur Entrée, le programme créera un répertoire .ssh caché (s'il n'a pas été créé précédemment), qui contiendra deux fichiers contenant les clés publique et privée.

Une fonctionnalité intéressante de ssh-keygen est que le programme permet à l'utilisateur de contourner la saisie d'une phrase secrète en appuyant sur Entrée lorsque vous y êtes invité. Si aucune phrase secrète n'est fournie, ssh-keygen générera des clés non chiffrées. Il est facile de deviner que ce n’est pas la meilleure idée. Lorsque vous êtes invité à saisir une phrase secrète, saisissez message texte d'une longueur raisonnable, composé de caractères alphanumériques, plutôt que de se limiter à un mot de passe ordinaire d'une syllabe.

Listing 3. Essayez de choisir une bonne phrase secrète
:$ ssh-keygen -t dsa Génération d'une paire de clés DSA publique/privée. Entrez le fichier dans lequel enregistrer la clé (/home/accountname/.ssh/id_dsa) : Entrez la phrase secrète (vide s'il n'y a pas de phrase secrète) : (entrez la phrase secrète) Saisissez à nouveau la même phrase secrète : (entrez la phrase secrète) Votre identification a été enregistrée dans /home /nom du compte/.ssh/id_dsa. Votre clé publique a été enregistrée dans /home/accountname/.ssh/id_dsa.pub. L'empreinte digitale de la clé est : 7e:5e:b2:f2:d4:54:58:6a:fa:6b:52:9c:da:a8:53:1b accountname@offsite

Le répertoire .ssh créé par ssh-keygen étant masqué, vous devez exécuter la commande ls avec l'option -a pour le voir.

$ ls -a
. .. .bash_logout .bash_profile .bashrc .emacs .gtkrc .ssh

Accédez au répertoire caché.ssh et affichez son contenu :

$cd.ssh
$ ls -lrt
id_dsa id_dsa.pub

On voit que le répertoire .ssh caché contient les fichiers des clés secrètes (id_dsa) et publiques (id_dsa.pub). Vous pouvez afficher le contenu de ces fichiers à l'aide d'un éditeur de texte tel que vi ou emacs, ou en utilisant les commandes less ou cat. Lors de la visualisation du contenu des fichiers, vous verrez qu'il est constitué de caractères alphanumériques codés en base64.

Listing 4. Installation de clés publiques sur des serveurs distants
$scp.ssh/id_dsa.pub [email protégé]:hors site.pub [email protégé]"Mot de passe : (entrez le mot de passe, pas une nouvelle phrase secrète !) id_dsa.pub 100% |********************************* *******| 614 00:00 $ scp .ssh/id_dsa.pub [email protégé]:hors site.pub [email protégé]"Mot de passe : (entrez le mot de passe, pas une nouvelle phrase secrète !) id_dsa.pub 100% |********************************* *******| 614 00:00

Après avoir installé les nouvelles clés publiques, nous pourrons nous connecter à chacun des serveurs en utilisant la phrase secrète spécifiée lors de la création des clés publiques et privées. Pour l'instant, connectez-vous à chacun des serveurs et ajoutez le contenu du fichier offsite.pub à la fin du fichierauthorized_keys situé dans le répertoire .ssh. Cela peut être fait à l'aide d'un éditeur de texte ou de la commande cat :

Listing 5. Ajout de offsite.pub à la liste des clés autorisées
[email protégé]"Mot de passe : (entrez le mot de passe, pas une nouvelle phrase secrète !) $ cat offsite.pub >> ./ssh/authorized_keys

Dans la prochaine étape, nous prendrons des mesures de sécurité supplémentaires. Tout d'abord, nous allons modifier les autorisations sur .ssh afin que seul son propriétaire ait un accès en lecture, en écriture et en exécution à ce répertoire. Nous veillerons alors à ce que seul le propriétaire ait accès au fichierauthorized_keys. Enfin, nous supprimerons le fichier de clé publique offsite.pub précédemment téléchargé car inutile. Il est très important d'attribuer correctement les autorisations car le serveur OpenSSH peut refuser d'utiliser des clés dont les autorisations ne sont pas sécurisées sur les fichiers.

Listing 6. Modification des autorisations avec chmod
$ chmod 700 .ssh $ chmod 600 ./ssh/authorized_keys $ rm offsite.pub $ exit

Après avoir terminé ce processus sur le serveur 2, nous passerons au serveur de stockage externe pour tester la nouvelle méthode d'accès basée sur la phrase secrète. Vous pouvez le faire en exécutant la commande suivante sur le serveur de stockage externe :

$ssh-v [email protégé]

L'option -v, qui active le mode message détaillé, vous permet d'afficher les informations de débogage tout en vérifiant votre accès compte au serveur distant en utilisant une nouvelle phrase secrète au lieu du mot de passe d'origine. Les informations de débogage incluent des informations inaccessible à l'utilisateur dans d'autres circonstances, y compris des informations de haut niveau sur le fonctionnement du processus d'authentification. En fonctionnement normal, l'option -v n'est pas nécessaire, mais elle est très utile pour tester une connexion.

Automatisation de l'accès à l'ordinateur à l'aide d'un agent ssh

L'agent ssh joue le rôle de passerelle, fournissant un accès sécurisé aux clés sur demande. Une fois lancé, l'agent ssh s'exécute en arrière-plan et peut être utilisé par les programmes du package OpenSSH tels que ssh ou scp. Avec lui, le programme ssh peut utiliser une clé pré-déchiffrée au lieu de demander une phrase secrète à chaque fois qu'il en a besoin.

Examinons de plus près le programme ssh-agent. Ssh-agent génère les commandes suivantes :

Listing 7. ssh-agent en action
$ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-XX1O24LS/agent.14179 ; exporter SSH_AUTH_SOCK ; SSH_AGENT_PID=14180 ; exporter SSH_AGENT_PID ; écho Agent pid 14180 ;

Nous pouvons dire au shell d'exécuter les commandes générées par ssh-agent à l'aide de la commande intégrée eval :

$eval `ssh-agent`
Code d'identification de l'agent 14198

La commande eval évalue (exécute) les commandes générées par le programme ssh-agent. Assurez-vous d'utiliser des backticks (`) et non des guillemets simples ! La commande eval `ssh-agent` renvoie l'ID du processus de l'agent. À notre insu, les variables shell SSH_AUTH_SOCK et SSH_AGENT_PID ont été exportées. Leurs valeurs peuvent être visualisées en imprimant la commande suivante sur la console :

$ écho $SSH_AUTH_SOCK
/tmp/ssh-XX7bhIwq/agent.14197

La variable $SSH_AUTH_SOCK (abréviation de SSH Authentication Socket) contient le chemin d'accès au socket local utilisé par les applications pour communiquer avec le programme ssh-agent. Pour vous assurer que les variables SSH_AUTH_SOCK et SSH_AGENT_PID sont toujours définies, ajoutez la commande eval `ssh-agent` à votre fichier ~/.bash_profile.

Après cela, ssh-agent devient un processus en arrière-plan, visible à l'aide des commandes top et ps.

Nous pouvons maintenant l'utiliser pour partager une phrase secrète. Pour ce faire, nous avons besoin du programme ssh-add, qui ajoute (envoie) une phrase secrète au programme ssh-agent.

Listing 8. Utiliser ssh-add pour vous connecter au serveur sans problème
$ ssh-add Saisissez la phrase secrète pour /home/accountname/.ssh/id_dsa : (entrez la phrase secrète) Identité ajoutée : /home/accountname/.ssh/id_dsa (/home/accountname/.ssh/id_dsa)

Désormais, lors de l'accès au serveur 1, la phrase secrète ne sera plus demandée :

$ssh [email protégé]
$sortie

Si l'exemple ci-dessus ne vous semble pas convaincant, essayez de tuer (kill -9) le processus ssh-agent et de vous reconnecter au serveur1. Dans ce cas, vous remarquerez que le serveur1 demandera la phrase secrète de la clé privée stockée dans le fichier id_dsa, qui se trouve dans le répertoire .ssh.

$ tuer -9 $SSH_AGENT_PID
$ssh [email protégé]
Entrez la phrase secrète pour la clé "/home/accountname/.ssh/id_dsa" :

Accès simplifié aux clés à l'aide du script de trousseau

À ce stade, nous avons appris comment fonctionnent certains programmes du package OpenSSH (ssh, scp, ssh-agent et ssh-add), et nous avons également créé et installé un secret et clés publiques afin de fournir un processus de connexion sécurisé et automatique au serveur. Vous avez probablement déjà réalisé que la plupart des travaux de configuration ne doivent être effectués qu'une seule fois. Par exemple, le processus de création et d'installation de clés, ainsi que la configuration de ssh-agent pour qu'il s'exécute à partir de .bash_profile, n'est effectué qu'une seule fois pour chaque serveur. C'est bon.

Le problème est que ssh-add doit être exécuté à chaque fois que nous nous connectons au serveur de stockage externe et également qu'il faut un effort supplémentaire pour rendre ssh-agent compatible avec le planificateur dont nous avons besoin pour organiser la sauvegarde. La raison pour laquelle cron est incapable de communiquer avec ssh-agent est que emplois cron s'exécutent en tant que processus enfants du planificateur et ne reçoivent donc pas de copie de la variable $SSH_AUTH_SOCK.

Heureusement, il existe une solution à ce problème qui vous permet non seulement de supprimer les restrictions associées à l'utilisation de ssh-agent et ssh-add, mais également d'utiliser cron pour automatiser tous les types de tâches nécessitant un accès sécurisé et sans mot de passe aux machines distantes. . Dans ton cycle Gestion des clés OpenSSH(lien dans la section ) composé de trois articles publiés par DeveloperWorks en 2001, Daniel Robbins a présenté le script trousseau, qui est une interface vers les programmes ssh-agent et ssh-add qui facilite le processus d'accès sans mot de passe. Au fil du temps, de nombreuses améliorations ont été apportées à ce script, désormais maintenu par Aron Griffis. La dernière version, datée du 17 juin 2004, porte le numéro 2.3.2-1.

Le texte du script du trousseau est trop long pour être inclus dans cet article, car, comme tout script bien écrit, il comprend un grand nombre de vérification des erreurs, documentation détaillée et une quantité impressionnante de code multiplateforme. Malgré ses capacités étendues, le script du trousseau peut être rapidement téléchargé depuis le site Web du projet (le lien est fourni dans la section).

Travailler avec le script, une fois que vous l'avez téléchargé et installé, est très simple. Accédez simplement à chacun des serveurs et ajoutez les deux lignes suivantes à la fin des fichiers .bash_profile :

trousseau id_dsa
. ~/.keychain/$HOSTNAME-sh

La prochaine fois que vous vous connecterez aux serveurs, le trousseau vous demandera une phrase secrète. Toutefois, lors des connexions suivantes, vous ne serez pas invité à saisir une phrase secrète tant que le serveur n'aura pas été redémarré. Et, plus important encore, les tâches cron pourront accéder en toute sécurité aux machines distantes sans saisir de mot de passe. Désormais, notre solution combine les avantages sécurité accrue et facilité d'utilisation.

Listing 9. Initialisation du trousseau sur chaque serveur
Porte-clés 2.3.2 ; http://www.gentoo.org/projects/keychain Copyright 2002-2004 Gentoo Technologies, Inc. ; Distribué sous GPL * Initialisation du fichier /home/accountname/.keychain/localhost.localdomain-sh... * Initialisation du fichier /home/accountname/.keychain/localhost.localdomain-csh... * Démarrage de ssh-agent * Ajout de 1 clé(s)... Entrez la phrase secrète pour /home/accountname/.ssh/id_dsa : (entrez la phrase secrète)

Automatisez le processus de sauvegarde

Notre prochaine tâche consiste à écrire des scripts qui effectuent les opérations requises pour la sauvegarde. Le but de ces scripts sera de créer une copie de sauvegarde complète des bases de données situées sur les serveurs server1 et server2. Chacun des serveurs de l'exemple considéré dispose d'un SGBD MySQL installé. Ainsi, pour exporter plusieurs tables sous la forme d'un script SQL, nous utiliserons l'utilitaire mysqldump, exécuté en ligne de commande.

Listing 10. Script dbbackup.sh pour le serveur 1
#!/bin/sh # allez dans le répertoire backup_agent, où les fichiers de données sont stockés. cd /home/backup_agent # exporter les tables de la base de données à l'aide de l'utilitaire mysqldump mysqldump -u sitedb -pG0oDP@sswrd --add-drop-table sitedb -- tables tbl_ccode tbl_machine tbl_session tbl_stats > userdb.sql # archiver et compresser les fichiers tar czf userdb. tgz utilisateurdb.sql

Sur le serveur 2, nous placerons un script similaire qui sauvegarde les tables uniques de la base de données installée sur celui-ci. Pour chaque script, vous devez définir l'indicateur du fichier exécutable en exécutant la commande :

:$ chmod +x dbbackup.sh

Après avoir placé des copies du fichier dbbackup.sh sur les serveurs 1 et 2, nous retournons au serveur de stockage externe, où nous créons un script qui les exécute avant de démarrer le processus de copie à distance des archives compressées (.tgz).

Listing 11. Script backup_remote_servers.sh pour placer un stockage externe sur le serveur
#!/bin/sh # utilisez ssh pour exécuter à distance le script dbbackup.sh sur le serveur 1 /usr/bin/ssh [email protégé]"/home/backup_agent/dbbackup.sh" # utilise scp pour copier en toute sécurité le fichier créé fichier d'archive userdb.tgz # depuis le serveur 1. Notez l'utilisation de la commande date pour générer un horodatage # lors du placement du fichier sur le serveur de stockage externe. /usr/bin/scp [email protégé]:/home/backup_agent/userdb.tgz / home/backups/userdb-$(date +%Y%m%d-%H%M%S).tgz # exécuter le script dbbackup.sh sur le serveur 2 /usr/bin / chut [email protégé]"/home/backup_agent/dbbackup.sh" # utilisez scp pour copier transdb.tgz sur le serveur de stockage externe. /usr/bin/scp [email protégé]:/home/backup_agent/transdb.tgz / home/backups/transdb-$(date +%Y%m%d-%H%M%S).tgz

Le script backup_remote_servers.sh utilise ssh pour exécuter des scripts à distance sur les serveurs. Puisque l'accès que nous fournissons ne nécessite pas de mot de passe, le programme ssh peut exécuter à distance des commandes sur les serveurs 1 et 2 depuis le serveur de stockage externe. Grâce au trousseau, le processus d'authentification est entièrement automatique.

Planification des tâches

Notre prochaine et dernière tâche consiste à planifier l'exécution du script backup_remote_servers.sh sur le serveur de stockage externe. Pour ce faire, nous ajouterons deux nouvelles entrées au fichier de configuration du planificateur cron, selon lesquelles le script de sauvegarde sera lancé deux fois par jour - à 3h34 et à 20h34. Pour ajouter des entrées, exécutez crontab sur le serveur de stockage externe avec l'option -e.

:$ crontab -e

Le programme crontab lancera l'éditeur de texte par défaut spécifié dans les variables d'environnement VISUAL ou EDITOR. Entrez maintenant deux nouvelles entrées, puis enregistrez et fermez le fichier.

Listing 12. Entrées Crontab sur le serveur de stockage externe
34 3 * * * /home/backups/remote_db_backup.sh 34 20 * * * /home/backups/remote_db_backup.sh

Enregistrer fichier crontab se compose de deux parties principales : la spécification d'exécution et la commande à exécuter. La spécification d'exécution comprend les champs suivants :

Listing 13. Format d'entrée Crontab
+---- minute| +----- heure | | +------ jour | | | + ------ mois| | | | +---- jour de la semaine | | | | | +-- commande à exécuter | | | | | | 34 3 * * * /home/backups/remote_db_backup.sh

Vérification de la sauvegarde

Il est recommandé de vérifier régulièrement copies de sauvegarde pour garantir que le processus fonctionne correctement. L'automatisation des processus aide à se débarrasser des routines inutiles, mais elle ne peut pas remplacer une attitude consciencieuse envers les affaires. Si vos données méritent d'être sauvegardées, il est judicieux de procéder de temps en temps à des contrôles aléatoires sur la qualité de leur mise en œuvre.

Cela vaut peut-être la peine de créer une tâche cron pour vous rappeler de vérifier vos sauvegardes au moins une fois par mois. De plus, il serait judicieux de changer la bi-clé après un certain temps ; La tâche du planificateur cron peut également vous le rappeler.

Mesures supplémentaires de sécurité des informations

Pour augmenter le niveau de sécurité des informations, vous pouvez installer et configurer un système de détection d'intrusion (IDS), par exemple Snort, sur chaque serveur. Un système de détection d'intrusion est conçu pour vous alerter des tentatives en cours ou récentes de piratage d'un système. La présence d'un tel système permettra d'augmenter le niveau de sécurité de l'information grâce à l'utilisation de technologies telles que la signature numérique et le cryptage des copies de sauvegarde.

Les fichiers archivés peuvent être protégés à l'aide d'outils open source courants tels que GNU Privacy Guard (GnuPG), OpenSSL et ncrypt, mais ne sont pas recommandés sans la couche de protection supplémentaire fournie par un système de détection d'intrusion (voir les liens vers plus d'informations sur Snort). section).

Conclusion

L'article démontrait exécution à distance scripts sur les serveurs et copie automatique sécurisée des fichiers. J'espère que sa lecture vous a donné matière à réflexion sur la façon de protéger vos précieuses données à l'aide d'outils open source comme OpenSSH et Snort.

La possibilité de dommages accidentels à un système, même aussi fiable que Linux, existe toujours. En règle générale, la réinstallation du système d'exploitation prend beaucoup de temps et d'efforts. Pour éviter les ennuis cette sorte Vous devez utiliser la sauvegarde Ubuntu Linux.

Création d'une sauvegarde d'Ubuntu via Rsync

Aspects positifs de la création Sauvegarde Ubuntu précisément avec l'aide rsync est-ce que pour copier et restaurer le système, il n'est pas nécessaire d'installer des packages et des logiciels supplémentaires. Tout se fait à l'aide de la console. Mais ne vous laissez pas intimider par la console ! Dans notre cas, tout sera extrêmement simple et clair.

Quelques mots sur rsync :

Cette commande est un outil très puissant pour travailler avec des fichiers. Vous pouvez consulter la liste complète de ses capacités en écrivant dans la console homme rsync. Proposé méthode de sauvegarde Ubuntu via rsync est le plus simple et le plus facile à apprendre.

Sauvegarde Ubuntu à partir d'une expérience personnelle

Pour que tout soit extrêmement simple, je vais vous raconter comment cela se passe pour moi. sauvegarde du système. Mon disque dur est divisé en 5 partitions, dont 2 partitions sont réservées à Ubuntu - la partition système / et une section pour les informations utilisateur /maison. Je copie tout le contenu de la partition système / à la section utilisateurs dans dossier spécial /accueil/.sauvegarde. En cas de problème avec le système d'exploitation Ubuntu, je pars du LiveCD et je copie simplement la sauvegarde Ubuntu sur la partition système. Sur la base de cet exemple, la procédure de sauvegarde et de restauration d'Ubuntu Linux sera décrite ci-dessous.

Sauvegarder Ubuntu

Exécuter dans la console :
sudo rsync -aulv -x / /windows/FILES/.backup/
Comprenons maintenant la syntaxe de cette commande simple

  • sudo- obtenir les droits de superutilisateur root ;
  • rsync- exécutez la commande de sauvegarde et spécifiez les arguments supplémentaires -aulv et -x ;
  • / -partition à copier (partition système) ;
  • /windows/FILES/.backup/- l'endroit où les fichiers seront copiés (section utilisateurs).

J'ai délibérément mis un point au début du nom du répertoire pour qu'il soit invisible. Il a également indiqué que le propriétaire de l'annuaire est un superutilisateur et que lui seul y a accès, afin de ne pas y grimper à nouveau.

Restaurer Ubuntu via rsync

Disons que notre système a échoué et que nous avons besoin restaurer Ubuntu. Nous démarrons l'ordinateur en utilisant LiveCD avec Linux, ouvrez la console. Nous devons maintenant monter (connecter) la partition système et la partition utilisateur afin d'effectuer une récupération du système, et ici nous pouvons procéder de deux manières. La première méthode est basée sur les clics de souris et la seconde est basée sur le travail dans la console.

Méthode n°1

Ouverture gestionnaire de fichiers et nous voyons dans le coin gauche une liste des partitions du disque dur du PC. Nous les connectons en cliquant sur la souris, après quoi ils deviendront disponibles pour examen et leur point de montage sera situé dans le répertoire /médias/. Nous déterminons quelle partition est système et laquelle est utilisateur. L'inconvénient de cette méthode est que les partitions recevront une adresse de point de montage complexe comme /médias/2F45115E1265048F. On se souvient de l'adresse du point de montage des partitions système et utilisateur. Passons maintenant à la récupération directe, en sautant la section « Méthode n°2 ».

Méthode n°2

Pour les utilisateurs plus avancés. L'avantage est que nous attribuerons nous-mêmes un nom aux points de montage et pouvons ainsi nous passer d'adresses encombrantes.
1. Affichez une liste des partitions du disque dur :
sudo fdisk -l
cette commande nous montrera une liste complète des partitions disponibles dans le système. Par exemple, j'ai cette photo.
Chargement du périphérique Début Fin Blocs Système d'identification
/dev/sda1 771120 27342629 13285755 83Linux
/dev/sda2
27342630 822190634 397424002+ 83Linux
/dev/sda3 * 822190635 883639259 30724312+ 7HPFS/NTFS/exFAT
/dev/sda4 883639260 976768064 46564402+ 5 Avancé
/dev/sda5 883639323 976768064 46564371 7 HPFS/NTFS/exFAT

Dans la colonne "Système", il est facile de voir que Système de fichiers Linux situé sur les sections :

  1. développement/sda1
  2. développement/sda2

2. Montez les partitions Linux avec la commande mount. Pour ce faire, créez d'abord un point de montage pour chaque partition :
sudo mkdir /media/1
sudo mkdir /media/2
Nous utilisons mount pour monter des partitions :
sudo mount dev/sda1 /media/1
sudo mount dev/sda2 /media/2
3. Déterminez quelle partition est la partition système et quelle partition est le dossier utilisateur. Nous pouvons soit simplement parcourir le gestionnaire de fichiers jusqu'aux répertoires montés et voir lequel d'entre eux est celui du système. Ou, nous utilisons la commande ls (affiche une liste de fichiers à l'adresse donnée) :
ls /média/1
ls /média/2
Si tu ne l'es pas aussi utilisateur avancé- Je vais vous dire que la partition système Linux aura généralement les dossiers suivants : bin, boot, dev, etc, mnt, etc.
Disons que nous avons établi que La partition système est maintenant montée sur /media/1 .

Récupération directe

1. Copiez les fichiers de la sauvegarde. Nous utilisons la même commande :
sudo rsync -aulv -x /media/2/.backup/ /media/1/

en utilisant plutôt la méthode graphique n°1 /médias/1/ Et /médias/2/ vous aurez différents points de montage !

2. Démontez les partitions une fois la copie terminée :
sudo umount /media/1
sudo umount /media/2
Redémarrez l'ordinateur et profitez d'Ubuntu restauré à partir de la sauvegarde.

Date de modification : dimanche 24 mars 2019

Linux est un système stable et fiable. Cependant, dans tout système informatique, des événements inattendus peuvent survenir, comme une panne matérielle. Par conséquent, comme dans tout système, une sauvegarde des informations et données de configuration importantes est nécessaire.

Il existe de nombreuses approches pour créer des sauvegardes sous Linux. Celles-ci vont des simples méthodes basées sur des scripts aux produits commerciaux complexes.

La question de savoir exactement ce que vous devez copier et de quelle manière dépend de vous, en fonction de la raison et des objectifs.

Puisque l'idée de base du concept Linux est « tout est un fichier », le processus de copie et de sauvegarde consiste en fait à archiver et à décompresser des fichiers.

Voici quelques répertoires qu’il est judicieux de copier :

  • /etc
    Contient tous vos fichiers de configuration clés. Ceux-ci incluent les paramètres réseau, le nom du système, les règles de pare-feu, les utilisateurs, les groupes et d'autres éléments du système.
  • /var
    Contient des informations utilisées par les démons (services) de votre système, notamment Paramètres DNS, baux DHCP, fichiers tampon de messagerie, fichiers de serveur HTTP, configurations DB2 et autres.
  • /maison
    Contient les répertoires personnels par défaut de tous vos utilisateurs. Stocke des données sur les paramètres personnels, les fichiers téléchargés et d'autres informations précieuses pour vos utilisateurs.
  • /racine
    Répertoire personnel de l'utilisateur root.
  • /opter
    Catalogue de logiciels non système. Le logiciel IBM est installé ici. , les JDK et autres logiciels sont également installés dans ce répertoire par défaut

Vous trouverez ci-dessous les répertoires qui n'ont pas besoin d'être sauvegardés.

  • /proc
    Ne sauvegardez jamais ce répertoire. Il ne contient pas de fichiers réels, mais seulement une image virtuelle du noyau et de l'environnement de travail. Il contient des fichiers tels que /proc/kcore, une image virtuelle de toute la mémoire utilisée. Copier ce répertoire n'est qu'un gaspillage de ressources.
  • /dév
    Contient une représentation de fichier de vos périphériques matériels. Vous pouvez sauvegarder le répertoire /dev si vous envisagez de démarrer la récupération à partir d'un système nu. Cependant, si vous prévoyez une récupération avec Linux déjà installé, il n'est pas nécessaire de copier /dev.

D'autres répertoires contiennent des fichiers système et des packages logiciels installés. Dans le cas d'un serveur, la plupart de ces informations restent inchangées. La plupart des changements se produisent dans les répertoires /etc et /home. Mais pour être complet, vous pouvez également les copier.

Outils de sauvegarde

Puisque la sauvegarde sous Linux consiste principalement à compresser et décompresser des fichiers. Cela vous permet d'utiliser les utilitaires système existants et d'écrire des scripts pour effectuer des sauvegardes sans acheter de logiciel commercial. Dans la plupart des cas, une telle copie de sauvegarde est suffisante, ce qui donne à l'administrateur amplement la possibilité de contrôler la situation. L'exécution d'un script de sauvegarde peut être automatisée à l'aide de la commande cron, qui sous Linux gère l'exécution des événements planifiés.

tar est une commande Unix classique qui a été portée sous Linux. tar est l'abréviation de Tape Archive et était à l'origine destiné à l'archivage de fichiers sur bande magnétique. Si vous avez téléchargé du code Linux, vous avez probablement déjà rencontré des fichiers tar. Il s'agit d'une commande de fichier qui relie séquentiellement les fichiers dans une chaîne continue.

Étant donné que la commande tar peut archiver des arborescences de répertoires entières, elle est particulièrement adaptée à la création de sauvegardes. La restauration peut être effectuée pour des archives entières ou pour des fichiers et répertoires individuels. Les sauvegardes peuvent être localisées sur des périphériques de fichiers ou sur une bande magnétique. Une fois restaurés, les fichiers peuvent être redirigés et placés dans un répertoire (ou système) différent de celui à partir duquel ils ont été enregistrés. La commande tar est indépendante du système de fichiers. Il peut être utilisé sur les systèmes de fichiers ext2, ext3, jfs, Reiser, etc.

La commande tar est très similaire à la commande file. programme utilitaire, tel que PKZip. Vous lui donnez un objet source, qui peut être un fichier ou un périphérique, puis vous listez les fichiers que vous souhaitez compresser. En cours de route, vous pouvez compresser l'archive en utilisant types standards compression, ou utilisez un programme de compression externe à ces fins, de votre choix. Utilisez tar -j pour compresser ou extraire des fichiers d'une archive à l'aide de l'utilitaire bzip2, ou tar -j pour compresser ou extraire des fichiers d'une archive à l'aide de l'utilitaire gzip.

Pour utiliser tar pour sauvegarder l'intégralité du système, à l'exception du répertoire /proc, sur un périphérique de bande SCSI, entrez :

tar -cpf /dev/st0 / --exclude=/proc

Dans l'exemple ci-dessus, le commutateur -c indique qu'une archive est en cours de création. Le commutateur -p est nécessaire pour conserver les autorisations sur les fichiers, ce qui est une condition nécessaire pour une bonne sauvegarde. Le commutateur -f spécifie le nom de fichier de l'archive. Dans ce cas, nous utilisons le lecteur de bande /dev/st0. Le caractère / spécifie exactement ce que nous voulons copier. Puisque dans notre cas il s'agit de l'intégralité du système de fichiers, le répertoire racine est spécifié. Lorsqu'il fait référence à un répertoire (terminé par un /), tar parcourt automatiquement tous les sous-répertoires de manière récursive. Enfin, nous excluons le répertoire /proc car il ne contient rien de valeur pour nous. Si la copie de sauvegarde ne tient pas sur une seule bande magnétique, nous ajouterons le commutateur -M (non illustré ici) - une indication d'une archive multivolume.

Pour restaurer un ou plusieurs fichiers, la commande tar est utilisée avec le commutateur extract (-x) :

tar -xpf /dev/st0 -C /

Le commutateur -f fait à nouveau référence à notre fichier et -p indique que nous souhaitons restaurer les données archivées tout en conservant les droits d'accès. Le commutateur -x indique la restauration à partir d'une archive. Le commutateur -C/indique que la restauration doit être effectuée vers le répertoire racine. La commande tar, par défaut, restaure l'archive dans le répertoire à partir duquel elle a été lancée. Le commutateur -C interdit la restauration vers le répertoire actuel.

Deux autres commandes tar que vous utiliserez probablement fréquemment sont les options -t et -d. Le commutateur -t affiche le contenu de l'archive. Le commutateur -d compare le contenu de l'archive avec les fichiers actuels sur le système.

Pour faciliter le travail et l'édition, vous pouvez écrire les fichiers et répertoires dans lesquels vous souhaitez archiver fichier texte, qui peut être référencé à l’aide du commutateur -T. Ils peuvent être combinés avec d'autres répertoires spécifiés sur la ligne de commande. L'exemple suivant sauvegarde tous les fichiers et répertoires inclus dans le fichier MyFiles, le répertoire /root et tous les fichiers de extension ISOà partir du répertoire /tmp.

tar -cpf /dev/st0 -T MesFichiers /root /tmp/*.iso

Une liste de fichiers est un simple fichier texte contenant des fichiers et des répertoires dans une liste. Voici un exemple d'un tel fichier :

/etc
/var
/maison
/usr/local
/opter

Notez que la commande tar -T (ou files-from) n'accepte pas le modèle. Les noms de fichiers doivent être spécifiés exactement. L'exemple ci-dessus montre une manière de référencer des fichiers individuellement. Vous pouvez également exécuter un script qui recherchera le système et créera une liste. Voici un exemple d'un tel script :

#!/bin/sh
cat MesFichiers > ListeTemp
trouver /usr/share -iname *.png >> TempList
trouver /tmp -iname *.iso >> TempList
tar -cpzMf /dev/st0 -T ListeTemp

Le script ci-dessus copie l'intégralité liste existante fichiers de MyFiles vers TempList. Il exécute ensuite deux commandes find pour rechercher dans le système de fichiers les fichiers qui correspondent à une certaine condition et les ajoute à TempList. La première commande de recherche recherche dans le répertoire /usr/share tous les fichiers se terminant par .png. La deuxième commande de recherche recherche dans le répertoire /tmp tous les fichiers se terminant par .iso. Une fois la liste créée, exécutez la commande tar qui créera nouvelles archives(créer) sur le périphérique de fichiers /dev/st0 (le premier lecteur de bande SCSI), qui sera compressé au format gzip avec toutes les autorisations de fichiers préservées. Les archives seront divisées en plusieurs volumes. Les noms des fichiers à archiver seront extraits (Taken) du fichier TempList.

commandes de dump et de restauration

Équipe décharge remplit presque les mêmes fonctions que le goudron. Cependant, il est conçu pour fonctionner avec des systèmes de fichiers plutôt qu'avec des fichiers individuels. Citation du manuel décharge: "dump analyse les fichiers du système de fichiers ext2 et décide quels fichiers doivent être sauvegardés. Ces fichiers sont copiés sur le disque, la bande ou tout autre support de stockage spécifié pour leur conservation. Un dump plus grand que la taille du support de sortie est divisé en plusieurs volumes " Sur la plupart des supports, cette taille est déterminée par écriture jusqu'à ce que le support soit plein."

programme décharge complète le programme restaurer, utilisé pour restaurer les fichiers enregistrés à partir d'un dump.

La commande restaurer remplit la fonction opposée de la commande dump. Après avoir restauré l'intégralité du système de fichiers, vous pouvez restaurer des sauvegardes incrémentielles par-dessus. Les fichiers et répertoires uniques avec sous-répertoires peuvent être restaurés à partir d'une copie complète ou incrémentielle.

Le vidage et la restauration peuvent être exécutés sur le réseau, ce qui signifie que vous pouvez sauvegarder ou restaurer à partir de appareils distants. Les commandes de dump et de restauration fonctionnent avec les périphériques de bande et de fichiers et disposent d'un large éventail d'options. Cependant, ces commandes sont limitées aux systèmes de fichiers ext2 et ext3 uniquement. Si vous travaillez avec JFS, Reiser ou d'autres systèmes de fichiers, vous aurez besoin d'un autre utilitaire tel que tar.

Sauvegarde utiliser le vidage

En utilisant la commande dump, effectuer une sauvegarde est assez simple. La commande ci-dessous effectue une sauvegarde complète de Linux avec les systèmes de fichiers ext2 et ext3 sur un périphérique de bande SCSI :

dump 0f /dev/nst0 /boot
dump 0f /dev/nst0 /

Dans cet exemple, notre système utilise deux systèmes de fichiers. L'un pour le répertoire /boot et l'autre pour / est la configuration standard. Lors de la copie, chacun d’eux doit être référencé séparément. /dev/nst0 fait référence au premier périphérique de bande SCSI utilisé en mode sans rembobinage. Ce mode garantit que les volumes sur la bande se suivent parfaitement.

Une fonctionnalité intéressante de la commande dump est sa fonctionnalité intégrée permettant de créer une sauvegarde incrémentielle. Dans l'exemple ci-dessus, 0 indique le niveau 0, ou le niveau de base de la sauvegarde. Vous devez effectuer périodiquement cette sauvegarde à l’échelle du système pour couvrir l’intégralité du système. Pour modifier le niveau des sauvegardes ultérieures, vous pouvez utiliser d'autres nombres (1 à 9) au lieu de 0. Une sauvegarde de niveau 1 conservera tous les fichiers qui ont été modifiés depuis la création de la copie de niveau 0. Une copie de niveau 2 conservera tout ce qui a été modifié. été modifié à partir du moment où la copie de niveau 1 a été créée, et ainsi de suite. La même chose peut être faite avec la commande tar à l'aide d'un script, mais cela nécessite une personne écrire un scénario, disposait d'un mécanisme permettant de déterminer quand la dernière copie avait été effectuée. La commande dump possède son propre algorithme qui met à jour le fichier de mise à jour (/etc/dumpupdates) lors de l'exécution d'une sauvegarde. Le fichier de mise à jour est réinitialisé à son état d'origine chaque fois qu'une sauvegarde de niveau 0 se produit. Lors de la copie des niveaux suivants, des marques sont placées jusqu'au moment où la prochaine copie du niveau zéro a lieu. Si vous souhaitez copier sur des périphériques à bande, le dump sera automatiquement divisé en volumes

Pour restaurer les informations enregistrées à l'aide de la commande dump, utilisez la commande restaurer. Semblable à tar, la commande de restauration peut afficher le contenu d'une archive (-t) et comparer les archives avec les fichiers actuels (-C). Soyez prudent avec la commande de restauration lors de la restauration des données. Il existe deux approches différentes et pour obtenir des résultats prévisibles, vous devez choisir la bonne.

Recréer (-r)

N'oubliez pas que la commande dump est conçue pour fonctionner avec le système de fichiers plutôt qu'avec des fichiers individuels. Il existe donc deux manières différentes de récupérer des données. Pour recréer le système de fichiers, utilisez le commutateur -r. La récréation, de par sa conception, doit être effectuée sur un système de fichiers vide et restaurer son état enregistré. Avant de pouvoir commencer la recréation, vous devez avoir créé, formaté et monté votre système de fichiers. Ne recréez pas sur le système de fichiers qui contient les fichiers.

Voici un exemple de recréation complète à partir du dump effectué dans l'exemple ci-dessus.

restaurer -rf /dev/nst0

Cette commande doit être exécutée pour chaque système de fichiers nécessitant une récupération. La procédure peut être répétée, en ajoutant des sauvegardes incrémentielles si nécessaire.

Extraire (-x)

Si vous devez travailler avec des fichiers individuels plutôt qu'avec des systèmes de fichiers entiers, utilisez le commutateur -x pour les extraire. Par exemple, pour extraire un seul répertoire /etc d'une archive sur bande, exécutez la commande suivante :

restaurer -xf /dev/nst0 /etc

Récupération interactive (-i)

Une autre fonctionnalité incluse dans la commande de restauration est le mode dialogue. En exécutant la commande :

restaurer -if /dev/nst0

vous serez redirigé vers un shell interactif qui affichera les éléments contenus dans l'archive. En tapant « aide », vous verrez une liste de commandes. Vous pouvez ensuite parcourir et sélectionner les éléments que vous souhaitez extraire. Gardez à l'esprit que tous les fichiers que vous extrayez seront placés dans votre répertoire actuel.

dump ou tar ?

Les commandes dump et tar ont leurs fans. Chacun a ses propres avantages et inconvénients. Si vous utilisez des systèmes de fichiers autres que ext2 ou ext3, dump ne vous convient pas. Cependant, sinon, la commande dump réduira l'utilisation de scripts au minimum et, en outre, facilitera le processus de récupération grâce à la présence d'un mode interactif.

Personnellement, je préfère utiliser la commande tar car j'aime écrire des scripts car ils offrent un haut niveau de contrôle. Il existe également des outils multiplateformes pour travailler avec des fichiers .tar.

Autres utilitaires

En principe, tout programme capable de copier des fichiers peut être utilisé pour effectuer un certain type de sauvegarde sous Linux. Certaines personnes utilisent les programmes cpio et dd pour créer des sauvegardes. cpio est un utilitaire d'archivage similaire à tar. C'est beaucoup moins courant. dd est un utilitaire de copie de système de fichiers qui crée des copies binaires d'un système de fichiers. L'utilitaire dd peut être utilisé pour créer une image d'un disque dur, dans l'esprit d'un logiciel tel que Symantec Ghost. Cependant, dd n'est pas un utilitaire de fichiers, vous ne pouvez donc restaurer que des données identiques. sections de dur disque.

Produits logiciels de sauvegarde commerciaux

Il existe plusieurs programmes de sauvegarde commerciaux conçus pour Linux. Les produits commerciaux fournissent généralement une interface et un système de reporting conviviaux, tandis qu'en utilisant les utilitaires dump et tar, vous devez vous passer de ces commodités. Programmes commerciaux offrent un large éventail de fonctions. Le plus grand avantage que les packages commerciaux peuvent offrir est de vous offrir une stratégie de sauvegarde intégrée et prête à l'emploi. Les développeurs de tels programmes ont déjà commis toutes les erreurs qu'il leur reste à commettre, et le prix de leur expérience est faible par rapport à la perte de données importantes.

Laisse ton commentaire!