Quelle est la méthode recommandée pour automatiser une tâche sous Linux?

3

Je suis encore un peu nouveau sur Linux, mais voici ce que j'essaie de faire.

Je dois copier tous les sous-répertoires et fichiers d’un répertoire à un autre tous les 5 minutes environ, les anciennes données étant automatiquement remplacées par les nouvelles données.

J'aimerais aussi que cela fonctionne au démarrage. Est-il possible que cela soit fait? Si oui, de quel programme aurais-je besoin pour planifier l'automatisation et de quelle ligne de commande aurais-je besoin?

Niphoet
la source
Et aussi parce que le site fonctionne mieux (c'est la vraie raison ..)
intuited

Réponses:

5

Je ferais la copie avec

rsync --archive --delete "fromdir/" "todir/"

Cela va être plus efficace que d'utiliser cp, puisque rsync copie uniquement les fichiers qui ont été modifiés, et même alors uniquement les copies sur la modification elle-même, plutôt que le fichier entier.

Si vous préférez qu'il ne supprime pas les fichiers dans todir qui ont été supprimés dans fromdir, vous venez de laisser de côté le --delete option.

le --archive L'option lui dit en gros de préserver l'état des fichiers ainsi que leur contenu. Notez que si vous avez des liens symboliques dans dir1, cela copiera le liens eux-mêmes, et ne pas les fichiers auxquels ils sont liés. Utiliser ce drapeau avec rsync est similaire à l'utilisation cp -a.

Assurez-vous que vous utilisez la barre oblique de fermeture sur fromdir/: cela raconte rsync copier le Contenu de ce répertoire, plutôt que le le répertoire lui-même . En d'autres termes, si vous omettre le final /, vous allez vous retrouver avec

todir/
todir/stuff
todir/fromdir/
todir/fromdir/morestuff

plutôt que

todir/
todir/morestuff
intuited
la source
+1 pour améliorer ma réponse!
BloodPhilia
+1 pour la coopération! En fait, je ne peux pas, j'ai déjà voté votre réponse au début.
intuited
3

Vous devez mettre un script dans cron, comment faire ceci, lisez ceci: http://www.foogazi.com/2006/12/07/understand-cron-jobs-in-5-minutes/

Au lieu d'un script, vous pouvez taper une commande à exécuter dans votre crontab, qui ressemblerait à ceci:

*/5 * * * * cp -r /fromdir /todir

Ajoutez également à / etc / crontab la ligne suivante pour l'exécuter au démarrage:

@reboot root cp -r /fromdir /todir
BloodPhilia
la source