====== Backup, récupération de données ======
===== Description =====
Ici nous allons voir tout ce dont on a besoin pour faire un backup d'un disque dur / d'une partition et pour récupérer des partitions effacées, un disque dur planté...
===== Les logiciels =====
Un des logiciels de base se nomme [[linux:dd_image_disque|dd et nous en parlons déjà ici]]
Un autre est [[http://www.cgsecurity.org/wiki/TestDisk_FR|TestDisk]] et [[http://www.cgsecurity.org/wiki/PhotoRec_FR|PhotoRec]]
**PhotoRec** et plus dédié à la récupération de photos/images qui auraient été effacé du disque ou de carte mémoire.
**TestDisk** en revanche possède un tas de fonctionnalités.
A tester **foremost**
**partclone** pour cloner une partition, un disque et le restaurer.
**parted** permet de gérer un disque en ligne de commande (comme peut le faire gparted qui a une interface graphique)
Pour afficher la table de partition d'un disque
parted /dev/sda print
**gdisk** est comme fdisk sauf qu'il supporte le GPT et permet de remettre dans l'ordre les numéros de partition, nommer les partitions etc.. et d'écrire tout ça dans la table GPT
gdisk /dev/sda
===== Les LiveCD / Live USB =====
[[http://www.sysresccd.org/Page_Principale|SystemRescueCD]] est un liveCD avec une interface graphique de type texte qui inclut une liste assez importante de logiciel de traitement de stockage (voir le détail sur leur site). Il inclut notemment TestDisk.\\
L'installation sur clé USB est possible mais nécessite un peu de travail.
[[http://clonezilla.org/|CloneZilla]] est un liveCD avec une interface graphique de type texte qui a l'avantage d'être en français et qui détaille précisement chaque action qu'il va faire et qu'il est en train de faire. Idéal pour cloner un disque dur ou une partition, pour faire un backup ou changer de disque dur trop vieux ou pas assez grand.\\
L'installation sur clé USB a été grandement simplifié grace au logiciel [[http://tuxboot.org/|TuxBoot]] créé par la même enseigne. Il suffit d'installer **TuxBoot** de choisir ce que l'on veut dans la liste, le téléchargement débute, on choisit notre clé usb et hop tout est automatique ;)
===== Cloner un disque ou une partition =====
Installer **partclone** en téléchargeant un .deb => http://sourceforge.net/projects/partclone/files/
dpkg -i nom_du_paquet.deb
**partclone** peut être disponible dans les dépôts, sur ma ubuntu 12.04, j'ai du rajouter la section universe à mes dépôts de base pour le trouver.
Sinon télécharger les sources, installer les paquets **build-essentiel,gawk,** pour avoir l'essentiel pour compiler.
Pour faire une image du disque dans un fichier si c'est du ntfs
partclone.ntfs -c -d -s /dev/sda -o /home/toto/image
Pour restaurer
partclone.ntfs -r -d -s /home/toto/image -o /dev/sda
Pour cloner de disque à disque depuis la source (-s) SDA vers la sortie (-o) SDB
partclone.ntfs -b -d -s /dev/sda -o /dev/sdb
Si il y a des messages d'ereur, on peut ajouter les options suivantes :
* ''-R, --rescue'' : continue même si il y a des erreurs de lectures
* ''-C, --no-check'' : ne vérifie pas la taille du disque et l'espace libre
* ''-I, --ignore_fschk'' : ignore la vérification du sytèmes de fichier
* ''--ignore_crc'' : ignore les erreurs de vérifications crc
* ''-F, --force'' : continue la progression quoi qu'il arrive.
exemple clonage
$ sudo partclone.btrfs -b -d -s /dev/sdc1 -o /dev/sdb
Partclone v0.2.51 http://partclone.org
Démarrage sauvegarde périphérique (/dev/sdc1) vers périphérique (/dev/sdb)
Reading Super Block
Calculating bitmap... Please wait... done!
Système de fichiers: BTRFS
Device size: 2,0 TB = 488378368 Blocks
Space in use: 903,6 GB = 220612892 Blocks
Free Space: 1,1 TB = 267765476 Blocks
Taille de bloc: 4096 octets
Elapsed: 12:46:49, Remaining: 00:00:00, Completed: 100.00%, Rate: 1,18GB/min,
current block: 488378368, total block: 488378368, Complete: 100.00%
Durée totale: 12:46:49, Débit moyen: 1,2GB/mn, 100.00% completed!
Syncing... OK!
Partclone a réussi à cloner le périphérique (/dev/sdc1) vers le périphérique (/dev/sdb)
Cloned successfully.
===== Cloner un disque défectueux =====
http://www.cgsecurity.org/wiki/Disque_Dur_Endommag%C3%A9
avec **ddrescue** en installant le paquet **gddrescue**
#récupérer en priorité le plus de zones mémoires saines:
ddrescue -B -n /dev/old_disk /dev/new_disk rescued.log
#puis essayez de récupérer le plus de zones mémoires endommagées possible:
ddrescue -B -r 1 /dev/old_disk /dev/new_disk rescued.log
Suivant les besoins et dans le cas ou ddrescue n'y arrive pas, vous pouvez retrouver des commandes/exemples intéressant sur la doc officiel => https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html
===== Cloner un serveur à chaud sur une autre machine =====
Pour ça, on va se renseigner sur le serveur à cloner avec les commandes
cat /etc/*release
cat /etc/*version
uname -a
Partitionner votre VM qui va recevoir le contenu du serveur à cloner avec gparted
Lancer un linux en live sur la VM et monter le disque
mkdir /mnt/root
mount /dev/sdaX /mnt/root
Transférer les données avec rsync
rsync -avPHX root@SOURCE_IP:/ /mnt/root/
N’oubliez pas les ‘/’ à la fin des chemins. -a pour conserver plusieurs attributs comme propriétaire et permissions, -H pour conserver d’éventuels liens en dûr, -X pour conserver les attributs étendus comme setuid. Vous pouvez également ajouter -A si vous utilisez des acls.
FIXME
===== Windows =====
Dans le cas ou vous avez récupérez despartitions windows mais qu'au démarrage vous avec l'erreur **0xc0000225**
Windows Boot Manager
Windows failed to start. A recent hardware or software change might be the cause. To fix the problem:
1. Insert your Windows installation disc and restart your computer.
2. Choose your language settings, and then click "Next."
3. Click "Repair your computer."
If you do not have this disc, contact your system administrator or computer manufacturer for assistance
Status: 0xc0000225
Info: An unexpected error has occured
La manip ici => https://neosmart.net/wiki/0xc0000225/
===== Récupérer des trucs dans la RAM =====
Copier la RAM dans un fichier
cat /proc/kcore > un-fichier
Extraire tout ce qui est chaine de caractère lisible
strings un-fichier
Rechercher toute information qui vous semblait perdu...
===== changer de disque dur en gardant l'ancien =====
J'ai voulu passer d'un disque dur classique à un disque dur ssd. J'ai donc copié les partitions via gparted avec la fonction copier/coller.\\
N'oubliez pas le flag boot sur la partition qui contient /boot
Maintenant je me retrouve avec des partitions qui ont le même uuid
$ blkid
/dev/sda1: UUID="60f056f7-271d-45be-a38e-35c53660257e" TYPE="swap"
/dev/sda3: UUID="1c50a7eb-b1df-4507-962c-e1e7a058c64e" TYPE="ext4"
/dev/sda4: UUID="79f83f9f-9851-40ee-9b8e-aac91072a868" TYPE="ext4"
/dev/sda5: UUID="9771a39e-6215-465a-b715-184d5030ee40" TYPE="swap"
/dev/sda6: UUID="b45dea21-d221-4335-bead-be450279dd8d" TYPE="ext4"
/dev/sdb1: UUID="b45dea21-d221-4335-bead-be450279dd8d" TYPE="ext4"
/dev/sdb2: UUID="1c50a7eb-b1df-4507-962c-e1e7a058c64e" TYPE="ext4"
/dev/sdb3: UUID="c7edfd04-1a76-4461-b52d-a3e665b01763" TYPE="swap"
/dev/sdb4: UUID="79f83f9f-9851-40ee-9b8e-aac91072a868" TYPE="ext4"
On peut les changer via la commande
sudo tune2fs /dev/sdb1 -U random
On peut aussi générer un uuid via la commande ''uuidgen''
Pour installer grub, nous allons monter le nouveau disque puis faire un chroot dedans afin d'y installer grub proprement\\
Dans mon cas, le /usr se trouvait sur une autre partition. Ne pas oublier de le monter.
sudo mkdir /mnt/disk
sudo mount /dev/sdb1 /mnt/disk/
sudo mount --bind /dev/ /mnt/disk/dev/
sudo mount -t proc none /mnt/disk/proc
sudo mount /dev/sdb2 /mnt/disk/usr/
sudo chroot /mnt/disk/ /bin/bash
grub-install /dev/sdb
===== clé usb =====
Commencons par faire une copie de la clé avec dd
repérez la clé usb avec lsblk
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 111,8G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 109,4G 0 part /
└─sda3 8:3 0 1,9G 0 part
└─cryptswap1 252:0 0 1,9G 0 crypt [SWAP]
sdb 8:16 1 7,5G 0 disk
ici /dev/sdb
dd if=/dev/sdb of=/tmp/usb.img
ensuite on monte l'image comme si c'était un périphérique
losetup --find --show /tmp/usb.img
/dev/loop0
Notre image sera attaché au périphérique /dev/loop0
Lancez testdisk
testdisk /dev/loop0
Essayez le type Intel et si il ne trouve pas de partition, essayer le 2eme, GPT ...
Si il trouve une partition, utilisez l'option write partition
testdisk va vous dire de redémarrer, pas la peine, faite juste les commandes
losetup -d /dev/loop0
losetup --find --show /tmp/usb.img
retournez dans testdisk,
* resélectionnez la partition
* appuyez sur P pour lister les fichiers
* appuyez sur a pour tout sélectionnez
* appuyez sur C pour tout copiez
* indiquez ou copier les fichiers
* puis appuyez sur C pour lancer la copie
Avec un peu de peau, vos fichiers sont récupérés