1
0
Bifurcation 0
miroir de https://github.com/PAPAMICA/Wiki-Tech.io.git synchronisé 2024-11-17 23:10:35 +01:00
Wiki-Tech.io/Linux/Avancé/Backup.md

318 lignes
8,8 Kio
Markdown
Brut Vue normale Historique

2021-05-09 11:23:34 +02:00
---
title: Backup
description: Faire ses sauvegardes sous Linux
published: true
2021-06-14 09:52:43 +02:00
date: 2021-06-14T07:52:39.774Z
2021-05-09 11:23:34 +02:00
tags:
editor: markdown
2021-06-14 09:44:04 +02:00
dateCreated: 2021-05-24T10:35:12.754Z
2021-05-09 11:23:34 +02:00
---
2021-06-14 09:47:27 +02:00
![Linux server backup and replication services | Dogsbody Technology](https://www.dogsbody.com/wp-content/uploads/Server-backup.png =35%x)
2021-05-09 11:23:34 +02:00
# Sauvegarder son poste
## Dossier à sauvegarder
## Timeshift
## rsync
2021-06-14 09:44:04 +02:00
# Sauvegarder le disque d’un serveur
2021-05-09 11:23:34 +02:00
Depuis plusieurs années j’utilise des VPS chez différents hébergeurs, certains ont des systèmes de backups intéressants, d’autres non. C’est pour cela que je me suis mis en quête d’un système de sauvegarde qui fonctionnerais à chaque fois.
## Prérequis :
- Un VPS avec un mode Rescue sous Debian
- Un serveur FTP
## Lancer la sauvegarde :
Redémarrez votre VPS sur le disque de rescue. (via le panel de votre hébergeur)
Connectez vous en root.
Identifier la partition (ou le disque) que vous aller sauvegarder avec :fdisk -l
Installer ftp et dcfldd :
2021-06-14 09:47:27 +02:00
```bash
2021-05-09 11:23:34 +02:00
apt install ftp dcfldd
```
Connectez vous à votre serveur FTP :
2021-06-14 09:47:27 +02:00
```bash
2021-05-09 11:23:34 +02:00
ftp <IP_DU_SERVEUR>
```
Entrez votre identifiant et votre mot de passe.
Rendez vous dans le dossier où vous souhaitez faire votre sauvegarde.
2021-06-14 09:44:04 +02:00
Lancer la sauvegarde avec la commande suivante :put « |dcfldd if=/dev/MA\_PARTITION bs=32k sizeprobe=if statusinterval=5 | gzip » MON\_IMAGE.gz
2021-05-09 11:23:34 +02:00
La sauvegarde est en cours, soyez patient !
## Restaurer la sauvegarde :
Redémarrez votre VPS sur le disque de rescue. (via le panel de votre hébergeur)
Connectez vous en root.
Identifier la partition (ou le disque) que vous aller restaurer avec :
2021-06-14 09:47:27 +02:00
```bash
2021-05-09 11:23:34 +02:00
fdisk -l
```
Installer ftp et dcfldd :
2021-06-14 09:47:27 +02:00
```bash
2021-05-09 11:23:34 +02:00
apt install ftp dcfldd
```
Connectez vous à votre serveur FTP :
2021-06-14 09:47:27 +02:00
```bash
2021-05-09 11:23:34 +02:00
ftp IP_DU_SERVEUR
```
Entrez votre identifiant et votre mot de passe.
Rendez vous dans le dossier où vous avez stocké votre sauvegarde.
Lancer la restauration avec la commande suivante :
2021-06-14 09:47:27 +02:00
```bash
2021-05-09 11:23:34 +02:00
get MON_IMAGE.gz "| gunzip | dcfldd of=/dev/MA_PARTITION sizeprobe=of statusinterval=5"
```
La restauration est en cours, soyez patient !
Redémarrer votre VPS sur le disque principal.
# Sauvegarder avec Tar
## Utilisation Standard
2021-05-09 11:29:48 +02:00
Pour sauvegarder son système on peut utiliser la commande `tar` avec les paramètres suivants :
2021-05-09 11:23:34 +02:00
2021-06-14 09:47:27 +02:00
```bash
2021-05-09 11:29:48 +02:00
tar cvpzf backup-$(date +%d-%m-%Y).tar.gz --exclude=/backup-$(date +%d-%m-%Y).tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys --exclude=/run --exclude=/media --exclude=/var/log --exclude=/usr/src/linux-headers\* --exclude=/home /
```
2021-06-14 09:52:43 +02:00
> Cette commande est à lancer à la racine.
{.is-warning}
2021-05-09 11:23:34 +02:00
2021-06-14 09:44:04 +02:00
Ce la va créer à la racine un fichier backup.tar.gz avec la date d’aujourd’hui tout en excluant les dossiers temporaires et inutiles pour la restauration.
2021-05-09 11:23:34 +02:00
2021-06-14 09:44:04 +02:00
> Vous pouvez ajouter autant de répertoires à exclure de la sauvegarde que vous voulez avec le paramètre `--exclude`. En revanche, dans tout les cas il est inutile de prendre`/proc`, `/tmp`, `/dev` ,`/sys` et `/run`
2021-06-14 09:52:43 +02:00
{.is-info}
2021-05-09 11:23:34 +02:00
## Avec Nohup
2021-06-14 09:44:04 +02:00
On peut aussi lancer la commander avec `nohup` pour éviter de perdre le processus une fois le terminal coupé (éviter l’envoi signal SIGHUP alias « *signal hang up* » qui clôture l’ensemble des processus enfants lancées par le terminal virtuel) :
2021-05-09 11:23:34 +02:00
2021-06-14 09:47:27 +02:00
```bash
2021-05-09 11:29:48 +02:00
nohup tar cvpzf backup-$(date +%d-%m-%Y).tar.gz --exclude=/backup-$(date +%d-%m-%Y).tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys --exclude=/run --exclude=/media --exclude=/var/log --exclude=/usr/src/linux-headers\* --exclude=/home --exclude=nohup.out / &
```
2021-05-09 11:23:34 +02:00
> Remarquez la présence `&` à la fin de la commande. Cela mets le processus en arrière plan (Que vous pouvez retrouver avec la commande `jobs`). 
2021-06-14 09:52:43 +02:00
{.is-info}
2021-05-09 11:23:34 +02:00
2021-06-14 09:44:04 +02:00
> Vous pouvez suivre l’avancée de la sauvegarde listant le contenu de **nohup.out** :`tail -f nohup.out`
2021-06-14 09:52:43 +02:00
{.is-info}
2021-05-09 11:25:08 +02:00
2021-06-14 09:52:43 +02:00
> Bien exclure le fichier **nohup.out** de la sauvegarde. Celui-ci est crée dans le répertoire où vous travaillez (En utilisant la variable **$PWD**).
{.is-warning}
2021-05-09 11:23:34 +02:00
# Sauvegarder avec Swiss Backup
# Sauvegarder un serveur avec Active Backup de Synology
## Présentation
2021-06-14 09:44:04 +02:00
## Configuration de la sauvegarde
# Sauvegarder avec BorgBackup
## Présentation 
Borg offre plusieurs avantages : 
- Déduplication
- Incrémental
- Différentiel
- Compression
- Chiffrement
Documentation : [https://borgbackup.readthedocs.io/en/stable/](https://borgbackup.readthedocs.io/en/stable/ )
## Configuration
###
Lexique : 
- Dépôt : espace de stockage contenant les archives
- Archive : un ou plusieurs dossiers/fichiers sauvegardés
- Chunk : Les fichiers sont coupés en bloc de taille fixe avec un hash unique
- srv-backup : Serveur de stockage hebergant les dépôts
- srv-app : Serveur à Sauvegarder
### Installation du paquet
2021-06-14 09:47:27 +02:00
```bash
apt install borgbackup
2021-06-14 09:44:04 +02:00
```
2021-06-14 09:47:27 +02:00
```bash
apt install borgbackup
2021-06-14 09:44:04 +02:00
```
### Configuration de srv-backup
2021-06-14 09:47:27 +02:00
```bash
adduser borg
mkdir ~/sauvegardes
2021-06-14 09:44:04 +02:00
```
### Setup SSH
2021-06-14 09:47:27 +02:00
```bash
ssh-keygen
ssh-copy-id borg@srv-backup
2021-06-14 09:44:04 +02:00
```
### Initialisation du dépôt
2021-06-14 09:47:27 +02:00
```bash
borg init -e keyfile borg@srv-backup:sauvegardes/srv-app
2021-06-14 09:44:04 +02:00
```
### Première sauvegarde
2021-06-14 09:47:27 +02:00
```bash
borg create borg@srv-backup:sauvegardes/srv-app::test /home
2021-06-14 09:44:04 +02:00
```
Vous pouvez ajouter des options, veuillez-vous référer à la documentation. Voici un exemple pour ajouter des informations pendant le transfert, choisir la compression lz4 et nommer l'archive avec la date du jour :
2021-06-14 09:47:27 +02:00
```bash
2021-06-14 09:44:04 +02:00
# https://borgbackup.readthedocs.io/en/stable/quickstart.html#backup-compression
# lz4 (super fast, low compression)
# zstd (wide range from high speed and low compression to high compression and lower speed)
# zlib (medium speed and compression)
# lzma (low speed, high compression)
2021-06-14 09:47:27 +02:00
borg create --progress --stats --compression lz4 borg@srv-backup:sauvegardes/srv-app::{now:%Y-%m-%d} /home
2021-06-14 09:44:04 +02:00
```
### Information sur le dépôt et les archives
Information sur la taille du dépôt :
2021-06-14 09:47:27 +02:00
```bash
borg info borg@srv-backup:sauvegardes/srv-app
2021-06-14 09:44:04 +02:00
```
Liste des archives du dépôt :
2021-06-14 09:47:27 +02:00
```bash
borg list borg@srv-backup:sauvegardes/srv-app
2021-06-14 09:44:04 +02:00
```
Information sur la taille de l'archive :
2021-06-14 09:47:27 +02:00
```bash
borg info borg@srv-backup:sauvegardes/srv-app::test
2021-06-14 09:44:04 +02:00
```
Liste des fichiers de l'archive :
2021-06-14 09:47:27 +02:00
```bash
borg list borg@srv-backup:sauvegardes/srv-app::test
2021-06-14 09:44:04 +02:00
```
On peut voir le gains de place avec la commande borg info grâce à la compression et la déduplication :
2021-06-14 09:47:27 +02:00
```bash
2021-06-14 09:44:04 +02:00
Original size Compressed size Deduplicated size
All archives: 1.01 GB 444.37 MB 432.50 MB
Unique chunks Total chunks
Chunk index: 43183 44850
```
### Emplacement de la Config et du Cache
2021-06-14 09:47:27 +02:00
```bash
2021-06-14 09:44:04 +02:00
~/.config/borg
~/.cache/borg
```
Le dossier cache peut prendre de la place, vous pouvez le déplacer puis créer un lien symbolique pour éviter de saturer le filesystem par défaut.
### Monter une archive
2021-06-14 09:47:27 +02:00
```bash
borg mount borg@srv-backup:sauvegardes/srv-app::test /mnt
2021-06-14 09:44:04 +02:00
```
### Supprimer une archive et un dépôt 
2021-06-14 09:47:27 +02:00
```bash
borg delete borg@srv-backup:sauvegardes/srv-app::test
2021-06-14 09:44:04 +02:00
```
2021-06-14 09:47:27 +02:00
```bash
borg delete borg@srv-backup:sauvegardes/srv-app
2021-06-14 09:44:04 +02:00
```
### Vérifier et Réparer
2021-06-14 09:47:27 +02:00
```bash
borg check -v --progress borg@srv-backup:sauvegardes/srv-app::test
2021-06-14 09:44:04 +02:00
```
2021-06-14 09:47:27 +02:00
```bash
borg check --repair borg@srv-backup:sauvegardes/srv-app::test
2021-06-14 09:44:04 +02:00
```
### Automatiser la sauvegarde
Voici un script d'exemple qui va sauvegarder /etc et /home puis faire une purge des archives :
2021-06-14 09:47:27 +02:00
```bash
2021-06-14 09:44:04 +02:00
#!/bin/bash
# Variables
set -e
export BORG_PASSPHRASE="`cat /path/passphrase`"
BORG_CLIENT=srv-app
BORG_REPO=borg@srv-backup:sauvegardes/${BORG_CLIENT}
BORG_LOG=/var/log/${BORG_CLIENT}.log
BORG_TARGET=(
/etc
/home
)
# Creation de l'archive
borg create --exclude-caches --exclude-from /path/exclude_list --compression zstd ${BORG_REPO}::{now:%Y-%m-%d} "${BORG_TARGET[@]}" >> ${BORG_LOG} 2>&1
# Nettoyage des anciens backups
# - une archive par jour les 7 derniers jours,
# - une archive par semaine pour les 4 dernières semaines,
# - une archive par mois pour les 12 derniers mois.
borg prune ${BORG_REPO} --keep-daily=7 --keep-weekly=4 --keep-monthly=12 >> ${BORG_LOG} 2>&1
```
Il ne reste qu'a ajouter ce script dans Cron pour effectuer la sauvegarde et la purge tous les jours.
### Remerciements et sources
- [https://sebsauvage.net/wiki/doku.php?id=borgbackup](https://sebsauvage.net/wiki/doku.php?id=borgbackup)
- [https://blog.karolak.fr/2017/05/05/monter-un-serveur-de-sauvegardes-avec-borgbackup/](https://blog.karolak.fr/2017/05/05/monter-un-serveur-de-sauvegardes-avec-borgbackup/)
- [https://blog.garamotte.net/posts/2018/01/11/fr-backup-and-restore-with-borg.html](https://blog.garamotte.net/posts/2018/01/11/fr-backup-and-restore-with-borg.html)
- [https://connect.ed-diamond.com/Linux-Pratique/LP-098/Ne-procrastinez-plus-vos-sauvegardes-grace-a-Borg3](https://connect.ed-diamond.com/Linux-Pratique/LP-098/Ne-procrastinez-plus-vos-sauvegardes-grace-a-Borg3)