7 votes

Utiliser rsync pour copier automatiquement un fichier dans un autre dossier

J'ai trouvé cette commande pour copier le contenu de la source dans un dossier de destination.

rsync -r source/* destination

Ce que j'aimerais vraiment, c'est que cette commande soit exécutée automatiquement chaque fois qu'un fichier est ajouté à mon dossier source.

Est-ce possible ?

6voto

StephenCollins Points 1121

Vous pouvez utiliser Automator et les actions de dossier pour surveiller le dossier et exécuter le script.

Lorsque vous lancez Automator et que vous choisissez Nouveau, l'une des options proposées consiste à créer une "action de dossier". En haut de l'écran, après avoir sélectionné Action de dossier, vous avez la possibilité de choisir un dossier à "surveiller".

enter image description here

Dans votre cas, je pense que vous devriez sélectionner "Utilities" dans la colonne la plus à gauche, puis faire glisser "Run Shell script" de la deuxième colonne dans la fenêtre du flux de travail.

enter image description here

C'est ici que vous écrirez le script que vous souhaitez exécuter lorsque des modifications sont apportées au dossier. Dans ce cas, votre script rsync.

enter image description here

3voto

Billy McCloskey Points 183

Une solution rapide et pratique à cette question qui est portable sur toutes les plates-formes UNIX (non spécifique à OSX, mais utilisable sous HP-UX, Solaris, Linux, etc.) consiste à appeler rsync à partir de la crontab de l'utilisateur, et à laisser la logique de synchronisation des dossiers de rsync déterminer elle-même si le dossier a été modifié ou non. Un raffinement dans l'utilisation de cette méthode consiste à appeler rsync depuis la crontab de l'utilisateur. solution portable est d'entourer l'appel à rsync d'un test de date entre un fichier touché (en fait son heure de modification) et l'heure de modification du dossier à synchroniser, mais cela n'est pas nécessaire à moins que les dossiers à synchroniser ne soient très grands (profonds et/ou larges). Un dossier unique avec plusieurs sous-dossiers est idéal pour cette solution.

Une entrée pour la crontab qui exécutera le cas "rapide et sale" à un intervalle d'interrogation d'une minute est la suivante :

# run sync every minute:
* * * * * /usr/bin/rsync -avz $HOME/source_path $HOME/target/path 1>> $HOME/.my_sync.log 2>&1

Cela devrait suffire pour le cas rapide et sale - en d'autres termes, les dossiers seront mis à jour dans la minute qui suit la modification. Vérifiez le fichier ~/.my_sync.log pour les statuts d'exécution - ce fichier va croître sans limites avec le temps, donc une fois que l'opération correcte a été déterminée, remplacez ">>" par ">" pour au moins enregistrer le statut le plus récent de rsync.

Un autre point est que le commutateur -z de rsync doit être utilisé lors de la synchronisation sur un réseau. L'option -z permet d'utiliser la compression pour les transferts de fichiers sur le réseau. Lorsque vous utilisez rsync pour synchroniser des dossiers sur des systèmes de fichiers locaux à un serveur, le commutateur -z peut généralement être omis.

Note sur l'utilisation de la crontab :

Si vous ne pouvez pas éditer votre crontab avec :

$ crontab -e

Ensuite, vous devrez vous donner la permission d'avoir une crontab. Voir la page de manuel de crontab. Sous OSX, c'est ce qu'il faut faire - le changement est légèrement différent sur les systèmes linux : En résumé, assurez-vous que votre nom d'utilisateur se trouve dans /usr/lib/cron/cron.allow ou que /usr/lib/cron/cron.allow n'existe pas. Assurez-vous également que votre nom d'utilisateur n'est pas dans /usr/lib/cron/cron.deny.

2voto

Oskar Points 1242

L'outil que j'utiliserais pour contrôler vos dossiers est le suivant Noisette . Il serait excellent de lancer le script et vous pourriez finir par l'utiliser pour de nombreux autres dossiers au fil du temps, à mesure que vous pensez à des choses que vous pourriez automatiser.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X