web-dev-qa-db-fra.com

Comment puis-je sauvegarder mon système complet (Ubuntu et Windows) sur mon disque dur externe en utilisant un logiciel ou des méthodes Ubuntu gratuits?

Pour éviter de devoir réinitialiser mes systèmes d'exploitation sur mon ordinateur portable Lenovo (80Q0001NUS) chaque fois qu'ils échouent, je dois être en mesure de sauvegarder complètement Ubuntu et Windows. J'espérais créer des fichiers tar.xz sur mon disque dur externe, mais je ne sais absolument pas quoi faire même après une recherche en ligne. Mon objectif avec mes sauvegardes est de pouvoir restaurer Ubuntu ou Windows exactement comme ils étaient quand ils ont été compressés et archivés. J'ai ces partitions:

Disques de stockage

SSD 128 Go

  • / dev/sda1: partition FAT32/boot/efi
  • / dev/sda2: partition primaire NTFS Windows 10
  • / dev/sda3: partition racine BTRFS Ubuntu
  • / dev/sda4: Partition d'échange

1 TB HDD

  • / dev/sdb1: Partition de stockage NTFS (Windows)
  • / dev/sdb2: Partition de stockage EXT4 (partagée)
  • / dev/sdb3: Partition de stockage BTRFS (Ubuntu)

4 TB HDD (lecteur de sauvegarde externe)

  • / dev/sdc1: partition NTFS
  • / dev/sdc2: partition EXT4
  • / dev/sdc3: partition BTRFS

J'espère sauvegarder/dev/sda1 et/dev/sdb1 (séparément si c'est la meilleure solution) vers/dev/sdc1,/dev/sdb2 vers/dev/sdc2 et/dev/sda3 et/dev/sdb3 vers/dev/sdc3. J'ai besoin que chacune de ces sauvegardes soit facilement organisable (comme des fichiers uniques que je peux utiliser pour restaurer chaque partition exactement comme ils l'étaient à partir du moment de la création de la sauvegarde). J'ai aussi besoin qu'ils soient fortement compressés, le cas échéant. Je ne veux pas sauvegarder les partitions complètes si possible. Je souhaite simplement restaurer les données écrites que je peux restaurer sur une configuration similaire de partitions et de lecteurs de stockage. Enfin, je dois pouvoir restaurer mon système avec eux, comme un LiveCD ou quelque chose de similaire, afin d'éviter toute perte de logiciels, de fichiers, etc. Je ne veux pas avoir à télécharger des fichiers et à configurer mon système d'exploitation à chaque fois. temps ils échouent. J'espère conserver toutes mes configurations, paramètres, fichiers et toute autre chose une fois la restauration terminée. S'il vous plaît laissez-moi savoir la meilleure façon de faire cela. Je vous remercie.

2
NAE

Je vais supposer que vous avez démarré avec un LiveUSB ou un LiveCD via mon explication et que vous avez besoin de root pour fondamentalement tout ce que je explique ici.

D'abord, de peur de m'expliquer ce qu'est "dd". L'abréviation signifie "disque" et permet de créer une image sur tout ce qui constitue un périphérique de blocage (c'est-à-dire des disques) de fichiers. Passons en revue les bases:

dd if=source-device of=target-device bs=blocksize count=numberofblocks
  • if Fichier d'entrée, c'est-à-dire d'où proviennent les données

  • of Fichier de sortie, ou les données sont dirigées vers

  • bs Block Size, c'est-à-dire la quantité de données que vous voulez "mettre en mémoire tampon" en mémoire. Si vous ne l'utilisez pas, il copie essentiellement directement d'un périphérique à un autre et sera tout simplement. Pour la plupart des opérations, spécifiez quelque chose. J'utilise habituellement quelque chose comme bs=1G. Bien sûr, vous devez disposer de 1 Go de RAM libre pour le faire.

  • count Combien de "blocs" (quantité définie par bs) que vous souhaitez déplacer. Dans le cas général, cela n'est pas nécessaire car vous voulez tous les blocs.

Maintenant, imaginez que vous avez un SSD de 128 Go, nommé/dev/sda, et que vous voulez "l’image" (c’est ainsi que l’opération est appelée), y compris tout ce qui est dessus. Tables de partition. Vous avez un disque de sauvegarde avec beaucoup d’espace sur/mnt/bigdisk. Pour créer une image de l'intégralité du disque, vous exécutez la commande suivante:

dd if=/dev/sda of=/mnt/bigdisk/backup-20160812.img bs=1G

Cela prendra un certain temps (mais vous n'avez pas vécu jusqu'à ce que vous le fassiez sur un disque de 4 To), et vous trouverez enfin un fichier de 128 Go nommé backup-20160812.img dans/mnt/bigdisk. dd ne donnera aucune sortie pendant cette période et vous remarquerez une grande dégradation des performances du système. Oh, et pour l'amour de tout ce qui est bon: assurez-vous que rien , pas une seule partition, n'est monté ou utilisé avec/dev/sda.

Une fois que vous avez le gros fichier, vous pouvez faire ce que vous voulez avec le vrai disque (enfin, sauf le détruire physiquement). Si vous voulez restaurer, vous faites:

dd if=/mnt/bigdisk/backup-20160812.img of=/dev/sda bs=1G

Ce sont des copies à la taille exacte, ce qui signifie:

  • La taille du gros fichier est exactement la taille du disque
  • Évidemment, vous ne pouvez pas restaurer sur un disque plus petit que cette taille.
  • Même si vous restaurez sur un disque plus gros, cela risque de ne pas fonctionner. Habituellement, il s’agit des partitions que vous souhaitez, suivies d’un énorme bloc d’espace libre. Vous aurez beaucoup de redimensionnement à faire et s'il s'agit d'un SSD, vérifiez l'alignement.
  • Si le disque source est défectueux, dd s’arrêtera en cas d’erreur. Si vous ne le souhaitez pas, vous devez spécifier des paramètres supplémentaires. Les pages de manuel sont évidemment votre ami.
  • Encore une fois, tout est imagé , même l’espace inutilisé . Si vous avez un disque de 100 Go et que vous n’en utilisez que 10%, votre fichier aura une taille de 100 Go et vous aurez perdu 90% de son temps à copier des blocs inutilisés.

Avec cette connaissance, dit la logique, vous pouvez utiliser dd pour sauvegarder une seule partition. Regardez la commande suivante et vous verrez pourquoi:

dd if=/dev/sda1 of=/mnt/bigdisk/backup-sda1-20160812.img bs=1G

La seule différence est d'utiliser/dev/sda1 à la place de /dev/sda (et j'ai utilisé un autre nom de fichier cible). Pourquoi? Parce que /dev/sda représente le disque complet et /dev/sda1 représente la première partition de ce disque. C'est ça ... Toutes les remarques sur le fait d'être une copie au niveau du bit persistent.

Le fichier généré dans dd peut être compressé et entraînera la création de fichiers plus petits. Vous pouvez le faire en utilisant des tuyaux. La commande image ressemblerait à ceci:

dd if=/dev/sda bs=1G | gzip > /mnt/bigdisk/backup-20160812.img.gz

La commande de restauration ressemble à ceci:

dd if=/mnt/bigdisk/backup-20160812.img.gz bs=1G | gunzip > /dev/sda

Quelques remarques générales pour la compréhension: Omettre le of enverra toutes les sorties à stdout. Ces données sont envoyées à gzip (ou gunzip) à l’aide du canal |. Comme gzip/gunzip n'a pas de fichier spécifié, ils utilisent ces données et les gzip. La sortie est envoyée à stdout, que nous envoyons ensuite dans un fichier en utilisant le symbole >.

Passons maintenant aux partitions NTFS. ntfsclone Il existe d’autres outils associés que vous voudrez peut-être examiner (ntfsresize, ntfsfix. Tapez ntfs sur la ligne de commande et complétez la tabulation). Au lieu de simplement copier tous les bits, ntfsclone copiera la structure et les données du système de fichiers (sauf indication contraire de votre part), et par conséquent, ignorez l'espace inutilisé Cela se traduit par le fait que les fichiers sont beaucoup plus petits et ne sont pas beaucoup plus gros que la taille de fichier "utilisée" de la partition ntfs. De trop la commande:

ntfsclone -s -o /mnt/bigdisk/backup-20160812-sda2.ntfsclone /dev/sda2

Pendant le travail, il donnera toutes sortes d’informations, ce qui est beaucoup plus rassurant que dd. Quoi qu'il en soit, qu'est-ce que tout cela signifie?

  • -s signifie que vous souhaitez enregistrer une image (et non pas copier un périphérique à la fois) - -o Où envoyer les données. Dans ce cas, un fichier. Si le fichier existe, il refusera de l'écraser.
  • La dernière option de la commande est la source, dans ce cas la partition deux de sda.

Ici pour la restauration:

ntfsclone -r -O /dev/sda2 /mnt/bigdisk/backup-20160812-sda2.ntfsclone

Encore une fois, des informations apaisantes et voici ce que signifient les options:

  • -r signifie restaurer à partir d'une image. C'est fondamentalement -s pendant pour la restauration.
  • -O est l'endroit où écrire les données. Dans ce cas, il s'agit d'une majuscule -O car il écrase le fichier. Cela est nécessaire car /dev/sda2 existe déjà et vous souhaitez l’écraser.
  • La dernière option, encore une fois, est la source des données. C'est évidemment le fichier que nous venons de créer avec la première commande.

La taille de ces images ne sont pas modifiables. Vous n'allez pas le restaurer sur un disque/une partition plus petit, même s'il s'adapte à la taille du fichier. Les structures du système de fichiers sauvegardées sont liées à la taille du disque. Ainsi, même si l'image que vous avez créée à partir d'une partition de 100 Go avec des données de 10 Go peut tenir sur une taille inférieure à 50 Go, elle ne fonctionnera pas. Vous pouvez restaurer une partition plus grande, mais là encore, les structures sont restées les mêmes. Vous devez donc utiliser ntfsresize pour pouvoir utiliser cet espace supplémentaire.

Passons à dump. Comme je l'ai mentionné dans mon commentaire, je ne l'ai pas utilisé depuis longtemps. Je ne fais que sauvegarder mes fichiers de données, car je sais que la réinstallation de Linux est pratiquement indolore, surtout si vous conservez/home sur une partition différente. Ce qui est écrit ici est fondamentalement ce que j'ai découvert en l'écrivant. Mes scripts de sauvegarde OpenBSD qui utilisent dump sont si anciens que je n’oserais pas dire que je sais toujours comment ils fonctionnent. Jeter.

dump -0 -f /mnt/bigdisk/backup-20160812-sda3.dump /dev/sda3

Encore une fois, qu'est-ce que cela signifie?

  • -0 est le niveau du dump. Ceci est très utile pour effectuer des sauvegardes incrémentielles, mais pour le moment, vous vous souviendrez qu'un vidage de niveau 0 signifie le système de fichiers complet.
  • -f Les données du dump sont envoyées au fichier spécifié, dans ce cas: /mnt/bigdisk/backup-20160812-sda3-level0.dump

Restaurer? Eh bien, vous devez savoir que vous ne pouvez restaurer que sur un système de fichiers propre et un système de fichiers monté. Vous devez donc d'abord vous assurer que la cible est formatée de manière propre et la monter:

mkfs.ext4 /dev/sda3
mount /dev/sda3 /mnt
cd /mnt
restore -r -f /mnt/bigdisk/backup-20160812-sda3-level0.dump
  • -r signifie restaurer
  • -f du fichier
  • La cible est le répertoire actuel, d'où le/mnt

Cela vous donnera probablement un avertissement comme restore: ./lost+found: File exists, car lost+found existe sur tout système de fichiers nouvellement créé.

Fait intéressant, compte tenu de la façon dont cela fonctionne, vous devriez pouvoir restaurer sur un disque plus petit, mais je n'ai pas essayé.

Maintenant que j'ai abordé "montage". Effectuer l'une de ces opérations ne doit pas être effectué sur des disques montés, à l'exception de la partie de restauration de dump.

Enfin, la sauvegarde du MBR et du TPG: Le MBR est simple et, pour être honnête, je préfère l’utiliser aussi longtemps que mes disques ne dépassent pas 2 To. Quoi qu'il en soit, le MBR est fondamentalement le bloc 0 sur votre disque, dont la première partie est le code de démarrage et la seconde partie est la table de partition. Les 446 premiers octets du premier secteur, les 66 suivants sont la partition. Ainsi, en extrayant uniquement le code de démarrage, cela ressemble à ceci:

dd if=/dev/sda of=/mnt/bigdisk/backup-20160812-bootcode.dd bs=446 count=1

Extraire le code de démarrage avec la table de partition ressemble à ceci:

dd if=/dev/sda of=/mnt/bigdisk/backup-20160812-mbr.dd bs=512 count=1

C'est ça. De toute évidence, vous ne pouvez les restaurer que sur exactement le même disque (ou sur un disque présentant exactement les mêmes caractéristiques).

Comme vous le voyez, le MBR est simple. GPT n'est pas et c'est une douleur. GPT est de longueur variable, et vous feriez mieux de le rechercher sur Google pour une meilleure compréhension. Je n'ai pas de disque GPT sur la machine que je teste, alors vérifiez tout. D'après ce que j'ai Google, l'outil à utiliser est gdisk. Hélas, cela semble être un outil interactif. C'est bien, mais nous voulons une ligne simple:

printf "b\\n/mnt/bigdisk/backup-20160812-gpt.gdisk\n" | gdisk /dev/sda

En gros, envoyez le texte:

b
/mnt/bigdisk/backup-20160812-gpt.gdisk

à l'application gdisk travail sur le périphérique /dev/sda. Le fichier /mnt/bigdisk/backup-20160812-gpt.gdisk devrait maintenant contenir une sauvegarde du GPT. La restauration devrait être quelque chose comme ça, mais je n'ai pas essayé, utilisez donc à vos risques et périls.

printf "b\\nr\\nl\\n/mnt/bigdisk/backup-20160812-gpt.gdisk" | gdisk /dev/sda

Cela devrait inclure le texte suivant dans le menu interactif de gdisk, pour passer en mode de récupération et restaurer à partir d'un fichier.

Si vous démarrez Googling GPT en conjonction avec dd, vous verrez de nombreuses personnes vous avertir de ne pas le faire en raison de l'uuid utilisé par GPT. Ceci est certainement vrai: vous aurez des problèmes si vous avez deux disques actifs dans le même système avec le même uuid. Sauf que bien sûr, ce n'est pas ce que vous faites ici. Vous ne disposerez jamais de deux uuids identiques dans le système si vous vous en tenez à la copie dans des fichiers (ce que font tous mes exemples)

Comme vous le voyez, il s’agit plutôt d’un gros bloc d’informations à digérer et je ne vais même pas me donner la peine de le relire pour des fautes d’orthographe, des fautes de frappe, etc. Si tout est trop, examinez Clonezilla . Cela pourrait être plus proche de ce dont vous avez réellement besoin. J'aurais peut-être même économisé beaucoup d'écriture si j'avais commencé par vous le dire.

3
jawtheshark