J'ai utilisé avec succès rsync pour synchroniser mes répertoires personnels entre mon ordinateur portable et mon netbook (tous deux utilisant ext4 avec Linux). Mon seul problème est que de temps en temps j'aime complètement réorganiser certains répertoires, et rsync voit cela comme des suppressions et la création de nouveaux fichiers, ce qui le rend très lent et inefficace.
Quelqu'un connaît-il un bon logiciel qui gère bien les mouvements de fichiers?
J'ai trouvé que l' unisson devrait être capable de cela, mais cela ne semble pas fonctionner dans la pratique. J'ai testé à l' unisson en synchronisant deux répertoires locaux, chacun avec un gros fichier, et il a toujours détecté mon mouvement comme une suppression + création et était en fait encore plus lent que rsync .
De plus, si je me souviens bien de ma lecture du code source de unison il y a quelques mois, il a essayé de faire quelque chose comme faire des sommes sha - et je ne veux pas que ma solution idéale fasse des sommes sha - qui est trop lent en général fichiers / répertoires. J'aimerais quelque chose qui remarque des choses comme:
"La dernière contrepartie source de ce fichier semble avoir été supprimée et il y a un nouveau fichier ailleurs dans l'arborescence du répertoire source qui a la même date, la même taille et le même numéro d'inode, donc je vais juste supposer qu'il s'agissait d'un mouvement et déplacer son homologue cible en conséquence au lieu de faire une suppression + copie. "
Il est important pour moi de pouvoir synchroniser ces machines rapidement.
Aucune suggestion?
la source
Unison fait ce que vous voulez, mais uniquement pour la synchronisation à distance. Essayez d'utiliser
ssh://localhost/path/to/dir
comme l'une des racines.Unison fonde ses décisions sur le contenu des fichiers, il ne suit pas les numéros d'inode.
la source
Vous pouvez gérer les fichiers déplacés et renommés avec rsync si les systèmes de fichiers des répertoires source et cible prennent en charge les liens matériels. L'idée est de laisser rsync reconstruire les liens durs avant le transfert réel. Vous pouvez trouver une bonne explication ici
Nous nous sommes retrouvés avec une solution simple qui crée une arborescence cachée de liens durs dans le répertoire source / cible, le script de base pourrait être comme ceci:
J'ai un exemple de script sur GitHub . Mais je vous conseille de faire un grand nombre de tests avant d'utiliser cette méthode en production.
la source
Si vous souhaitez synchroniser des fichiers entre plusieurs machines, vous pouvez simplement utiliser un système de contrôle de version centralisé comme Subversion (ou FSVS, qui utilise SVN comme backend). La bonne partie est que tout dans votre / home (que vous ajoutez au contrôle de version) est ensuite versionné et peut être facilement synchronisé avec d'autres machines, ou annulé.
la source
lsyncd gère également les fichiers déplacés avec le comportement rsync + ssh, bien que quelque peu bogué (j'obtiens environ 15% des mouvements traités comme supprimer / copier, mais je ne sais pas pourquoi). La plupart du temps, cela fonctionne.
la source