{{tag>synchronisation}} ====== Grsync ====== **[[wpfr>Grsync]]** est une interface graphique simple utilisant GTK pour la commande [[:rsync]]. C'est donc un logiciel qui permet de synchroniser facilement des répertoires sur des périphériques externes ou distants. Il est publié sous licence libre **[[wpfr>Licence_publique_générale_GNU|GNU GPL]]**. {{:application:grsync.png?500|Interface graphique de Grsync sous Ubuntu 12.04}} ===== Pré-requis ===== * Disposer d'un support de copie ([[:partitions|partition]], [[:SSD]], [[:disque dur]] externe, clé USB suffisamment grosse). * idéalement le support doit être au format **[[:ext4]]**, car le **[[:système de fichiers#NTFS]]** ou le **[[:système de fichiers#FAT32]]** ne conservent pas toutes les propriétés des fichiers. Si vous avez un tel support, vous pouvez le reformater en **[[:ext4]]**. * Si vous préférez travailler sur un support **[[:système de fichiers#NTFS]]** ou le **[[:système de fichiers#FAT32]]**, cochez la case "compatibilité avec Windows". ===== Installation ===== [[:deb#installer un paquet deb|Installez le paquet]] ''[[apt>grsync]]''. ===== Utilisation ===== **Grsync** synchronise un seul répertoire (et ses sous-répertoires) par exécution. On peut cependant définir plusieurs synchronisations (une par répertoire). On devra ensuite les lancer une par une. Il existe une option de **Grsync** qui permet de lancer plusieurs synchronisations précédemment définies en une seule action. Les synchronisations sont unidirectionnelles, et pas bidirectionnelles. Mais rien n'interdit de créer de mettre en place des synchronisations unidirectionnelles croisées, l'une allant de A vers B, puis l'autre allant de B vers A.\\ Cela risque de poser des problèmes avec les fichiers supprimés et ceux modifiés de part et d'autre, alors que la synchronisation bidirectionnelle gère cela. ==== Configuration d'une synchronisation ==== ==== Approche simplifiée ==== - Lancer Grsync (disponible dans le menu des applications Ubuntu). - Dans le menu //Session//, cliquez sur //Ajouter//, puis //entrer le nom de la nouvelle session//* (par exemple ''copie-Doc''). Ne pas cocher //ajouter comme ensemble de session//. - Dans la zone "source", saisissez le répertoire à synchroniser (ses sous-répertoires le seront aussi).Par défaut, le répertoire source lui-même, ainsi que son contenu, seront copiés dans le répertoire destination :\\ "Un slash en fin de ligne sur le répertoire source évite de créer un niveau supplémentaire au répertoire destination.\\ Le slash en fin de ligne signifie 'copie le contenu de ce répertoire'; par opposition à 'copie le répertoire lui-même et son contenu' " :\\ {{:grsync:grsync_slash_fin_de_ligne.png?600|Grsync 1.3.0 : slash en fin de ligne}} - Dans la zone //destination//, saisissez la partition (et éventuellement le répertoire) où se fera la synchronisation. Vérifiez que la taille disque sera suffisante. - Ne modifiez aucune des options par défaut, et cliquez sur l'icône //Synchroniser// (la plus droite de la barre d'outils) pour lancer la synchronisation. La session créée étant automatiquement conservée, vous pouvez relancer la synchronisation à chaque fois que nécessaire. {{:grsync:grsync-ajouter-session-1.png?650|Grsync 1.2.6 : ajouter une synchronisation 1}} {{:grsync:grsync-ajouter-session-2.png?300|Grsync 1.2.6 : ajouter une synchronisation 2}} ==== Approche complète ==== - Dans le menu //Session//, cliquez sur //Ajouter//, puis entrer le nom de la nouvelle session (par exemple ''copie-Doc''). Ne pas cocher //ajouter comme ensemble de session//. - Dans Source et destination : * la première ligne correspond à la **source**, c'est-à-dire au répertoire à synchroniser. Indiquez dans cette ligne votre répertoire, par exemple ''/home%%/%%//vous//%%/%%Documents'' ; * la seconde ligne correspond à la **destination**, c'est-à-dire à l'endroit où seront copiées les données. La ligne sera du type : ''/media/nom_du_support/mes-copies/'' (''/media/'' indique que vous accéder à une autre partition ou disque, mais c'est pas une obligation). Si la partition de destination est différente, elle doit être [[:montage|montée]] pour que la synchronisation fonctionne.\\ Dans les 2 cas, on peut utiliser le bouton « **Ouvrir** » pour chercher graphiquement le répertoire d'origine ou de destination.Par défaut, le répertoire source lui-même, ainsi que son contenu, seront copiés dans le répertoire destination :\\ "Un slash en fin de ligne sur le répertoire source évite de créer un niveau supplémentaire au répertoire destination.\\ Le slash en fin de ligne signifie 'copie le contenu de ce répertoire'; par opposition à 'copie le répertoire lui-même et son contenu' " :{{:grsync:grsync_slash_fin_de_ligne.png?600|Grsync 1.3.0 : slash en fin de ligne}} - Pour **définir les options de synchronisation**, vous pouvez conserver les options de base, qui sont les suivantes (vous pouvez changer ces options, si vous savez ce que vous faites) :\\ {{:grsync:grsync_definir_synchro.png?500|Grsync 1.2.6 : Paramétrage d'une synchro}}\\ L'option //Effacer sur la destination// n'est pas cochée par défaut, mais c'est sans doute la plus intéressante des options additionnelles : cochée, elle efface automatiquement sur le répertoire cible tous les fichiers qui ne sont pas (ou ne sont plus) dans votre répertoire source. * Inconvénient : un répertoire ou un fichier effacé par erreur sur la source disparaîtra aussi de la destination. * Avantage : votre synchronisation sera parfaite.\\ Cette option transforme donc le sens de Grsync : il faut la cocher si on veut une synchronisation, mais la décocher si on préfère une copie de sécurité. Si l'espace de destination est assez grand, on peut d'ailleurs avoir 2 synchronisations en parallèle dont seuls cette option et le répertoire de destination diffèrent, afin d'avoir à la fois une synchronisation à l'identique et une préservation des anciens fichiers supprimés. - Dans l'onglet //options avancées// on peut conserver les options par défaut, mais on peut aussi valablement ajouter : * Préserver les périphériques * Comprimer les données (seulement pendant le transfert, pas sur disque). Accélère les transferts si le volume des données est important par rapport au débit de la ligne, mais est inutile sinon.\\ Ci-dessous les options par défaut de l'onglet //options avancées// :\\ {{:grsync:grsync-options-avancees.png?500|Grsync 1.2.6 : Options par défaut de l'onglet "options avancées"}} - L'onglet //Autres options// permet de lancer des commandes ou des scripts avant ou après la synchro. Par exemple vider la poubelle //avant// de synchroniser tout le ''/home'' peut être utile : ''rm -rvf ~/.local/share/Trash/{*,.*}''.\\ Ci-dessous les options par défaut de l'onglet //autres options// :\\ {{:grsync:grsync-autres-options.png?500|Grsync 1.2.6 : Options par défaut de l'onglet "autres options"}}\\ Il n'y a aucune configuration à synchroniser : toutes les modifications que vous apportez à votre paramétrage sont inscrites en temps réel. - Enfin cliquez sur le bouton //Synchroniser// pour démarrer la copie. Pour chaque mise à jour de la synchronisation, il faudra appeler le nom de celle que vous voulez lancer (via la liste déroulante en haut de fenêtre), et la relancer. Vous pouvez paramétrer autant de synchronisations que vous le souhaitez. ===== Première utilisation ===== Lancez l'application et choisissez la synchronisation à lancer. Il est possible, et conseillé lors d'un premier test de synchronisation, d'effectuer une simulation (bouton //Simuler//), pour observer ce que ferait Grsync avec les options choisies. Vous pouvez également faire des tests en créant un répertoire source (par exemple : source_test) et un répertoire de destination (destination_test) sur votre machine, dans le répertoire de test source vous pouvez coller différents fichiers et dossiers, puis vérifier que Grsync a bien produit le résultat attendu dans le répertoire destination de test. **Pour réaliser la synchronisation**, il faut l'appeler par le menu déroulant en haut de la fenêtre, puis cliquer sur le bouton **« Synchroniser »** (le plus à droite des boutons de l'interface), ou dans le Menu **Fichier**, choisir **exécuter**. **Pour récupérer le résultat détaillé de l'exécution** il faut cliquer sur la ligne "sortie de rsync" {{:grsync:grsync-resultat.png?400}} exemple de contenu **** default - Wed May 11 14:02:57 2022 ** Launching RSYNC command: rsync -r -t -p -o -g -x -v --progress --delete -l -s --exclude=.cache /home/a /home/Save sending incremental file list deleting a/Essai-Grync a/ a/Bonne Codification Exclude 6 100% 0.00kB/s 0:00:00 (xfr#1, ir-chk=1062/1069) .......... sent 3,249,424 bytes received 5,046 bytes 2,169,646.67 bytes/sec total size is 3,824,395,395 speedup is 1,175.12 Code d'erreur retourné par rsync:0 ===== Utilisations avancées - cas pratiques ===== Au-delà du paramétrage de base d'une synchronisation tel qu'expliqué plus haut, il existe des options permettant d'aller plus loin. En voilà quelques-unes. ==== En cas d'anomalie ==== Si des comportements semblent anormaux (refus de lancer une synchronisation, plantages), vous pouvez essayer d'__effacer vos paramétrages__ en supprimant le fichier **init** dans le répertoire caché /home/user/.grsync/init Si ce n'est pas suffisant, vous pouvez même supprimer tout le répertoire caché /.grsync/ où ///user/// est votre pseudo sur Ubuntu. ==== Simulation et apprentissage rsync ==== Avant une nouvelle synchronisation, il est intéressant de lancer une simulation (icône entourée en rouge). Aucune synchronisation n'est faite, mais un message d'erreur peut être signalé. {{:grsync:grsync_simulation1.png?500|Grsync 1.2.6 : Bouton de lancement de la simulation}} De plus, la commande [[rsync|rsync]] générée est affichée, ce qui permet d'apprendre la syntaxe de la commande, ou de la réutiliser dans [[anacron|anacron]] (voir le chapitre sur l'automatisation, plus bas). {{:grsync:grsync_simulation2.png?1000|Grsync 1.2.6 : Affichage du résultat de la simulation et de la commande rsync.}} ==== Synchronisation multiples==== On peut créer une session qui regroupe plusieurs synchronisations. Pour ce faire, il faut créer une synchronisation de groupe (menu //session// -> //ajouter//) en cochant la case //ajouter comme ensemble de sessions//. On donne alors un nom à cette nouvelle synchronisation : {{:grsync:grsync_grouper_synchro_1.png?500|Créer un lancement groupé pour plusieurs synchronisations}} La liste des sessions de synchronisations existantes apparaît, et il reste juste à cocher celles qu'on souhaite regrouper pour un lancement unique. Ensuite on peut lancer la synchronisation. {{:grsync:grsync_grouper_synchro_2.png?500|Créer un lancement groupé pour plusieurs synchronisations}} Le lancement de la session de groupe se fait de la même manière que pour tout lancement de session : **d'abord se placer dans la session** (à laquelle on accède par la liste déroulante des sessions), puis * cliquer sur le bouton **Synchroniser** (en haut à droite - voir copie écran ci-dessus), * ou **fichier > exécuter** * ou au terminal **grsync -e //nom-synchronisation//** (l'option **-e** ferme automatiquement Grsync après la synchronisation, quand l'option **-s** conserve Grsync ouvert). Ci-dessous le choix de la session à lancer (cette liste apparaît après avoir cliqué dans la liste déroulante en haut de l'écran) : {{:grsync:grsync_choisir_synchro.png?500|Grsync 1.2.6 : Choix session à lancer}} On peut aussi lancer un groupe de synchronisations en faisant un script au terminal : Par exemple **grsync -e mozilla && grsync -e thunderbird && grsync -e documents && grsync -e images** lance 4 synchronisations par leur nom, l'une après l'autre (bien sur, il a fallu paramétrer chacune de ces synchronisations auparavant). Le lien entre nom de la synchronisation et répertoire synchronisé n'a rien d'obligatoire, mais il est pratique. Ici, le nom des synchronisations indique les répertoires à synchroniser : profil [[:Firefox]], profil [[:Tunderbird]], répertoire ''Documents'' et répertoire ''Images''. On peut automatiser ce script dans un fichier [[:bash]], ou plus simplement dans un alias du fichier ''.bashrc'' (ce qui crée une pseudo commande). Par exemple un ''gedit .bashrc*'' au terminal ouvre le fichier caché ''.bashrc''. En-dessous des alias existant (dans la partie alias, donc), on peut ajouter une ligne : ''alias sync="grsync -e mozilla && grsync -e thunderbird && grsync -e documents && grsync -e images && exit"''. Il faut refermer le terminal, puis le rouvrir (ce qui réinitialise le ''.bashrc''). Dès lors, taper ''sync'' dans le terminal lancera automatiquement les 4 synchronisations de l'exemple l'une après l'autre. ==== Automatisation des synchronisation s==== Grsync n'a pas de fonction d'automatisation. Il doit donc être lancé manuellement à chaque synchronisation. On peut facilement lancer Grsync à chaque démarrage du PC, via les [[tutoriel:application_demarrage|options de démarrages automatiques]] qui existent dans toutes les versions d'Ubuntu. Exemple à saisir dans le champs "commande" du démarrage automatique : grsync -e documents C'est une commande qu'on peut saisir dans Xubuntu ("**Panneau de configuration > session et démarrage > démarrage automatique d'application > ajouter**"), ou dans Ubuntu gnome ("**Applications > Applications au démarrage > ajouter**"), et qui lance la synchronisation nommée ''documents'' dès le démarrage de la session. Attention, le nom de la synchronisation est sensible à la casse (majuscules / minuscules). Si vous trouvez que Grsync ralenti trop le démarrage de votre PC, vous pouvez demander au [[tutoriel:application_demarrage|démarrage automatique]] d'attendre quelques minutes avant de lancer la synchronisation. Exemple pour une attente de 60 secondes (1 minute) : sh -c "sleep 60 ; grsync -e documents" Exemple de l'écran de saisie du démarrage automatique (sous [[gnome-shell|gnome-shell]]). C'est le champs "**Commande**" qui est important, les autres sont libres. {{:grsync:grsync_au_demarrage.png?600|Grsync 1.2.6 : Créer un lancement automatique au démarrage}} Si on souhaite un démarrage à un rythme différent du quotidien, [[cron|Cron]] ou [[anacron|anacron]] (ce dernier plus adapté à un PC) ne sont pas vraiment utiles, car ils sont lancés par l'**utilisateur root**, lequel n'affiche pas le résultat à l'écran, et ne connaît pas votre compte utilisateur (ou sont stockés vos paramétrages de synchronisations). Ils sont bien adaptés par contre pour lancer rsync, la commande derrière Grsync. Pour une telle automatisation, et si vous ne connaissez pas la syntaxe rsync, cliquez sur l’icône "simuler", récupérez la commande rsync générée par Grync : {{:grsync:grsync_simulation2.png?1000|Affichage du résultat de la simulation et de la commande rsync.}} puis ajoutez la dans [[:anacron]] (sans le **'-n'** qui indique qu'il s'agissait d'une simulation). Pour faire simple : gedit admin:///etc/anacrontab Ajouter à la dernière ligne du fichier votre automatisation, au format 7 15 copie rsync -r -t -p -o -g -v --progress --delete -c -l -D -s /home/chris/Documents /mnt/abbd0971-7729-4469-ba03-1558429aa04d/copie * où le 1er chiffre est le nombre de jour entre chaque synchronisation (ici 7 jour), * le second le nombre de minutes entre le démarrage du PC et lancement de la synchronisation (ici 15 minutes), * "copie" est un nom que vous choisissez vous-même (il est libre), * Enfin, la commande rsync reprend simplement l'exemple de la copie écran précédente (mais sans le '**-n**' qui indiquait qu'il s'agissait d'une simulation). Pour aller plus loin, voyez l'aide [[anacron|anacron]]. Si vous récupérez la commande à partir de GRSYNC, pensez à enlever l'option ''-n'' qui correspond au mode simulation. ====Synchronisation en continu==== Pour avoir une synchronisation quasi permanente, vous pouvez lancer chaque heure (voir plus fréquemment) la synchronisation entre votre source et votre destination. Pour ce faire, le mieux est d'avoir une boucle sans fin qui tourne en résident dans la mémoire, et lance la synchro régulièrement. Pour ce faire, allez dans le lancement automatique de programmes au démarrage de la session (voir explication plus haut), et dans la zone "commande" copiez : sh -c "while : ; do sleep 3600 ; grsync -e documents ; done" La synchro "documents" se lancera pour la 1er fois 3600 secondes (1 heure) après le démarrage de la session, puis toutes les 3600 secondes, jusqu'à fermeture de la session. Rappel : pour une synchro, l'option "effacer sur la destination" est préférable. ==== Exclusion de certains fichiers ou répertoires d'une synchronisation ==== Vous pouvez souhaitez exclure certains fichiers d'une synchronisation. Grsync n'a pas de fonctionnalité directement liée à cet objectif, mais permet de saisir une option [[:rsync]] dans son onglet "**Options avancées**", champ "**Options supplémentaires**". Dans ce dernier, saisissez par exemple **%%--exclude="*.txt"%%** (pour exclure les fichiers avec une extension .txt), ou **%%--exclude="maison*"%%** (pour exclure les fichiers commençant par **maison**). Pour exclure un répertoire, saisissez par exemple **%%--exclude="impots/*"%%** (pour exclure le répertoire **/impots/**). Donc pour être __certain__ d'exclure un répertoire et pas des fichiers, le **/** à la fin ("**impots/**") est __très conseillé__. Attention, ne __pas__ saisir le chemin complet du répertoire (par exemple /home/chris/Documents/impots/), car il ne sera __pas__ reconnu => il faut seulement saisir le nom du répertoire suivi d'un slash (barre oblique) et du caractère étoile : **/***. L'étoile de fin (après le **/**) est __indispensable__ sous peine d'une erreur d'exécution. Ne pas saisir non plus ***/impots/*** (avec une étoile avant le nom du répertoire), cela ne fonctionnera pas plus que le nom complet du chemin. Si vous ne mettez pas le slash **/** à la fin de votre exclusion, la synchronisation fonctionnera, mais tout fichier s'appelant exactement **impots** (donc sans extension) sera également exclu (peu de fichiers n'ont pas d’extension mais le risque existe cependant d'avoir un fichier et un répertoire ayant exactement le même nom). A noter qu'on peut mettre plusieurs lignes d'exclusions. //Ci-dessous, un exemple avec l'exclusion de **répertoire1/** et avec l'exclusion de tous les fichiers se terminant par l'extension **.txt**// {{:grsync:grsync_exclusion.png?500|Grsync 1.2.6 : Exclusions d'un répertoire et des fichiers .txt}} Cette fonction est particulièrement intéressante quand on synchronise l'ensemble du **/home/**, sachant que le risque est important que des répertoires ne vous intéressent pas (la poubelle, par exemple). En cas de synchronisation sur un cloud public, un soucis de confidentialité peut aussi rendre préférable des exclusions de la synchronisation. ==== Synchronisation de l'ensemble du "/home" ==== Copier le répertoire **/home** (donc tout votre profil et tous vos fichiers) implique simplement d'avoir défini ce répertoire (et donc automatiquement ses sous-répertoires) comme répertoire à synchroniser. Ce type de synchronisation n'a rien de techniquement spécifique. L'avantage de synchroniser tout le **/home** en une seule passe est d'éviter de combiner plusieurs synchronisations (une par répertoire). L'inconvénient est d'avoir de grosses synchronisations, dont une partie du contenu peut ne pas vous intéresser. En toute hypothèse, pensez à vider la poubelle avant la synchronisation (ou à a mettre en //exclude//), sinon vous la synchroniserez aussi, ce qui peut prendre beaucoup de place. Ce vidage peut-être manuel, mais on peut aussi positionner un script d'effacement avant l'exécution de la synchronisation via l'onglet "autres options" pour automatiser ce vidage : **rm -rvf ~/.local/share/Trash/{*,.*} ** (dans l'accolade, le **__*__** supprime les fichiers "normaux", et le **__.*__** supprime les fichiers cachés). {{:grsync:grsync_vider_corbeille.png?500|Grsync 1.2.6 : Vider la corbeille avant la synchro du home}} Pensez à utilisez (si besoin) les options d'exclusion par la synchro de certains répertoires ou fichiers (voir plus haut). ==== Synchronisation sur un serveur distant ==== Le champ "destination" du 1er onglet doit être rempli sous cette forme : **nomutiliateurduserveur**@192.168.x.x::**nomdumodule** ==== Arrêter l'ordinateur automatiquement après une synchronisation ==== Le 3e onglet de Grsync, "**Autres options**", permet de lancer une commande avant et une commande après rsync. On peut par exemple demander l'arrêt automatique de l'ordinateur **après la synchronisation**, ce qui permet de ne pas rester à côté du PC en attendant la fin des synchronisations, ce qui peut-être long pour de gros volumes de données et / ou des débits lents. Commande à utiliser : telinit 0 Pour désactiver **définitivement** la demande de mot de passe à l’exécution de chaque **telinit 0** (ce qui rendrait en pratique inopérant l'arrêt automatique), vous devez lancer auparavant dans un terminal (une fois pour toute) : **sudo chmod +s /sbin/telinit** {{:grsync:grsync_arret_pc_apres_sauvegarde.png?&500|Grsync 1.2.6 : arrêt du PC après une synchronisation}} ===== Tableau des correspondances des options rsync/Grsync ===== Pour ceux qui connaissent déjà la commande [[rsync|rsync]], ou qui souhaitent la maîtriser, il peut être intéressant de connaitre les options rsync lancées par l'interface graphique qu'est Grsync. Pour plus de précisions sur ces options, voir : **[[http://www.delafond.org/traducmanfr/man/man1/rsync.1.html | le manuel de rsync en français]]** Grsync, sans rien de coché, lance toujours rsync avec l'option "-r" (parcourt le dossier indiqué **et** tous ses sous-dossiers) Le bouton "Simulation" de Grsync correspond à l'option "-n" de rsync. | **Cases à cocher « Options de base » Grsync** | **Options rsync** | | Conserver la date | -t | | Conserver les permissions | -p | | Conserver le propriétaire | -o | | Conserver les groupes | -g | | Effacer sur la destination | %%--delete%% | | Informations complémentaires | -v | | Ignorer les fichiers existants | %%--ignore-existing%% | | Ne pas quitter le système de fichier | -x | | Montrer la progression | %%--progress%% | | Taille seulement | %%--size-only%% | | Sauter les fichiers plus récents | -u | | Compatibilité Windows | %%--%%modify-window=NUM | | **Cases à cocher « Options avancées » Grsync** | **options rsync** | | Toujours faire la somme de contrôle | -c | | Copier les liens symboliques comme liens symboliques | -l | | Préserver les périphériques | -D | | Mettre à jour seulement les fichiers existants | %%--existing%% | | Conserver les fichiers transférés partiellement | -P = %%--partial%% %%--progress%% | | Ne pas reproduire les valeurs uid/gid | %%--numeric-ids%% | | Compresser les données//(1)// | -z | | Faire une synchronisation | -b | //(1) cette option ne compresse pas les données au final, mais les compresse seulement lors du transfert pour que celui-ci soit plus rapide. // ===== Désinstallation ===== Pour supprimer cette application, il suffit de [[:tutoriel:comment_supprimer_un_paquet|supprimer son paquet]]. La configuration de l'application sera conservée ou supprimée selon la méthode de désinstallation que vous choisirez. ===== Configurations ===== Le répertoire de configuration se trouve dans le répertoire caché ~/.grsync, dans votre répertoire par défaut. ===== Voire aussi ===== * **(//en//)** [[http://www.opbyte.it/grsync/|Site officiel]] * [[http://www.delafond.org/traducmanfr/man/man1/rsync.1.html | le manuel de rsync en français]] ---- //[[:Contributeurs]] : [[:utilisateurs:jahwork]].//