2010-08-24 18 views
1

J'ai:rsync: vote pour les nouveaux fichiers

$ rsync -azv [email protected]:/smb/Data/*/*/* ~/rsynced_samples/

Et je veux qu'il fonctionne toujours, la synchronisation tout nouveau fichier dès qu'il apparaît sur myserver:

(spécifiant un intervalle d'interrogation, tel que 4 secondes serait un bon ok)

+2

Si "une minute" était un bon compromis, vous pouvez simplement utiliser cron. – Andrew

Répondre

2

Au lieu de rsync vous pouvez utiliser inotifywait qui utilise les déclencheurs de changements de fichiers spécifiques au noyau.

Ce script (inotify.sh) peut vous donner une idée:

#!/bin/bash 

directory=$1 

inotifywait -q -m --format '%f' -e modify -e move -e create -e delete ${directory} | while read line 

do 
    echo "doing something with: $line"; 

    # for example: 
    # cp $line to <somewhere> 

Vous pouvez appeler ce script spécifiant le répertoire "moniteur", de cette façon

./inotify.sh ~/Desktop/ 

Le ligne $ variable contient le chemin d'accès complet du fichier.

Si vous souhaitez limiter seulement les fichiers nouvellement créés que vous pouvez utiliser sur le drapeau « -e créer » Cron

0

Utilisez pour mettre en place un contrôle en fonction de votre intervalle de temps (par exemple, chaque minute, peut-être ?). Ce lien devrait aider: http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

Notez qu'un onglet Cron est configuré sur votre côté machine, pas dans votre script bash

également utile: http://benr75.com/pages/using_crontab_mac_os_x_unix_linux

et voici un exemple de code:

1) crontab -e // cela ouvre votre crontab actuelle ou en crée une si elle n'existe pas 2) entrez: * * * * * fichier.sh >> log.txt // ceci redirigera la sortie de votre fichier dans un fichier journal et exécutez-le chaque minute.

espérons que cela aide