GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Comment synchroniser deux dossiers avec des outils de ligne de commande ?

Ayant migré vers Linux depuis Windows, j'aimerais trouver un logiciel alternatif à Winmerge ou plutôt apprendre les outils en ligne de commande pour comparer et synchroniser deux dossiers sous Linux. Je vous serais reconnaissant si vous pouviez me dire comment effectuer les tâches suivantes sur la ligne de commande… (J'ai étudié diff et rsync, mais j'ai encore besoin d'aide.)

Nous avons deux dossiers :"/home/user/A" et "/home/user/B"

Le dossier A est l'endroit où les fichiers et dossiers réguliers sont enregistrés et le dossier B est un dossier de sauvegarde qui sert de miroir complet du dossier A. (Rien n'est directement enregistré ou modifié par l'utilisateur dans le dossier B.)

Mes questions sont :

  • Comment lister les fichiers qui n'existent que dans le dossier B ? (Par exemple, ceux supprimés du dossier A depuis la dernière synchronisation.)

  • Comment copier des fichiers qui n'existent que dans le dossier B vers le dossier A ?

  • Comment lister les fichiers qui existent dans les deux dossiers mais qui ont des horodatages ou des tailles différents ? (Ceux qui ont été modifiés dans le dossier A depuis la dernière synchronisation. J'aimerais éviter d'utiliser des sommes de contrôle, car il y a des dizaines de milliers de fichiers et cela rendrait le processus trop lent.)

  • Comment faire une copie exacte du dossier A dans le dossier B ? Je veux dire, copiez tout du dossier A dans le dossier B qui n'existe que dans le dossier A et supprimez tout du dossier B qui n'existe que dans le dossier B, mais sans toucher aux fichiers qui sont identiques dans les deux dossiers.

Réponse acceptée :

Cela place le dossier A dans le dossier B :

rsync -avu --delete "/home/user/A" "/home/user/B"  

Si vous voulez le contenu des dossiers A et B pour être le même, mettez /home/user/A/ (avec la barre oblique) comme source. Cela ne prend pas le dossier A mais tout son contenu et le place dans le dossier B. Comme ceci :

rsync -avu --delete "/home/user/A/" "/home/user/B"
  • -a Effectuez la synchronisation en préservant tous les attributs du système de fichiers
  • -v exécuter de manière détaillée
  • -u copier uniquement les fichiers avec une heure de modification plus récente (ou une différence de taille si les heures sont égales)
  • --delete supprimer les fichiers du dossier cible qui n'existent pas dans la source

Page de manuel :https://download.samba.org/pub/rsync/rsync.html


Linux
  1. Comment supprimer des fichiers avec une extension spécifique dans la ligne de commande Linux

  2. Comment convertir un PDF en JPG avec une ligne de commande sous Linux ?

  3. Comment convertir un document DjVu en PDF sous Linux en utilisant uniquement des outils de ligne de commande ?

  4. Comment remplacer un fichier en jar par une ligne de commande sous Linux ?

  5. Comment puis-je copier un dossier à partir de la ligne de commande Linux ?

Supprimer le répertoire sous Linux - Comment supprimer un dossier de la ligne de commande

Comment vérifier la version du système d'exploitation avec la ligne de commande Linux

Comment installer Dig sous Linux avec des exemples de ligne de commande

Comment compresser un dossier sous Linux

Comment trouver une adresse IP dans la ligne de commande Linux

Comment surveiller la santé du serveur Linux avec des outils de ligne de commande