Configurez Kodi IPTV m3u en moins de 2 minutes et regardez des chaînes illimitées

synchronisation

Configurer la synchronisation de fichiers Unison entre deux serveurs sur Debian 10 (Buster)

Vues : 9

synchronisation de fichiers entre deux serveurs Debian 10 avec Unison. Unison est un outil de synchronisation de fichiers similaire à rsync, la grande différence est qu’il suit / synchronise les changements dans les deux sens, c’est-à-dire que les fichiers modifiés sur le serveur1 seront répliqués sur le serveur2 et vice versa.

1 Note préliminaire

Dans ce tutoriel, j’utiliserai les deux serveurs Debian suivants:

  • server1.example.com avec l’adresse IP 192.168.0.100
  • server2.example.com avec l’adresse IP 192.168.0.101

Je souhaite synchroniser le répertoire / var / www entre les deux serveurs. Je vais exécuter Unison en tant qu’utilisateur root dans ce didacticiel afin que Unison dispose des autorisations suffisantes pour synchroniser les autorisations des utilisateurs et des groupes.

Toutes les commandes de ce didacticiel sont exécutées en tant qu’utilisateur root. Connectez-vous aux deux serveurs sur le shell en tant que root et commencez par l’étape 2 « Installation d’Unison ».

2 Installation d’Unison

serveur1 / serveur2:

Unison doit être installé sur le serveur1 et le serveur2 ; puisque nous nous connectons du serveur1 au serveur2 en utilisant SSH, nous avons également besoin des packages SSH et je vais installer l’éditeur nano pour l’édition de fichiers sur le shell. Ceci peut être réalisé comme suit:

apt-get -y install unison openssh-server ssh nano

3 Création d’une paire de clés privée / publique sur le serveur 1

serveur1:

Maintenant, nous créons une paire de clés privée / publique sur server1.example.com :

ssh-keygen -t dsa

root @ server1 : ~ # ssh-keygen -t dsa
Génération d’une paire de clés DSA publique / privée.
Entrez le fichier dans lequel enregistrer la clé (/root/.ssh/id_dsa):
 <- ENTER
Répertoire créé ‘/root/.ssh’.
Entrez la phrase de passe (vide pour aucune phrase de passe):
 <- ENTER
Entrez à nouveau la même phrase de passe:  <- ENTER
Votre identification a été enregistrée dans /root/.ssh/id_dsa.
Votre clé publique a été enregistrée dans /root/.ssh/id_dsa.pub.
L’empreinte digitale de la clé est:
ba: 82: e1: a1: 42: 9b: d4: c8: 99: c8: bd: 8b: 7d: 4d: d4: 66 root @ server1
L’image aléatoire de la clé est:
+ — [ DSA 1024] —- +
| |
| |
| . |
| . E |
| + *. S |
| .Ooo o |
| ooo +. + |
| oo = … o |
| .. oo .. |
+ —————– +
racine @ serveur1 : ~ #

Il est important que vous n’entriez pas de phrase de passe, sinon la mise en miroir ne fonctionnera pas sans interaction humaine, alors appuyez simplement sur ENTER !

Ensuite, nous copions notre clé publique sur server2.example.com :

ssh-copy-id -i $HOME/.ssh/id_dsa.pub root@192.168.0.101
ssh-copy-id -i $HOME/.ssh/id_dsa.pub root@192.168.0.101
The authenticity of host '192.168.1.102 (192.168.0.101)' can't be established.
ECDSA key fingerprint is 2b:3c:35:ad:3d:e2:fc:16:2f:55:5c:e1:2c:d7:3d:a9.
Are you sure you want to continue connecting (yes/no)? <-- yes (you will see this only if this is the first time you connect to server2)
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.0.101's password: <-- server2 root password
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.1.102'"
and check to make sure that only the key(s) you wanted were added.

Vérifiez maintenant sur le serveur2 si la clé publique du serveur1 a été correctement transférée:

serveur2:

cat $HOME/.ssh/authorized_keys
root@server2:/home/administrator# cat $HOME/.ssh/authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBAKHLdAztIr8muZIlQYuE/4f75kmgTwWqJRZJ1dTqHDnHWsy48emDU8v85hxAPg43k9aF7/zAwpA0MNNNk5T9Tx/DyUkK/KcyVP2f4p8tvovrkUvoxsZACkTUmFqKdq2x6/AGfjsCRmkpLhZuad7r5rKEXHRh8KYGHqD1Id8wcpy5AAAAFQCww3OekKcKMshMAwBK3XQmmYEGUwAAAIEAgjztlwh8OFYxwQve/RrhI2sceCXwS/yjQyH7q0zdWB9Fr4s/16T2PLBT+7M3vb+JlPDO3JRqgaYbel1kS2F2iKrY0EX0FI3/9fVDfWoz3mhCscPLriqy5AcsHitxQNfiZgA5wDiSjWpk1v+FbIC+VuqbKdQuE4MBKj19N9YALIUAAACABQ4NDsa2UBc8jsxvghjoLhUWF7HChaCksXQcL6i98VNRcemtPC6wpIri75iR4Uhv1666bDOBAdmIBX9Qf7A/+czPKPaj4CGI1hVy1pgYMa3btnEvoSnH/ONtjpOz9q+3up1OOOn+5fud7xjJn+Fq8WoGROgarBpCbQU3w2GUUnM= root@server1

4 Exécuter Unison

serveur1:

Nous pouvons maintenant exécuter Unison pour la première fois pour synchroniser le   répertoire / var / www sur les deux serveurs. Sur serveur1 exécuter:

unison /var/www ssh://192.168.0.101//var/www

La sortie sera similaire à celle-ci – vous devrez peut-être répondre à quelques questions car c’est la première fois que Unison est exécuté:

root@server1:/var/www# unison /var/www ssh://192.168.0.101//var/www
Contacting server...
Connected [//server1//var/www -> //server2//var/www]
Looking for changes
Warning: No archive files were found for these roots, whose canonical names are:
/var/www
//server2//var/www
This can happen either
because this is the first time you have synchronized these roots,
or because you have upgraded Unison to a new version with a different
archive format.
Update detection may take a while on this run if the replicas are
large.
Unison will assume that the 'last synchronized state' of both replicas
was completely empty. This means that any files that are different
will be reported as conflicts, and any files that exist only on one
replica will be judged as new and propagated to the other replica.
If the two replicas are identical, then no changes will be reported.
If you see this message repeatedly, it may be because one of your machines
is getting its address from DHCP, which is causing its host name to change
between synchronizations. See the documentation for the UNISONLOCALHOSTNAME
environment variable for advice on how to correct this.
Donations to the Unison project are gratefully accepted:
http://www.cis.upenn.edu/~bcpierce/unison
Press return to continue.[<spc>] <-- Press Enter
Waiting for changes from server
Reconciling changes
local server2
dir ----> example.com [f] <-- Press Enter
dir ----> example.de [f] <-- Press Enter
Proceed with propagating updates? [] <-- Enter "y"
Propagating updates

UNISON 2.48.4 started propagating changes at 13:24:01.10 on 05 May 2020
[BGN] Copying example.com from /var/www to //server2//var/www
[BGN] Copying example.de from /var/www to //server2//var/www
Shortcut: copied /var/www/example.de/web/index.html from local file /var/www/.unison.example.com.d3783bddaaf59b9ba4d2ed0433f9db63.unison.tmp/web/index.html
[END] Copying example.de
[END] Copying example.com
UNISON 2.48.4 finished propagating changes at 13:24:01.98 on 05 May 2020

Saving synchronizer state
Synchronization complete at 13:24:01 (2 items transferred, 0 skipped, 0 failed)

Vérifiez le répertoire / var / www sur serveur1 et serveur2 maintenant, et vous devriez constater qu’ils sont maintenant synchronisés.

Bien sûr, nous ne voulons pas exécuter Unison de manière interactive, nous pouvons donc créer un fichier de préférences ( /root/.unison/default.prf ) qui contient tous les paramètres que nous aurions autrement à spécifier sur la ligne de commande:

nano /root/.unison/default.prf
# Racines de la synchronisation
racine = / var / www
root = ssh: //192.168.0.101//var/www

# Chemins à synchroniser
#path = courant
#path = commun
#path = .netscape / bookmarks.html

# Certaines expressions rationnelles spécifiant des noms et des chemins à ignorer
#ignore = Statistiques du chemin ## ignore / var / www / stats
#ignore = Statistiques du chemin / * ## ignore / var / www / stats / *
#ignore = Chemin * / stats ## ignore / var / www / somedir / stats, mais pas / var / www / a / b / c / stats
#ignore = Nom * stats ## ignore tous les fichiers / répertoires qui se terminent par "stats"
#ignore = Nom stats * ## ignore tous les fichiers / répertoires commençant par "stats"
#ignore = Nom * .tmp ## ignore tous les fichiers avec l'extension .tmp

# Lorsqu'il est défini sur true, cet indicateur fait sauter l'interface utilisateur
# demander des confirmations sur des modifications non conflictuelles. (Plus
# précisément, lorsque l'interface utilisateur a terminé de définir le
# direction de propagation pour une entrée et est sur le point de passer
# ensuite, il sautera toutes les entrées non conflictuelles et ira
# directement au prochain conflit.)
auto = vrai

# Lorsque ceci est défini sur true, l'interface utilisateur demandera non
# questions du tout. Les modifications non conflictuelles seront propagées;
# conflits seront ignorés.
batch = vrai

#! Lorsque ce paramètre est défini sur true, Unison demandera un supplément
# confirmation s'il apparaît que la réplique entière a été
# supprimé, avant de propager la modification. Si l'indicateur de lot est
# également défini, la synchronisation sera abandonnée. Quand le chemin
# préférence est utilisée, la même confirmation sera demandée pour
# chemins de niveau supérieur. (Pour le moment, ce drapeau n'affecte que le
# interface utilisateur textuelle.) Voir aussi la préférence de point de montage.
confirmbigdel = true

# Lorsque cette préférence est définie sur true, Unison utilisera le
# heure de modification et longueur d'un fichier en pseudo-inode
# number 'lors de l'analyse des répliques pour les mises à jour, au lieu de la lecture
# le contenu complet de chaque fichier. Sous Windows, cela peut provoquer
# Unison pour manquer de propager une mise à jour si l'heure de modification
Le # et la longueur du fichier sont tous deux inchangés par la mise à jour.
# Cependant, Unison n'écrasera jamais une telle mise à jour avec un
# changer par rapport à l'autre réplique, car il fait toujours un
# vérifier les mises à jour juste avant de propager un changement. Ainsi, c'est
# raisonnable d'utiliser ce commutateur sous Windows la plupart du temps
# et exécutez occasionnellement Unison une fois avec fastcheck défini sur false,
# si vous craignez qu'Unison ait oublié une mise à jour.
# La valeur par défaut de la préférence est auto, ce qui entraîne
# Unison pour utiliser la vérification rapide sur les répliques Unix (là où c'est sûr)
# et vérification lente sur les réplicas Windows. Pour en arrière
# compatibilité, oui, non et par défaut peuvent être utilisés à la place de
# true, false et auto. Consultez la section «Vérification rapide» pour en savoir plus
# information.
fastcheck = vrai

# Lorsque cet indicateur est défini sur true, les attributs de groupe du
# fichiers sont synchronisés. Que ce soit les noms de groupe ou le groupe
# identificateurs sont synchronisés en fonction des numéros de préférence.
groupe = vrai

# Lorsque cet indicateur est défini sur true, les attributs du propriétaire du
# fichiers sont synchronisés. Que ce soit le nom du propriétaire ou le propriétaire
# identificateurs sont synchronisés en fonction de la préférence
# extttnumerids.
propriétaire = vrai

# L'inclusion de la préférence -prefer root amène Unison à toujours
# résoudre les conflits en faveur de root, plutôt que de demander
# conseils de l'utilisateur. (La syntaxe de root est la même que pour
# la préférence racine, plus les valeurs spéciales plus récentes et plus anciennes.)
# Cette préférence est remplacée par la préférence preferpartial.
# Cette préférence ne doit être utilisée que si vous êtes sûr de savoir
# que fais tu!
prefer = plus récent

# Lorsque cette préférence est définie sur true, l'interface utilisateur textuelle
# n'imprimera rien du tout, sauf en cas d'erreur.
# La définition de silent sur true définit automatiquement la préférence de lot
# à vrai.
silencieux = vrai

# Lorsque cet indicateur est défini sur true, les heures de modification des fichiers (mais pas
# directory modtimes) sont propagés.
fois = vrai

Les commentaires doivent rendre le fichier auto-explicatif, sauf pour les directives de chemin . Si vous ne spécifiez aucune directive de chemin , les répertoires dans les directives racine seront synchronisés. Si vous spécifiez des directives de chemin , alors les chemins sont relatifs au chemin racine (par exemple root = / var / www et path = current se traduit par / var / www / current ), et seuls ces sous-répertoires seront synchronisés, pas le répertoire entier spécifié dans la directive racine .

Pour en savoir plus sur les options disponibles, consultez la page de manuel Unison:

man unison

Maintenant que nous avons mis tous les paramètres dans un fichier de préférences (en particulier les directives root (et éventuellement le chemin )), nous pouvons exécuter Unison sans aucun argument:

unison

5 Création d’un travail Cron pour Unison

serveur1:

Nous voulons automatiser la synchronisation, c’est pourquoi nous créons un travail cron pour celui-ci sur server1.example.com :

crontab -e
*/5 * * * * /usr/bin/unison &> /dev/null

Cela exécuterait Unison toutes les 5 minutes; ajustez-le à vos besoins (voir

man 5 crontab

). J’utilise le chemin complet pour l’ unisson ici ( / usr / bin / unison ) juste pour être sûr que cron sait où trouver l’ unisson . Votre emplacement à l’ unisson peut différer. CourirPublicité

which unison

pour savoir où est le vôtre.

6 Tester l’unisson

Je vais maintenant tester la synchronisation bidirectionnelle de Unison pour voir si la configuration fonctionne pleinement.

Exécutez la commande suivante sur server1 pour créer un fichier de test avec le contenu “Test 1”:

Serveur1

echo "Test 1" > /var/www/test.txt

Attendez maintenant au moins 5 minutes (car nous avons créé un cronjob qui s’exécute toutes les 5 minutes). Ensuite, exécutez sur server2:

cat /var/www/test.txt

pour afficher le contenu du fichier test.txt à l’écran. La sortie doit être similaire à cette capture d’écran.

synchronisation

Maintenant, exécutez cette commande sur server2 qui met à jour le contenu de notre fichier de test en “Test 2”:

Serveur2

echo "Test 2" > /var/www/test.txt

Et attendez au moins 5 minutes. Ensuite, exécutez la commande cat sur server1:Publicité

Serveur1

cat /var/www/test.txt

La sortie doit être:

synchronisation

Sabrina

Sabrina

Développeur informatique, (All-PHP's, JAVA, PERL, C, C++, Visual-Basic, Pascal, SPSS, SQL). Administrateur de réseaux informatiques, (Debian, Ubuntu) (Proxmox, Cpanel, Webmin, DNS), et Webmaster (Apache) ( Wordpress, PrestaShop, WooCommerce, Webmail Serveur et Client) 1990 -> 2017, Retraité depuis 2018... Contact: webmaster@milbako.com

Voir tous les articles de Sabrina →

Une réflexion sur « Configurer la synchronisation de fichiers Unison entre deux serveurs sur Debian 10 (Buster) »

Laisser un commentaire

Traduire