Synchroniser des dossiers avec rsync

dans cette publication, je couvre les bases de rsync, en prévision d’une future publication qui couvrira les sauvegardes et l’utilisation de rsync en conjonction avec des cronjobs pour automatiser le processus de sauvegarde. À partir de la copie et de la synchronisation des fichiers et des dossiers locaux, à son utilisation pour transférer des informations entre ordinateurs. Son utilisation en tant que service lorsque SSH n’est pas disponible a été déplacé vers sa propre section.

Thèmes

Les principes de base de RSYNC
Fixer des fichiers et des dossiers locaux
Listing avec des espaces en blanc et Autres caractères rares
Mettez à jour le contenu d’un dossier
Synchronisation de deux dossiers avec RSYNC
Compresser les fichiers avant de les transférer
Transférer des fichiers entre deux systèmes distants
Exclusion des fichiers et des annuaires
Utilisation de RSYNC En tant que service (déplacé vers sa propre section)
Quelques paramètres RSYNC supplémentaires

Les principes de base de RSYNC

rsync est un outil de copie très polyvalent inclus dans presque toutes les versions Linux. Il peut être utilisé comme outil de copie avancé, ce qui nous permet de copier des fichiers localement ou à distance. De plus, il peut être utilisé comme outil de sauvegarde, prend en charge la création de sauvegardes incrémentielles.

rsync a un célèbre algorithme de transfert Delta qui nous permet Pour transférer des fichiers nouveaux, ainsi que les modifications récentes des fichiers existants, tout en ignorant les fichiers qui n’ont pas été modifiés. En plus de cela, le comportement de rsync peut être personnalisé, nous aidant à automatiser les sauvegardes, il peut également être utilisé comme service pour convertir l’ordinateur sur un serveur et permettre aux autres clients de rsync Connectez-le.

En plus de la copie des fichiers et des dossiers locaux, rsync nous permet de copier en utilisant comme support de SSH (coquille sécurisée), RSH (coque distante) et peut exécuter en tant que service sur un ordinateur et permettre à d’autres ordinateurs de se connecter, lorsque rsync est utilisé comme service écouter Port 873.

Lorsque nous utilisons rsync comme service ou lorsque nous utilisons RSH, les données envoyées entre ordinateurs ne voyagent pas de chiffrement, si vous transférez, si vous transférez. Les fichiers entre deux ordinateurs du même réseau local, ceci sont utiles, mais cela ne doit pas être utilisé pour transférer des fichiers en réseaux dangereux, car il s’agit de L’Internet. À cette fin, SSH est le meilleur à utiliser.

C’est la raison principale pour laquelle je suis favorable à l’utilisation de SSH pour mes transferts, en outre, grâce à cela, de nombreux serveurs ont le service SSH disponible . Mais l’utilisation de rsync comme service pour les transferts dans des connexions rapides, comme c’est généralement le cas dans les réseaux locaux, il est utile. Je n’ai pas le service RSH fonctionnant sur mes ordinateurs afin que je puisse trouver que je privilégie ssh dans les exemples. Exemples Utilisez SSH comme moyen de transport pour les transferts entre ordinateurs distants, mais dans une publication distincte, je couvre l’utilisation de RSYNC en tant que service.

Copie de fichiers et de dossiers locaux

Le contenu d’un dossier dans un autre, remplaçant les fichiers du dossier cible, nous pouvons utiliser:

rsync -rtv carpeta_origen/ carpeta_destino/

Notez que dans le Folder_origen J’ai ajouté une diagonale à la fin, cela empêche un nouveau dossier d’être créé, si nous n’ajoutons pas la diagonale, un nouveau dossier appelé_origen sera créé dans Folder_Destine. Par conséquent, si vous souhaitez copier le contenu d’un dossier appelé des images dans un dossier appelé des images déjà existantes, vous devez ajouter la diagonale à la fin, sinon, un dossier appelé des images sera créé dans le dossier appelé des images que nous spécifions que nous spécifions en tant que destination.

rsync -rtv origen/ destino/

Représentation graphique du résultat après avoir utilisé RSYNC avec une diagonale à la fin de la source Dossier.

rsync -rtv origen destino/

Représentation graphique du résultat Après avoir utilisé RSYNC sans diagonale à la fin du dossier source .

Le paramètre signifie que vous effectuerez la copie récursive des dossiers, c’est-à-dire qu’il créera toute la structure des dossiers à l’intérieur. Le dossier_origen, et copiera tous les fichiers trouvés dans ceux-ci.

Le paramètre -t fait rsync Conservez les temps de modification des fichiers qui copient dans le dossier source.

Le paramètre -v signifie que les informations imprimées au cours de l’exécution du programme seront beaucoup plus détaillées, nous pouvons l’utiliser pour voir la progression de la commande.

Ce sont les paramètres que j’utilise fréquemment, car je supporte généralement des fichiers personnels et ceux-ci ne contiennent pas de choses comme des liens symboliques, mais un autre paramètre très utile pouvant être utilisé avec rsync est le paramètre -A.

rsync -av origen/ destino/

fait également une copie récursive et conserve les temps de modification, mais copie en outre les liens symboliques que vous trouvez sous forme de liens symboliques, conservez les autorisations, préservant les informations du propriétaire et le groupe de fichiers et conservez les fichiers de périphérique et les fichiers spéciaux. Ceci est utile si vous copiez un répertoire personnel de l’utilisateur ou si vous êtes en train de copier des dossiers système vers un autre endroit.

Liddening avec des espaces vides et d’autres caractères rares

Nous pouvons échapper à l’espace et des caractères rares ainsi que dans Bash, en utilisant \ avant tout espace vide et caractère rare. De plus, nous pouvons utiliser des guillemets simples pour joindre la chaîne de texte:

rsync -rtv or\{ig\ en/ des\ ti\{no/
rsync -rtv 'or{ig en/' 'des ti{no/'

mettre à jour le contenu d’un dossier

Pour enregistrer la bande passante et l’heure, nous pouvons éviter de copier des fichiers que nous avons déjà dans le dossier de destination que vous n’avez pas été modifié dans le dossier source. Pour ce faire, nous ajoutons le paramètre -u à rsync, cela mettra à jour le contenu du dossier de destination basé sur le dossier source, c’est là que l’algorithme de transfert Delta passe. Pour mettre à jour le contenu d’un dossier en fonction du contenu d’une autre utilisation:

rsync -rtvu carpeta_origen/ carpeta_destino/

par défaut, rsync Prenez la date de la dernière modification du fichier et de la taille de ceci pour décider quels fichiers doivent être transférés et que les fichiers peuvent être ignorés, mais nous pouvons utiliser à la place de cette méthode un hachage pour décider si la Le fichier est différent ou non.

Pour ce faire, nous devons utiliser le paramètre -c, qui effectuera une somme de contrôle dans les fichiers à transférer. Cela ignorera tout fichier dans lequel les correspondances de la somme de contrôle.

rsync -rvuc carpeta_origen/ carpeta_destino/

Synchroniser deux dossiers avec rsync

pour garder deux Dossiers de synchronisation, nous n’avons pas seulement besoin d’ajouter les nouveaux fichiers dans le dossier source dans le dossier de destination, nous devons également supprimer les fichiers supprimés du dossier source dans le dossier de destination. rsync nous permet de le faire avec le paramètre –Delete, ceci utilisé conjointement avec le paramètre -U précédent qui met à jour les fichiers modifiés nous permet de conserver deux dossiers dans la bande passante de l’économie de synchronisation.

rsync -rtvu --delete carpeta_origen/ carpeta_destino/

Le processus de suppression peut être prélevé avant, pendant et après le transfert, nous pouvons contrôler à quelle heure il arrive à l’aide de l’un quelconque. Les paramètres suivants:

  • rsync Vous pouvez rechercher des fichiers manquants et les supprimer avant le processus de transfert, il s’agit du comportement par défaut et peut être ajusté avec --delete-before
  • rsync Vous pouvez rechercher des fichiers manquants et les effacer après la fin du transfert, avec le paramètre --delete-after
  • rsync peut supprimer les fichiers pendant le transfert, lorsqu’un fichier manquant est trouvé, il est supprimé A cette époque, nous activons ce comportement avec --delete-during
  • rsync peut faire le transfert et trouver des fichiers manquants pendant cette période. Processus, attendez jusqu’à ce qu’il soit terminé et supprimé les fichiers que vous avez trouvés plus tard, cela peut être obtenu avec --delete-delay

Par exemple:

rsync -rtvu --delete-delay carpeta_origen/ carpeta_destino/

compresser les fichiers avant de les transférer

pour sauver une bande passante et économiser un peu de temps aussi, nous pouvons également économiser du temps Compressez les informations qui sont transférées, nous pouvons ajouter le paramètre -zrsync

rsync -rvz carpeta_origen/ carpeta_destino/

Si nous transférons un grand nombre de fichiers sur une connexion rapide, rsync peut être plus lent avec le paramètre -z qui sans elle, puisqu’il prendra plus de temps pour compresser chaque fichier comme le Le temps qui serait pris simplement pour transférer les fichiers dans le dossier_destino. Utilisez ce paramètre si vous avez une connexion avec une vitesse limitée entre deux ordinateurs ou si vous devez enregistrer la bande passante.

transférer des fichiers entre deux systèmes distants

rsync Vous pouvez copier des fichiers et synchroniser un dossier local avec un dossier distant sur un système qui a Un système qui a un accès système via SSH, via RSH ou qui exécute rsync comme service. Exemples ici Utilisez SSH pour le transfert de fichier, mais les mêmes principes s’appliquent si vous voulez le faire avec rsync Concentrer en tant que service sur l’ordinateur distant, lu en exécutant RSYNC en tant que service lorsque SSH est Non disponible ci-dessous pour plus d’informations à ce sujet.

Pour transférer des fichiers entre l’ordinateur local et un ordinateur distant, nous devons spécifier l’adresse de l’ordinateur distant, elle peut être un nom de domaine, une adresse IP, Ou le nom d’un serveur que nous avons précédemment enregistré dans notre fichier de configuration SSH (informations sur la manière de faire cela peut être vu dans la définition des serveurs SSH), suivi de deux points et le dossier que nous souhaitons utiliser pour le transfert. Notez que rsync ne peut pas transférer des fichiers entre deux systèmes distants, juste un dossier local ou un dossier distant peut être utilisé conjointement avec un dossier local. Pour ce faire, nous utilisons:

dossier local vers un dossier distant, à l’aide d’un domaine, d’une adresse IP ou d’un serveur défini dans le fichier de configuration SSH:
rsync -rtvz carpeta_origen/ [email protected]:/ruta/a/carpeta_destino/
rsync -rtvz folder_origen / [email protected]/ruta/a/carpet_destino/ rsync -rrrtvz_origen_name / nom_serveur_name: / itinéraire / a / folder_destin /

Dossier distant sur le dossier local , à l’aide d’un domaine, d’une adresse IP ou d’un serveur défini dans le fichier de configuration SSH: rsync -rtvz [email protected]:/ruta/a/carpeta_origen/ carpeta_destino/

rsync -rtvz user @ xxx.xxx.xxx.xxx:/ RUTA / A / TOPET_ORIGEN / FLASTER_DESTINO /
RSYNC -RTVZ ServerName: / Route / A / Folder_origen / Folder_Destine /

Exclure les fichiers et les annuaires

Il y a beaucoup de cas où nous avons besoin de Pour exclure certains fichiers et répertoires de rsync, un cas commun est lorsque nous synchronisons un projet local avec un référentiel à distance ou même avec un site de vie, dans ce cas, nous pouvions vouloir exclure certaines Les répertoires de développement et certains fichiers cachés à transférer sur le site de vie. Exclure les fichiers peut être effectué avec --exclude suivi du répertoire ou du fichier que nous voulons exclure. Le dossier source ou le dossier de destination peut être un répertoire local ou un répertoire distant, comme expliqué dans la section précédente.

rsync -rtv --exclude 'directorio' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'archivo.txt' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'direccion/a/directorio' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'direccion/a/archivo.txt' carpeta_origen/ carpeta_destino/

Les itinéraires sont par rapport au dossier à partir duquel nous appelons rsync, à moins qu’il ne commence par une diagonale, auquel cas l’itinéraire serait absolu.

Autre moyen Pour ce faire, c’est créer un fichier avec la liste des fichiers et des répertoires à exclure de rsync, ainsi que des modèles (tous les fichiers entrant dans le modèle donné seraient exclus, *. txt, il exclut tout fichier avec cette extension), une par ligne et appelerait ce fichier avec --exclude-from suivi du fichier que nous voulons utiliser pour l’exclusion des fichiers. D’abord, nous créons et modifierons ce fichier dans notre éditeur de texte préféré, dans cet exemple, j’utilise Gedit, mais vous pouvez utiliser Kate, Vim, Nano ou tout autre éditeur de texte:

touch excluidos.txt
gedit excluidos.txt

Dans ce fichier, nous pouvons ajouter les éléments suivants:

directorio
direccion/relativa/a/directorio
archivo.txt
direccion/relativa/a/archivo.txt
/home/juan/directorio
/home/juan/archivo.txt
*.swp

puis appelle rsync:

Supplément pour supprimer les fichiers qui ont été supprimés du dossier D’origine, comme expliqué dans la synchronisation de deux dossiers avec RSYNC, rsync peut supprimer des fichiers exclus du transfert, nous pouvons le faire avec le paramètre --delete-excluded, par exemple:

rsync -rtv --exclude-from 'excluidos.txt' --delete-excluded carpeta_origen/ carpeta_destino/

cette commande rendra rsync récursif , conservera les temps de modification du dossier source, augmentera la verbosité, exclure tous les fichiers entrant dans les modèles du fichier EX. Cluidos.txt, et supprimer tous les fichiers exclus si elles existent dans le dossier de destination.

Utilisation de RSYNC en tant que service lorsque SSH n’est pas disponible

Ceci a été déplacé dans votre propre section, en utilisant Rsync en tant que service

Quelques paramètres supplémentaires de RSYNC

-t préserve les heures de modification des fichiers transférés.
-q Supprimez tous les messages qui ne sont pas une erreur, ce paramètre est contraire au paramètre -v qui affiche beaucoup plus d’informations de transfert.
-d copier les fichiers d’un répertoire sans utiliser de récursivité pour copier les répertoires internes, en disant que seuls les fichiers sont transférés.
-l Copiez les symboles comme symboles de symboles -L copier les fichiers sur lesquels un symboliste pointe lorsque vous trouvez un symbole symbolique.
-W Copier des fichiers entiers, car lorsque nous utilisons l’algorithme de transfert Delta, seule la partie d’un fichier mis à jour est copiée, car cela n’est parfois pas souhaité.
--progress montre la progression des fichiers qui sont transférées.
-h montre les informations fournissant rsync dans un format plus lisible, Les quantités sont données dans K’s, m’s, g, etc.

Notes de pied

Le nombre d’options rsync il donne nous immense, nous pouvons définir exactement quels fichiers nous voulons Transfert, quels fichiers spécifiques que nous voulons compresser, quels fichiers que nous souhaitons supprimer dans le dossier de destination si ces fichiers existent et nous pouvons également faire face aux fichiers système, pour plus d’informations que nous pouvons utiliser man rsync et man rsyncd.conf

laissez les informations qui concernent des sauvegardes en dehors de cette publication, car cela sera couvert, avec l’automatisation du processus de sauvegarde, dans un Publication future.

Il est possible d’utiliser rsync dans Windows à travers l’utilisation de Cygwin, mais je n’ai pas d’ordinateur Windows disponible pour le moment (ou planifiez Pour l’avoir dans un proche avenir), alors même si j’avais fait cela, je ne peux pas publier à ce sujet. Cependant, si vous utilisez rsync comme service Windows, vous devez ajouter « scrict mode = false » à rsyncd.conf dans les modules, ceci Il rendra rsync Ne pas revoir les autorisations dans le fichier secret car si elle l’a fait, cela échouerait car il ne serait pas configuré correctement (puisqu’ils ne fonctionnent pas comme dans Linux ).

Cette publication pourrait être mise à jour s’il y a quelque chose à corriger ou à ajouter plus d’informations si je le vois.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *