PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : automatisch entpacken



bob_morane77
26-03-2002, 10:12
hi, habe wiedermal ein problem.

ich bekomme jeden tag per ftp eine datei auf meinen server geschoben.
leider immer zu unregelmäßigen zeiten.
die hat einen bestimmten namen, der jeden tag (durch datum) wechselt.

diese datei heißt *.dat und soll ein log.gzm datei sein.
probehalber habe ich sie mal unter windows ausgepackt, das geht.

jetzt mein problem :

ich bräuchte einen cron-job, der jeden´stunde prüft ob eine neue datei da ist. wenn ja, muß diese ausgepackt werden und in ein verzeichnis verschoben werden, danach muß die alte datei gelöscht werden.

ich hoffe, das ist die richtige abteilung und ihr könnt mir helfen !

thx

deac
26-03-2002, 14:48
fragen:
datei-typ der zu entpackenden datei (tar/zip/gz/tar+gz/tar+bz2/bz2)?
lokal / remote entpacken (vom cron-job aus gesehen)?
dateinamenaufbau?

bob_morane77
26-03-2002, 15:05
die datei soll als gzip-format abgelegt werden.
leider weiß ich es erst in 2 tagen 100%tig.
aber gehen mir mal davon aus, das es so ist.


bis jetzt kam sie immer per mail !
Betreff war :

*.200203240000-2400-0.log.gzm

und es hing eine ATT00001.DAT dran

nun habe ich es auf ftp umgestellt, dauert aber 2 tage ;-(

egal ! der cronjob soll local laufen

deac
26-03-2002, 21:59
ich gehe jetzt mal von diesem dateinamenformat aus: TAG_MONAT_JAHR.gz (26_03_2002.gz)

gunzip "pfad/$(date +'%d_%m_%Y.gz')"
dies entpackt dann die datei. mit cron-jobs kenne ich mich nciht aus, aber werde mal schnell schauen wie das geht.

bob_morane77
26-03-2002, 23:19
danke !! hast mich schon auf den rechten weg gebracht.

ich habe auch schon a bissl probiert.

die datei kommt jetzt auf meinen server.
ich benenne sie automatisch um. (da sie als *.dat kommt)
dann entpacke ich sie mit gunzip.
dann habe ich die datei.

soweit funzt es.

jetzt müßte ich die datei noch irgendwie filtern !!!!!

da sind komentarzeilen mit # drin, die müssen raus und
eine teilweise vorkommende fehlerzeile müßte raus.
habe es mit grep probiert, funzt aber irgendwie nicht.

deac
26-03-2002, 23:42
zum filtern benutze ich immer sed. ist einfach genialer als grep. hab auch schon überlegt auf awk umzusatteln.:D

sed -ne '/^#/!p'
wenn du das ganze noch pipen möchtest, um zeit zu sparen, dann kannst du dies zb. so machen:

gunzip -c "pfad/$(date +'%d_%m_%Y.gz')" | sed -ne '/^#/!p' > ziel.dat
anschließend einfach die originaldatei löschen.;)