====== Script de sauvegarde générale d'un PC ====== ===== Fichiers scripts ===== {{:wiki:sauvegardegeneralepc_v2.tar.gz| sauvegardegeneralepc_v2.tar.gz}} Version : 1.0 du 5 juin 2010 Version : 2.0 du 12 juin 2010 * ajout possibilité de multiples exclusions de sous-répertoires (une seule exclusion auparavant). * factorisation de la liste des types de fichiers exclus, permettant un réglages. * prise en compte correcte de toutes les exclusions dans le calcul des occupations disques. * zone des réglages initiaux plus compréhensible * simplification du code ===== Ma stratégie de sauvegarde ===== Mes sauvegardes concernes les données, pas une "image disque totale" pour réaliser ensuite une ré-installation totale du PC. Lorsque j'ai décidé de sauvegarder régulièrement les données de mes PC, je me suis trouvé face à un problème de volume de donnée. Même mon disque dur du 500 Go aurait été rapidement plein si je me contentais de "tout copier". Il a fallut que je réfléchisse et que je fasse des choix. Voici mes choix. Certaines données ne sont pas importante pour moi, évoluent très peu dans le temps et je peu les retrouver si nécessaire. Il s'agit des films (pas mes vidéos personnelles), des musiques, des images de CD/DVD (format iso). J'ai donc décidé de stocker ces données dans un disque dur USB spécifique, sur lequel j'effectue des sauvegardes très irrégulièrement. Je réalise alors une simple copie sur le disque dur USB. Les données importantes sont sauvegarder très régulièrement avec le script décrit ici. Elle sont donc sauvegarder en visant la pérennité de celles-ci. Mais attention, comme les répertoires contenant les données importantes sont souvent au milieu d'autres répertoires, utilisés par les applications, il faut passer un peu de temps à analyser l'occupation du disque PC avec un logiciel (type xdiskusage sur Linux) afin de choisir quels répertoires système ou d'application sont à exclure. ===== Ce que fait le script ===== Réalise la sauvegarde des répertoires et partitions sélectionnés d'un PC, sur un disque dure USB externe, d'une façon entièrement automatique. Sauvegarde totale, pas incrémentale. Crée des archives (non compressés) en découpant celle-ci en fichiers de 2 Go maximum chacun, avec l'application 'dar' http://dar.linux.free.fr/ , http://fr.wikipedia.org/wiki/DAR (en français). Vérifie que l'espace libre sur le disque du PC permet la création des fichiers de 2 Go. Vérifie que le disque dure USB externe dispose de suffisamment d'espace libre pour la sauvegarde totale. Crée un répertoire de sauvegarde daté, sur le disque USB. Calcul un checksum sha1, http://fr.wikipedia.org/wiki/SHA-1, pour chaque fichier d'archive. Copie les fichiers archives et les checksum de fichiers sur le disque USB. Vérifie le checksum des fichiers une fois ceux-ci sur le disque USB (copie non corrompue). Supprime les fichiers d'archive du PC une fois réalisé la vérification. Effectue toutes ces opérations sur chaque fichier d'archive de 2 Go, au fur et à mesure, puis efface celui-ci du PC avant de créer le suivant. Pour réduire l'espace disque nécessaire sur le PC au fonctionnent du script. Crée un fichier des checksum de l'ensemble d'une archive pour une vérification manuelle total, si nécessaire. Crée un fichier de Log, équivalent à l'affichage sur la console, et copie celui-ci sur le disque USB. Copie les fichiers du script sur le disque USB. ===== Utilisation des sauvegardes ===== Desarchivage des sauvegardes globales ou fichier individuel avec l'application 'DarGUI' pour Linux, http://sourceforge.net/projects/dargui/. Il est possible d'utiliser 'dar' en ligne de commande mais je ne vois pas l'intérêt. ===== Mode d'emploi au quotidien ===== * Brancher le disque dure USB externe et vérifier qu'il est accessible. * Stopper les programmes en cours qui pourrais modifier les données à sauvegarder. * Ouvrir une console dans le répertoire du PC qui contient ce script. * Taper la commande ' ''sh SauvegardeGeneralePC.sh'' ' et faire Entrée. * Pendant la sauvegarde, ne pas faire fonctionner des programmes qui pourraient modifier les données à sauvegarder. ===== Commentaires et remarques ===== Au cours de la sauvegarde les fichiers d'archives sont créer dans le répertoire ou se trouve le script. Les fichiers iso (images de CD/DVD) ne sont pas archivées car je considère que ces données sont toujours téléchargeables. Ces exclusions sont réglables. La durée de sauvegarde est plus influencée par la puissance du processeur que le volume des données. Ceci en raison de la création des archives et des calculs des cheksum sha1. 65 Go de sauvegarde prennent 2h30 sur mon AMD Athlon64 et environ 7h00 sur mon NetBook MSI. ===== Installation et paramétrage à faire la 1ère fois ===== Utiliser de préférence un éditeur de fichier type Gedit ou Kate. La coloration syntaxique de ces éditeurs facilitera les réglages. Vérifier que les requis ci-dessous sont respectés. Copier ce fichier et son sous-programme 'SauvegardeGeneralePc_SousProgr1.sh dans un répertoire du PC avec au moins 5 Go d'espace disque libre. Attention, le répertoire dans lequel est placé le script n'est pas sauvegardé, ne pas placer de données dans ce répertoire. Modifier l'arborescence de destination vers le disque USB externe. Voir '>>>>> REGLAGE INITIAL 1 <<<<<' dans le code. Cette arborescence doit correspondre à celle existante jusqu'au répertoire de destination sur le disque USB. Elle n'est pas crée par le script. Régler les partitions et répertoires à sauvegarder dans la fonction 'Partitions et répertoires de sauvegarde'. Voir '>>>>> REGLAGE INITIAL 2 <<<<<' dans le code. Régler éventuellement les types de fichiers qui seront excluent. Voir '>>>>> REGLAGE INITIAL 3 <<<<<' dans le code ci-dessous. Lancer le script jusqu'à la vérification de l'espaces disques disponibles et nécessaires. Ceci permet de vérifier l'arborescence des répertoires à sauvegarder. ===== Requis ===== * Paquet 'dar'. Pour vérifier sa présence, taper en console : "dar --help" * Paquet 'bc'. Programme à part, qui fournit un langage de calcul. Pour vérifier sa présence, taper en console : "bc --help" * 'sha1sum'. Il est souvent installé par defaut. Pour vérifier sa présence, taper en console : "sha1sum --help" * Le script de sous-programme 'SauvegardeGeneralePc_SousProgr1.sh' dans le même répertoire de le script principal. * 'DarGui' pour relire les archives en mode graphique, les extraires en totalité ou un seul fichier. ===== Principe de l'arborescence des sauvegardes sur le disque dure USB ===== Voici l'arborescence que j'utilise personnellement SAUVEGARDE (nom du disque dure USB) | --- AmdAthlon64 (un de mes PC) | --- Portable_1 (un de mes PC) | --- PowerNet (un de mes PC) | --- Netbook_MSI (le PC de ce script) <<<<< REGLAGE INITIAL 1 | --- Sauvg_2010-05-01 (création automatique) | --- Sauvg_2010-05-15 (création automatique) | --- Sauvg_2010-06-01 (création automatique) | --- Mandriva (partition Linux) <<<<< REGLAGE INITIAL 2 | | | --- papa (mon /home) <<<<< REGLAGE INITIAL 2 | | | --- thunderbird (mes courriels) <<<<< REGLAGE INITIAL 2 | --- WindowsXP (partition Windows) <<<<< REGLAGE INITIAL 2 | | | --- Bureau (le bureau) <<<<< REGLAGE INITIAL 2 | | | --- MesDocuments (mes documents) <<<<< REGLAGE INITIAL 2 | --- Disque (partition de partage Linux/Windows) <<<<< REGLAGE INITIAL 2 Pourquoi cette arborescence ? * j'ai plusieurs PC. * je sauvegarde tous mes PC sur un même disque dure USB externe. * je sauvegarde l'intégralité du PC à chaque fois. Ceci me permet * de facilement retrouver les sauvegardes par rapport aux dates. * de facilement effacer les plus anciennes sauvegarde (répertoire 'Sauvg_AAAA-MM-JJ') pour n'en conserver que 3. * si je souhaite placer une sauvegarde sur un site en ligne, je prend une sauvegarde à date. ===== Tests avec une clef USB au lieu d'un disque USB ===== Régler la fonction 'Partitions et répertoires de sauvegarde pour test sur une clef USB' avec un répertoire de destination vers une clef USB. Taper la commande ' ''sh SauvegardeGeneralePC.sh test'' '. Le mot 'test' est ajouté. ===== Les raisons de mes choix ===== Création d'archives au lieu de sauvegardes directes des fichiers : * Pas de soucis de copie sur le disque USB même avec des arborescences très complexes des partitions et répertoires. * La création d'archive de 2 Go réduit très fortement le nombre de fichier à copier. * Permet de calculer facilement des checksums car peu de fichiers. Calcul de checksum 'sha1': * Permet de vérifier que les archives ne sont pas corrompues au file du temps, avec un stockage de longue durée ou lors des copies d'un support à l'autre (disque dure, disque USB, etc..). Pourquoi ne pas compresser les archives ? : * Le plus grand volume de mes données sont des photos en jpg, qui sont donc déjà compressées. Inutile de les recompresser. * Les capacités/prix des disques dures USB externes d'aujourd'hui réduit fortement la nécessité de compression des données. * La compression de fichiers augmente énormément le temps pour créer l'archive, il faut donc le faire lorsque c'est vraiment nécessaire. ===== Pourquoi avoir réaliser ce script ... ===== ... malgré les nombreux logiciels de sauvegarde existants ? C'est principalement le calcul d'un checksum réalisé automatiquement sur chaque archive que je n'ai pas trouvé. Ce checksum me donne un moyen de vérifier que les archives ne sont pas corrompues dans le temps en raison d'une dégradation du support (disque dure ou autre) ou lors d'un transfert de fichier. Accessoirement l'application 'dar' permettant de déclencher des commandes entre chaque fichiers d'une archive (limité à 2 Go dans mon cas), permet de faire beaucoup de choses. Et enfin bien sur, le faite de réalise un script me permet de tout automatiser. Une fois les scripts de chaque PC et le disque dure USB réglés, je ne réfléchis plus au moment de faire la sauvegarde. Je lance le script et je part faire autre chose. Il y a tellement de vérification dans le script que je suis tranquille. Exemple : le script vérifie que l'espace disque USB peut recevoir la sauvegarde avant de faire quoi que se soit. Aucun risque d'un message du type "disque plein" après 3 heures. Ah, j'avais oublié : l'application graphique DarGui, à toujours bien fonctionné pour dés-archiver une archive complète de 15 Go décomposé en de multiples fichiers ou bien un unique fichier de cette archive. Je ne peut pas en dire autant des applications d'archivages basés sur 'tar', qui sont en standard sur les distributions Linux. DarGui permet aussi de créer les archives 'dar' bien entendue. ===== A faire ===== Pour une prochaine version : * Vérifier s'il y a plus de 3 (réglable) sauvegardes valide sur le disque USB. Si c'est le cas, effacer les plus anciennes. * exclure de base le répertoire locale, ce qui simplifie l'exclusion. * placer un test dans sous-progre pour qu'il ne fct qu'avec ce script. Si aucun paramètre n'est passé à la fonction : "if [ "$#" = 0 ]; then ..." * sauvegarder les fichiers et dossiers de configurations du /home ? * vérifier les requis au demarrage du script. * Créer une fonction 'interruption'. * En cas d'interruption, effacer le repertoire de sauvegarde si aucun archive n'a encore été crée. * Au lancement, vérifier la dernière sauvegarde (fichier log). Si interruption, information ? Action ? * ? Créer un répertoire temporaire pour la création temporaire des archives, afin d'éviter l'exclusion du répertoire 'dar_backups {{tag>linux averti sauvegarde}}