Outils pour utilisateurs

Outils du site


doc:formations:hebergement:serveur:sauvegarder

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
doc:formations:hebergement:serveur:sauvegarder [2020/07/07 13:30] jeremiedoc:formations:hebergement:serveur:sauvegarder [2023/11/23 20:31] (Version actuelle) – [rsync + hardlinks] jeremie
Ligne 78: Ligne 78:
 doit répondre ici ''root''. Bien sûr on peut faire des variantes. Mais si on se loggue sur un utilisateur autre que ''root'', ce qui est bien en terme de sécurité, alors il faudra que celui-ci aie des droit adéquats. doit répondre ici ''root''. Bien sûr on peut faire des variantes. Mais si on se loggue sur un utilisateur autre que ''root'', ce qui est bien en terme de sécurité, alors il faudra que celui-ci aie des droit adéquats.
  
-Si votre port SSH n'est pas le bon, vous pouvez spécifier ''ssh -p 221234 root@source.com''. Si vous utilisez ''scp'' le paramètre est donné ainsi ''scp -P 221234 root@source.com:nomdufichier dest''. Mais voyez plutôt [[doc:formations:hebergement:serveur:ssh#raccourcis_vers_ses_serveurs|comment simplifier ça]]!+Si votre port SSH n'est pas le standard 22, vous pouvez spécifier ''ssh -p 21234 root@source.com''. Si vous utilisez ''scp'' le paramètre est donné ainsi ''scp -P 21234 root@source.com:nomdufichier dest''. Mais voyez plutôt comment [[doc:formations:hebergement:serveur:ssh#ssh_client_config|simplifier]] cela avec un fichier ''.ssh/config''.
  
 ==== Archive de dossiers ==== ==== Archive de dossiers ====
Ligne 114: Ligne 114:
 Pensez à faire un ''chmod go-rwx mysql_remote.cnf''  afin de réduire la visibilité de ce fichier sensible! Pensez à faire un ''chmod go-rwx mysql_remote.cnf''  afin de réduire la visibilité de ce fichier sensible!
  
-Maintenant, pour "dumper" toutes les tables de la base de données distante:+Maintenant, pour "dumper" toutes les tables de la base de données distante (notez bien que le login se trouve sur la machine locale ici, transmis par ssh pour l'éxécution de la commande ssh sur le serveur à sauvegarder):
  
 <code> <code>
 cat mysql_remote.cnf | ssh $source "mysqldump --defaults-extra-file=/dev/stdin --all-databases --single-transaction --quick --lock-tables=false | gzip"> "mysql-$now.sql.gz" cat mysql_remote.cnf | ssh $source "mysqldump --defaults-extra-file=/dev/stdin --all-databases --single-transaction --quick --lock-tables=false | gzip"> "mysql-$now.sql.gz"
- 
 </code> </code>
  
-Si vous voulez écraser localement une base MySQL avec ce backup pour faire un miroir, le mot de passe vous sera demandé dans le shell avec cette commande:+Si vous voulez ensuite "écraserune base MySQL locale avec ce backup afin d'en faire un miroir, le mot de passe vous sera demandé dans le shell avec cette commande:
 <code> <code>
  
Ligne 204: Ligne 203:
 Note: sous windows, il existe un outil opensource et compatible avec rsync nommé [[http://www.aboutmyip.com/AboutMyXApp/DeltaCopy.jsp|DeltaCopy]]. Note: sous windows, il existe un outil opensource et compatible avec rsync nommé [[http://www.aboutmyip.com/AboutMyXApp/DeltaCopy.jsp|DeltaCopy]].
  
 +Note: [[https://linux.die.net/man/1/trickle|''trickle'']] est un tout petit utilitaire intéressant pour limiter la bande passante utilisée par une commande, par exemple ainsi: ''trickle -s -u 5 -d 15 rsync ...'' (limite les transferts montants à 5Ko/s et descendants à 15Ko/s).
 ==== rdiff: backup et miroir incrémental ==== ==== rdiff: backup et miroir incrémental ====
  
-Un outil encore plus performant, qui mélange miroir et versioning est ''rdiff'': il s'agit là d'un backup //incrémental//, c'est-à-dire qu'il conserve plusieurs versions d'un fichier (cf "time capsule" de MacOS, etc).+On parle de backup //incrémental// lorsque l'on conserve plusieurs versions historiques des fichiers, tout en évitant de les dupilquer (cf "time capsule" sur MacOS). C'est généralement essentiel car les simples //copies// ne suffisent paspuisqu'une erreur de manipulation à la source sera tot ou tard propagée vers ces miroirs.
  
-Pour ce dernier, on peut créer un script comme ci-dessous, puis l'appeler depuis une crontab (ci-après): +On veut donc avoir plusieurs sauvegardes d'une source mais à des dates différentes.
-<code>+
  
 +L'approche naive consisterait bien sur à dupliquer l'ensemble des données sources et à les faire tourner, mais il est possible de faire bien plus efficacement. On effectue un premier backup complet, que l'on complète par des copies partielles et de plus en plus vieilles ... mais qui ne contiennent //que les différences avec le précédent backup//. C'est donc beaucoup plus économe en espace disque (et en vitesse disque/réseau) que des sauvegardes complètes.
 +
 +=== rsync + hardlinks ===
 +
 +Le bel outil ''rsync'' couplé avec l'usage intelligent des liens matériels (hardlinks) permet déjà de créer manuellement des backups incrémentaux, [[https://www.admin-magazine.com/Articles/Using-rsync-for-Backups/(offset)/2|comme ici]].
 +
 +Ces backups se trouvent chacun dans leur dossiers respectifs, et ils restent accessibles exactement comme le dossier maître. C'est parfois très intéressant pour en donner l'accès direct aux utilisateurs à travers un réseau, un NAS ou un point de montage en lecture seule par exemple.
 +
 +=== rsnapshot ===
 +
 +[[https://rsnapshot.org/|rsnapshot]] est un script perl intéressant, qui se base lui-même sur ''rsync'' afin de simplifier son usage en tant que moyen de faire des backups incrémentaux.
 +=== rdff-backup ===
 +
 +Mais on va parler ici de ''rdiff-backup''. Il dffère de l'approche ''rsync+hardlinks'' par le fait que ces données sont stockées dans un format interne, qui n'est donc pas accessible directement. L'intérêt reste notable puisque la place exigée par les backups incrémentaux est souvent bien moins grande (''rdiff-backup'' ne stocke que les différence entre les fichiers, pas l'ensemble des fichiers qui diffèrent).
 +
 +
 +On peut créer un script comme ci-dessous, puis l'appeler depuis une crontab (ci-après):
 +
 +<code>
 rdiff-backup -v1 --print-statistics --max-file-size 10000000 /home/jeremie/ rdiff@serveur_de_backup.com:/home/rdiff/backup_rdiff rdiff-backup -v1 --print-statistics --max-file-size 10000000 /home/jeremie/ rdiff@serveur_de_backup.com:/home/rdiff/backup_rdiff
 rdiff-backup -v1 --force --remove-older-than 4W rdiff@serveur_de_backup.com:/home/rdiff/backup_rdiff rdiff-backup -v1 --force --remove-older-than 4W rdiff@serveur_de_backup.com:/home/rdiff/backup_rdiff
- 
 </code> </code>
  
-Et [[http://www.patrikdufresne.com/en/rdiffweb/|rdiff-web]] vous fera une interface web sur vos ces sauvegardes incrémentales, qui permettra d'accéder simplement aux versions précedents de vos fichiers+Bien sur, l'idée est de placer ces deux lignes dans un ''crontab'' par exemple pour qu'il soit éxécuté à intervalles réguliers. 
 + 
 +L'avantage de ''rdiff-backup'' est que [[http://www.patrikdufresne.com/en/rdiffweb/|rdiff-web]] vous permettra d'offir une interface web sur les sauvegardes incrémentales. Il devient très simple d'accéder simplement aux versions précedents de vos fichiers.
  
-Nb: pensez à créer un utilisateur dédié aux seules opérations de copie (ci-dessus c'est ''rdiff@serveur_de_backup.com''), et à le [[:doc:formations:hebergement:serveur:ssh#restriction_d_usage_d_un_compte|brider sur les opérations qu'il peut faire]]. On peut aussi passer par un utilisateur ''sudoer''  qui ne pourra lancer qu'un script dédié à la sauvegarde. Enfin, il peut etre aussi intéressant de mettre en place un [[https://www.oz4.us/2015/10/linux-restricted-tunneling-handling.html|tunnel SSH inverse]], etc.+Nb: pensez à créer un utilisateur dédié aux seules opérations de copie (ci-dessus c'est ''rdiff@serveur_de_backup.com''), et à le [[:doc:formations:hebergement:serveur:ssh#restriction_d_usage_d_un_compte|brider sur les opérations qu'il peut faire]]. On peut aussi passer par un utilisateur ''sudoer''  qui ne pourra lancer qu'un script dédié à la sauvegarde ([[doc:formations:hebergement:serveur:sauvegarder:exemple|exemple]] de script complet). Enfin, il peut etre aussi intéressant de mettre en place un [[https://www.oz4.us/2015/10/linux-restricted-tunneling-handling.html|tunnel SSH inverse]], etc.
  
 ====== Automatisation via cron ====== ====== Automatisation via cron ======
doc/formations/hebergement/serveur/sauvegarder.1594128632.txt.gz · Dernière modification : 2020/07/07 13:30 de jeremie