# Rsync : sauvegarder un dossier, miroir et synchronisation

**URL:** <https://www.debian-fr.org/t/rsync-sauvegarder-un-dossier-miroir-et-synchronisation/4954>\
**Category:** Trucs et Astuces\
**Created:** [Février 20, 2016, 3:11 UTC](https://www.debian-fr.org/t/rsync-sauvegarder-un-dossier-miroir-et-synchronisation/4954 "2016-02-20T15:11:53Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![usinagaz](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/u/ecae2f/32.png) [@usinagaz](https://www.debian-fr.org/u/usinagaz)\
**Post date:** [Février 20, 2016, 3:11 UTC](https://www.debian-fr.org/t/rsync-sauvegarder-un-dossier-miroir-et-synchronisation/4954/1 "2016-02-20T15:11:53Z")

</div>

Bonjour,  
je me suis penché sur le probleme que voici, posé par les fichiers de sauvegardes de certains éditeurs :

> [@](#):
>
> fran.b[/url]"]Juste une remarque (je n’ai pas lu tout le message), méfies toi de ces fichiers ~, un gag très classique consiste sur un serveur à essayer de lire les fichiers toto.php~ lorsqu’on a eu accès à une page toto.php. php~ n’étant pas connu d’apache comme une extension, il balance le fichier tel que ce qui permet à qui veut d’avoir le source php donc les mots de passes des bases MySQL parfois sinon beaucoup de renseignements qu’on souhaiterait gardés. Une bonne habitude est donc de ne jamais éditer un site sur place mais de travailler sur une copie et de synchroniser avec rsync par exemple.

J’ai utilisé en partie un tutoriel qui va trés bien en délaissant certains aspects, ou en ajoutant des choses qui me paraissaient utiles, pour moi, avec plus ou moins de bonheur \* : [[size=125]Mirroring with rsync[/size]](http://www.howtoforge.com/mirroring_with_rsync).

Si vous souhaitez synchroniser deux sites, donc votre site et votre site miroir, ce tutoriel m’a l’air trés bien, il est fait pour. En ce qui me concerne, je l’ai adapté à mon besoin:  
Mettre à jour le DocumentRoot de mon serveur apache à l’identique de mon espace de travail où je “conçois” (c’est un bien grand mot), les fichiers destinés au site, en évitant le fameux problème des fichiers d’extension ~.

Précisions préalables :  
Comme je travaille pour ainsi dire en local, je ne me réfère qu’à un seul nom de domaine : le mien, c’est [mondomaine.com](http://mondomaine.com). De plus, il ne sera pas utile par la suite d’avoir le serveur apache à l’écoute (peut-être parce que j’ai dans mon /etc/hosts : 192.168.x.x [mondomaine.com](http://mondomaine.com)., mais je suis pas sur de bien comprendre ça).  
C’est plus sympa de remplacer someuser par un nom plus suggestif.

Ce que j’ai fait (le titre seul signifie que je fais tel quel) :

1 Install rsync  
2 Create An Unprivileged User On [server1.example.com](http://server1.example.com)  
[Server1.example.com](http://Server1.example.com), c’est [mondomaine.com](http://mondomaine.com), à remplacer donc.  
3 Test rsync  
La commande `rsync -avz -e ssh someuser@server1.example.com:/var/www/ /var/www/` devient donc : `rsync -avz -e ssh someuser@mondomaine.com:/PathVers/EspaceDeTravail/ /PathVers/DocRootSiteWeb/`  
(/var/www sont les deux DocumentRoot des deux sites web distants, c’est dans mon cas à modifier). C’est important de finir le path par un /, sans cela, il se pourrait que EspaceDeTravail (lui-même et son contenu) soit copié dans DocRootSiteWeb, ce qui n’est pas le but (on cherche plutôt à synchroniser les contenus).  
4 Create The Keys On [mirror.example.com](http://mirror.example.com)  
[Mirror.example.com](http://Mirror.example.com), c’est encore [mondomaine.com](http://mondomaine.com) …  
5 Configure [server1.example.com](http://server1.example.com) … cf. ci-dessus.  
Le résultat mentionné `ssh-dss AAAAB3NzaC1kc3MAAA[...]lSUom root@mirror` sera : `ssh-dss AAAAB3NzaC1kc3MAAA[...]lSUom root@debian ` puisque ma machine s’appelle debian = localhost = 127.0.0.1.(dans /etc/hosts).  
Et le fichier /home/someuser/.ssh/authorized\_keys va pour finir contenir la ligne suivante :

```auto

```

Les commandes : `mkdir ~/rsync
nano ~/rsync/checkrsync`Suivant l’umask que vous avez par defaut, il se peut qu’il faille entre les deux insérer un petit chmod qui donne les droits en écriture pour someuser dans le fichier checkrsync, puis copiez y le code donné dans le tuto.  
6 Test rsync On '[mirror.example.com](http://mirror.example.com)’  
La commande `rsync -avz --delete --exclude= **/stats --exclude=** /error --exclude= **/files/pictures -e "ssh -i /root/rsync/mirror-rsync-key" someuser@server1.example.com:/var/www/ /var/www/` va donc être : `rsync -avz --delete --exclude=** /stats --exclude= **/error --exclude=** /files/pictures -e "ssh -i /root/rsync/mirror-rsync-key" someuser@mondomaine.com:/PathVers/EspaceDeTravail/ /PathVers/DocRootSiteWeb/`

Voilà , le paragraphe Create A Cron Job étant plus spécifique à la synchronisation de deux sites distants, c’est là que je bifurque. (je ne veux pas une mise à jour du repertoire lié alors que je ne travaille pas forcément dessus).  
Alors je préfère lancer cela à la main, en ligne de commande ou avec un lanceur sur le tableau de bord.

Préalables :   
Pour l’user qui travaille dans EspaceDeTravail, je vais faire un script de la commande de mise à jour parce qu’elle est un peu longue, en faire un alias, et ajouter cet alias à deux endroits :

- /etc/sudoers , pour lancer la commande avec sudo
- dans ~/.bash\_aliases, pour que la commande soit reconnue.

le script (rendu exécutable) :

[code]# echo ‘#!/bin/bash’ \>\> /.scripts/majweb.sh

# echo ‘rsync -avz --delete --exclude= **/stats --exclude=** /error --exclude=\*\*/files/pictures -e “ssh -i /root/rsync/mirror-rsync-key” [rsyncuser@mondomaine.com](mailto:rsyncuser@mondomaine.com):/PathVers/EspaceDeTravail/ /PathVers/DocRootSiteWeb/’ \>\> /.scripts/majweb.sh

# chmod 700 /.scripts/majweb.sh

[/code]dans un répertoire préalable /.scripts/ ici, où vous rangez vos scripts.  
le faire connaitre de la variable $PATH pour que la commande majweb soit reconnue :

[code]# cd /usr/local/bin

# ln -s /.scripts/majweb.sh majweb[/code]Je l’appelle majweb.

- Alias de cette commande dans .bash\_Aliases :

```auto

```

- Reste à présenter majweb à sudo en éditant # /etc/sudoers :

[quote]# Host alias specification  
Host\_Alias LOCALNET=localhost.localdomain

# User alias specification

User\_Alias ADMIN=votreUser

# Cmnd alias specification

Cmnd\_Alias MAJWEB=/usr/local/bin/majweb

# User privilege specification

root ALL=(ALL) ALL  
ADMIN LOCALNET=NOPASSWD:MAJWEB, … etc …  
[/quote]  
Un /etc/init.d/sudo restart ou sudo -v s’impose (de même, un source ~/.bash\_aliases aussi je crois, tout à l’heure).  
Attention : Prenez toutes les précautions possibles avant d’éxécuter la commande de mise à jour, car si votre  
/PathVers/EspaceDeTravail/ est vide, votre /PathVers/DocRootSiteWeb/ risque de le devenir aussi !! Donc, une sauvegarde de DocRootSiteWeb s’impose. C’est vite arrivé, en tentant plusieurs petit trucs.  
Ainsi : $ majweb va rendre à l’identique les deux répertoires, dans le sens /PathVers/EspaceDeTravail/ ---- \>\> /PathVers/DocRootSiteWeb/.  
Mais pour éviter de lancer la commande dans un terminal, on peut faire ça (sous gnome):

- Click DROIT sur le tableau de bord (c’est à l’endroit où vous clickerez que le lanceur sera placé).
- Ajouter au tableau de bord.
- Lanceur d’application personnalisé (première option normalement).
- Ajouter.
- Dans la boîte de dialogue qui s’ouvre, remplir les champs à votre convenance, sachant que :  
1/ le champ commande va comporter le nom de la commande, précédée de sudo si la commande nécessite les droits root (ce qui est notre cas). Curieusement, ce qui est exécuté à l’aide d’un lanceur ne tient pas compte de ~/.bash\_aliases, mais lit directement /usr/local/bin à la recherche du nom de la commande : donc --\> on met sudo devant.  
2/ on peut soit choisir un icone en cliquant sur icone, ce qui sous-entend qu’on a un /usr/share/pixmaps avec du choix dedans. (question: Où trouver de nouveaux icones à ajouter dans celui-ci ?).  
J’ai aussi choisi dans créer un tout bête, mais personnalisé, grace à gnome-iconedit.

Et zou 😛

\* Merci d’intervenir si vous voyez un problème, un oubli, une erreur, un trou carrément.

---

<div class="post-metadata">

**Author:** ![avision](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/a9a28c/32.png) [@avision](https://www.debian-fr.org/u/avision)\
**Post date:** [Février 20, 2016, 3:12 UTC](https://www.debian-fr.org/t/rsync-sauvegarder-un-dossier-miroir-et-synchronisation/4954/2 "2016-02-20T15:12:39Z")

</div>

Merci, il serait temps que je mette quelque chose de ce genre en place.  
Par contre je ne vois pas pourquoi tu fais a chaque fois référence aux paramètres de l’autre tuto, ca alourdit pour rien AMA.

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 20, 2016, 3:12 UTC](https://www.debian-fr.org/t/rsync-sauvegarder-un-dossier-miroir-et-synchronisation/4954/3 "2016-02-20T15:12:40Z")

</div>

J’ai retenu le memo

rsync -gouvptr

mais je ne sais plus à quoi correspondent ces options que je mets toujours (après étude il y a longtemps)

---

<div class="post-metadata">

**Author:** ![usinagaz](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/u/ecae2f/32.png) [@usinagaz](https://www.debian-fr.org/u/usinagaz)\
**Post date:** [Février 20, 2016, 3:12 UTC](https://www.debian-fr.org/t/rsync-sauvegarder-un-dossier-miroir-et-synchronisation/4954/4 "2016-02-20T15:12:46Z")

</div>

> [@avision](#):
>
> … Par contre je ne vois pas pourquoi tu fais a chaque fois référence aux paramètres de l’autre tuto, ca alourdit pour rien AMA.

C’est que je préfère qu’on se réfère plutôt au tutoriel que je cite qu’à ce que je raconte, et j’essayais d’y faire constamment référence pour ne pas désorienter … 😃😃 oui en fait, le tuto, c’est l’astuce, moi, ça serait plutôt le truc, tu vois 😃 …  
Par contre je prépare une petite astuce qui m’a mené à survolé php, perl, javascript, mysql, un peu plus poussé & sur le streaming, bien sympa… peut-être fini demain ![:smt069](https://www.debian-fr.org/uploads/default/original/1X/4e01c3cc095b20bab0402e64287d0d2ef1f307eb.gif)

@fran.b : disons que pour l’usage que j’en fait, je n’ai pas été plus loin avec rsync, mais je regarderai aussi, à l’occase.

---

<div class="post-metadata">

**Author:** ![cinderella](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/a698b9/32.png) [@cinderella](https://www.debian-fr.org/u/cinderella)\
**Post date:** [Février 20, 2016, 7:26 UTC](https://www.debian-fr.org/t/rsync-sauvegarder-un-dossier-miroir-et-synchronisation/4954/5 "2016-02-20T19:26:42Z")

</div>

c’est une bonne idée  
[dossier de surendettement](http://www.dossierdesurendettement.org)

---

<div class="post-metadata">

**Author:** ![spongebob123](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/22d042/32.png) [@spongebob123](https://www.debian-fr.org/u/spongebob123)\
**Post date:** [Février 20, 2016, 8:21 UTC](https://www.debian-fr.org/t/rsync-sauvegarder-un-dossier-miroir-et-synchronisation/4954/6 "2016-02-20T20:21:51Z")

</div>

je vous remercie pour l’affichage

[surendettement](http://dossierdesurendettement.org)

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 20, 2016, 8:21 UTC](https://www.debian-fr.org/t/rsync-sauvegarder-un-dossier-miroir-et-synchronisation/4954/7 "2016-02-20T20:21:52Z")

</div>

Fausse joie : j’ai vu une réponse à un fil de Usinagaz et je pensais qu’elle était de lui.  
Malheureusement, ce n’était qu’un déterrement d’un vieux fil.  
Dommage d’avoir “perdu” certains membres à cause de conneries, surtout politiques 😒

---

<div class="post-metadata">

**Author:** ![grigric](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grigric/32/3935_2.png) [@grigric](https://www.debian-fr.org/u/grigric)\
**Post date:** [Février 20, 2016, 8:21 UTC](https://www.debian-fr.org/t/rsync-sauvegarder-un-dossier-miroir-et-synchronisation/4954/8 "2016-02-20T20:21:53Z")

</div>

j’ai une petite question,

quand on ne met pas l’option -e ssh, cela marche quand même vers un serveur ssh (sans rsync svr), est ce conseillé de mettre cette option quand même ?
