Est-ce que rsync est un bon choix pour mon projet?
Je dois:
- copier des fichiers de la source vers le dossier de destination via SSH,
- être sûr que tous les fichiers sont copiés,
- supprimer les fichiers source après la copie.
- si j'ai un nom de conflit, je dois renommer des fichiers.
Il semble que je puisse utiliser l'option: --remove-source-files (pour supprimer les fichiers source)
Mais comment rsync gère-t-il les conflits, puis-je avoir des règles?
Cas d'utilisation sur mon projet:
J'exécute le calcul scientifique sur le serveur A et les résultats sont insérés dans le dossier "process", pour chaque calcul j'ai un dépôt comme celui-ci: / process / calc1.
Maintenant, je voudrais transférer le dépôt "/ calc1" sur le serveur B (j'obtiens / process / calc1), et supprimer "calc1" du serveur A.
... Lors d'un autre calcul, j'obtiens "/ process / calc2" sur le serveur A, l'idée est aussi de déplacer "calc2" dans le répertoire "/ process /" sur le serveur B, alors j'ai maintenant sur le serveur B:
- / process / calc1
- / process / calc2
(et / process / sur le serveur A est vide).
Comment rsync gérera les conflits (sur le serveur B) si j'ai un autre dossier comme "/ process / calc1" sur le serveur A après un nouveau calcul (si "/ process / calc1" existe déjà sur le serveur B)?
Est-il possible d'ajouter des règles avec rsync et de renommer "/ process / calc1" par "process / calc1R2" sur le serveur B? Et ainsi de suite (ex: calc1R3)?
Merci.
la source
Comme son nom l'indique, rsync est utilisé pour synchroniser les fichiers. Lorsque "synchronisé", cela signifie que les fichiers sur la source et la destination sont les mêmes. Cela ne semble pas être ce que vous voulez faire.
Il semble que vous souhaitiez simplement déplacer certains fichiers. Vous n'avez pas besoin d'utiliser rsync pour cela. Il semble que vous utilisiez un linux ou un BSD. Vous pouvez utiliser mv -n sur ssh. L'option -n ne remplace pas les fichiers existants. Ce n'est pas 100% automatique. Cependant, je ne vois pas comment le fichier pourrait déjà exister dans votre cas. Les fichiers seront copiés de la source vers la destination, puis supprimés de la source. Voulez-vous exécuter à nouveau les mêmes calculs? Est-ce pour cela que vous vous retrouverez avec des fichiers du même nom? Je suggère d'ajouter un numéro de série ou de lot au nom du dossier. Vous voudriez que ce soit clair de toute façon. Avez-vous un contrôle sur la façon dont le dossier est nommé? Plus de détails? Je recommanderais de mettre les commandes dans un script bash ou similaire.
la source
Pour SSH, en résumé, utilisez ceci:
Tout est expliqué dans rsync (1).
Quant à l'écrire pour un cronjob, pour rsync sur ssh automatiquement sans exiger de mot de passe, regardez aussi ssh-agent (1).
la source