Ayant migré de Linux vers Windows, j'aimerais trouver un logiciel alternatif à Winmerge ou plutôt apprendre à utiliser des outils de ligne de commande pour comparer et synchroniser deux dossiers sous Linux. Je vous serais reconnaissant de bien vouloir me dire comment effectuer les tâches suivantes en ligne de commande ... (J'ai étudié diff et rsync, mais j'ai toujours besoin d'aide.)
Nous avons deux dossiers: "/ home / user / A" et "/ home / user / B"
Le dossier A est l'endroit où les fichiers et les dossiers normaux sont enregistrés et le dossier B est un dossier de sauvegarde qui sert de miroir complet au 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 existant uniquement dans le dossier B dans le dossier A?
Comment répertorier les fichiers qui existent dans les deux dossiers mais dont l’horodatage ou la taille sont différents? (Ceux qui ont été modifiés dans le dossier A depuis la dernière synronisation. J'aimerais éviter d'utiliser des sommes de contrôle, car il existe des dizaines de milliers de fichiers et cela ralentirait le processus.)
Comment faire une copie exacte du dossier A dans le dossier B? Je veux dire, tout copier du dossier A dans le dossier B existant uniquement dans le dossier A et supprimer tout le contenu du dossier B existant uniquement dans le dossier B, sans toucher aux fichiers identiques dans les deux dossiers.
la source
Réponses:
Cela met le dossier A dans le dossier B:
Si vous voulez que le contenu des dossiers A et B soit identique, insérez
/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:-a
Faire la synchronisation en préservant tous les attributs du système de fichiers-v
courir verbalement-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 sourceManpage: https://download.samba.org/pub/rsync/rsync.html
la source
/home/user/B/A
au lieu de remplacer le contenu de A par le contenu de B. Pourriez-vous m'aider à le regarder?Vous pourriez
unison
utiliser un outil développé par Benjamin Pierce à U Penn.Supposons que vous avez deux répertoires,
/home/user/Documents/dirA/
et/home/user/Documents/dirB/
Pour synchroniser ces deux éléments, vous pouvez utiliser:
~ $
unison -ui text /home/user/Documents/dirA/ /home/user/Documents/dirB/
En sortie,
unison
affichera chaque répertoire et fichier différent des deux répertoires que vous avez demandé de synchroniser. Il recommandera à additivement Synchronize (répliquées fichier manquant dans les deux endroits) sur la course initiale, puis créer et maintenir un arbre de synchronisation sur votre machine, et sur les exécutions ultérieures , il mettra en œuvre la synchronisation vraie ( par exemple, si vous supprimez un fichier.../dirA
, il seront supprimés à partir.../dirB
ainsi. Vous pouvez également comparer chaque changement et éventuellement choisir de transmettre ou inverse synchronisation entre les deux répertoires.Facultativement, pour lancer l'interface graphique, supprimez simplement l'
-ui text
option de votre commande, bien que je trouve lecli
plus simple et plus rapide à utiliser.Plus à ce sujet: tutoriel Unison dans la documentation utilisateur Unison .
la source
La réponse de TuxForLife est plutôt bonne, mais je vous suggère fortement de l’utiliser
-c
lors de la synchronisation locale. Vous pouvez faire valoir que cela ne vaut pas la peine de temps / réseau de le faire pour les synchronisations à distance, mais cela en vaut la peine pour les fichiers locaux car la vitesse est si grande.Cela montre à quel point le fait d’avoir la même taille et la même heure peut vous manquer.
La mise en place
Le rsync qui ne copie rien car les fichiers ont tous la même taille et le même horodatage
Le rsync qui fonctionne correctement car il compare les sommes de contrôle
la source
C’est ce que j’utilise pour la sauvegarde de fichiers personnels. Je ne me soucie pas de tout ce qui est couvert
-a
et je veux imprimer plus d’informations utiles.À partir de la page de manuel rsync :
De
rsync --info=help
Bien que moins explicite, ceci est apparemment équivalent et plus court:
la source
Ce n'est pas tout à fait la même chose que ce que vous demandez, mais vous pouvez envisager d'utiliser un outil de contrôle de version. Des outils comme Git font tout ce que vous demandez, et plus encore, en particulier si vous ne travaillez pas directement dans le dossier B, il peut être intéressant de le consulter. vous pouvez trouver plus d'informations sur git ici
la source
Vous pouvez l'utiliser de cette façon:
De cette façon, vous allez copier le contenu du dossier A dans le dossier B, pas le contenu du dossier A lui-même.
la source
Vous pouvez consulter https://github.com/Fitus/Zaloha.sh . C'est un synchroniseur implémenté en tant que script shell bash qui utilise uniquement les commandes Unix standard. C'est facile a utiliser.
la source