
Ich verwende es, unison
um Daten mit einem Server zu synchronisieren, und habe vor Kurzem einen Cronjob dafür erstellt. Der Cronjob wird beim Start ausgeführt und speichert die Ausgabe in einer Protokolldatei. (weitere Informationen unten).
Mein Problem ist, dass Unison ziemlich viel ausgibt und ich nur die Zusammenfassung in der Protokolldatei speichern möchte. Gibt es eine Möglichkeit, das zu tun? Ich habe noch keine Möglichkeit gefunden, Unison weniger ausführlich zu machen, also dachte ich, vielleicht kann man die Ausgabe irgendwie filtern – ich wüsste nur nicht wie.
Danke!
Zusätzliche Information:
Derzeit sieht die Protokolldatei folgendermaßen aus:
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)
Ich würde die Zeilen löschen wollen, die mit |
, /
, -
, oder beginnen \
(der sich drehende Balken, der anzeigt, dass ein Vorgang noch nicht abgeschlossen ist).
Weitere Zusatzinfos:
crontab -e
Shows
@reboot /home/elrudi/sync.sh -batch 60 >> /home/elrudi/.cronjobs.log 2>&1
Das sync.sh
Skript prüft, ob der Server lokal oder remote erreichbar ist, und führt den entsprechenden unison
Befehl aus. Der -batch
Parameter wird hinzugefügt, damit unison
es ohne Benutzereingabe ausgeführt wird, und es 60
gibt eine Wartezeit (um sicherzustellen, unison
dass es nicht ausgeführt wird, bevor eine Verbindung verfügbar ist).
Antwort1
Wenn Sie unison
Ihr sync.sh
Skript aufrufen, rufen Sie es wie folgt auf:
unison ... 2>&1 | grep -vE '^[\|/-]|^$'
Dadurch werden alle Zeilen entfernt ( -v
), die dem regulären Ausdruck entsprechen: Alle Zeilen, die mit einem dieser Zeichen beginnen: \|/-
oder komplette Leerzeilen ( ^$
).
Bearbeiten: Wenn Sie möchten, dass der Cronjob gefiltert wird, verwenden Sie:
@reboot /path/to/sync.sh -batch 60 2>&1 | grep -vE '^[\|/-]|^$' >> /path/to/logfile