J'utilise unison
pour synchroniser les données avec un serveur, et j'ai récemment créé un cronjob pour cela. Le cronjob est en cours d'exécution au démarrage et enregistre la sortie dans un fichier journal. (informations supplémentaires ci-dessous).
Le problème que j'ai est que l'unisson a beaucoup de sortie, et je voudrais seulement enregistrer le résumé dans le fichier journal. Y-a-t-il un moyen de faire ça? Je n'ai pas trouvé de moyen de rendre l'unisson moins verbeux, alors j'ai pensé que la sortie pouvait être filtrée d'une manière ou d'une autre - je ne saurais tout simplement pas comment.
Merci!
Information additionnelle:
À l'heure actuelle, le fichier journal se présente comme suit:
Contacting server...
Connected [//theserver//share/HDA_DATA/elrudi -> //thelaptop//home/elrudi]
Looking for changes
\ syncAll/Code/Aptana/T...avascript library code assist.txt
\ syncAll/Code/develope...nk/20070607 contacten (INDEX).xls
\ syncAll/Code/sourcefi...okexport/photos/10152112061815397
| syncAll/Code/Python/d...rawable-hdpi/ic_action_search.png
(... many many lines ...)
| syncAll/Work/2008_10 ...profile/StandardLastprofil_H0.xls
| syncAll/Work/2008_10 ...n/Load Profiles/Lastprofil_H0.xls
Waiting for changes from server
Reconciling changes
changed ----> syncAll/scriptfile1.sh
Propagating updates
UNISON 2.40.102 started propagating changes at 12:07:31.55 on 07 Oct 2015
[BGN] Updating file syncAll/scriptfile1.sh from /home/elrudi to //theserver//share/HDA_DATA/elrudi
100% 00:00 ETA
[END] Updating file syncAll/scriptfile1.sh
100% 00:00 ETA
UNISON 2.40.102 finished propagating changes at 12:07:31.61 on 07 Oct 2015
100% 00:00 ETA
Saving synchronizer state
Synchronization complete at 12:07:36 (1 item transferred, 0 skipped, 0 failed)
Je voudrais abandonner les lignes commençant par |
, /
, -
, ou \
(la barre de rotation indiquant qu'un processus n'est pas encore terminé).
Plus d'informations supplémentaires:crontab -e
spectacles
@reboot /home/elrudi/sync.sh -batch 60 >> /home/elrudi/.cronjobs.log 2>&1
Le sync.sh
le script vérifie si le serveur est accessible localement ou à distance et exécute la commande unison
appropriée. Le -batch
le paramètre est ajouté pour que unison
s'exécute sans intervention de l'utilisateur, et le 60
est un temps d'attente (pour s'assurer que unison
ne s'exécute pas avant qu'une connexion soit disponible).
Lorsque vous appelez unison
dans votre sync.sh
le script l'appelle comme suit:
unison ... 2>&1 | grep -vE '^[\|/-]|^$'
Cela supprimera (-v
) toutes les lignes correspondant à l'expression régulière: toutes les lignes commençant par l'un de ces caractères: \|/-
, ou complétez les lignes vides (^$
).
Edit: Si vous voulez que le cronjob soit filtré, utilisez:
@reboot /path/to/sync.sh -batch 60 2>&1 | grep -vE '^[\|/-]|^$' >> /path/to/logfile