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/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’
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
* Merci d’intervenir si vous voyez un problème, un oubli, une erreur, un trou carrément.