Rsync : sauvegarder un dossier, miroir et synchronisation

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

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].

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. 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., 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
Server1.example.com, c’est 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
Mirror.example.com, c’est encore mondomaine.com
5 Configure 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 :

Les commandes : mkdir ~/rsync nano ~/rsync/checkrsyncSuivant 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
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:/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 :
  • 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 :stuck_out_tongue:

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

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.

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)

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 … :smiley: :smiley: oui en fait, le tuto, c’est l’astuce, moi, ça serait plutôt le truc, tu vois :smiley:
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

@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.

c’est une bonne idée
dossier de surendettement

je vous remercie pour l’affichage

surendettement

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 :unamused:

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 ?