
저는 unison
데이터를 서버에 동기화하는 데 사용하고 있으며 최근에 이를 위해 cronjob을 만들었습니다. cronjob은 시작 시 실행되며 출력을 로그 파일에 저장합니다. (아래 추가 정보).
제가 겪고 있는 문제는 unison의 출력이 꽤 많아서 요약만 로그 파일에 저장하고 싶다는 것입니다. 그렇게 할 수 있는 방법이 있나요? 나는 조화를 덜 장황하게 만드는 방법을 찾지 못했기 때문에 출력이 어떻게든 필터링될 수 있다고 생각했습니다. 단지 방법을 모르겠습니다.
감사해요!
추가 정보:
현재 로그 파일은 다음과 같이 표시됩니다.
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)
|
, /
, -
또는 \
(프로세스가 아직 완료되지 않았음을 나타내는 회전 막대) 로 시작하는 줄을 버리고 싶습니다 .
추가 정보:
crontab -e
쇼
@reboot /home/elrudi/sync.sh -batch 60 >> /home/elrudi/.cronjobs.log 2>&1
스크립트 sync.sh
는 서버에 로컬로 연결할 수 있는지 또는 원격으로 연결할 수 있는지 확인하고 적절한 unison
명령을 실행합니다. 사용자 입력 없이 실행 -batch
되도록 매개변수가 추가되었으며 , 이는 대기 시간입니다( 연결이 가능하기 전에 실행되지 않도록 하기 위해 ).unison
60
unison
답변1
unison
스크립트 를 호출할 때 sync.sh
다음과 같이 호출하세요.
unison ... 2>&1 | grep -vE '^[\|/-]|^$'
그러면 -v
정규식과 일치하는 모든 줄이 제거됩니다( ). 해당 문자 중 하나로 시작하는 모든 줄: \|/-
또는 빈 줄이 완성됩니다( ^$
).
편집하다: cronjob을 필터링하려면 다음을 사용하세요.
@reboot /path/to/sync.sh -batch 60 2>&1 | grep -vE '^[\|/-]|^$' >> /path/to/logfile