Bash: Jeweils paarweise die neuere Datei finden?

26/06/2015 - 16:01 von herr.hagedorn | Report spam
Hallo.
Folgendes Problem, das ich gerne per bash-Script lösen würde:
Bei einem Backup werden lauter Dateinamen angelegt, die so heißen:

vzdump-qemu-502-2015_06_17-02_00_02.vma.gz
vzdump-qemu-502-2015_06_24-02_00_01.vma.gz
vzdump-qemu-503-2015_06_17-02_05_19.vma.gz
vzdump-qemu-503-2015_06_25-02_05_19.vma.gz

usw.
Dabei ist die erste Zahl die ID der gespeicherten VirtualMachine und
dahinter steht der Zeitstempel.

Nun ist es so, dass von allen Dateien jeweils zwei Backups vorhanden
sind, die natürlich zu verschiedenen Zeiten erstellt wurden. Ich bin auf
der Suche nach einem kurzen Code-Schnipsel, der mir immer die neuere der
beiden Dateien liefert, so dass ich am Ende eine Liste habe mit

502 (vom) 24.6.
503 (vom) 25.6.
usw

Ich habe schon etwas mit diesen Befehlen herumprobiert:

ls -tl *.gz | awk '{print $9}' |sort -n

vzdump-qemu-502-2015_06_17-02_00_02.vma.gz
vzdump-qemu-502-2015_06_24-02_00_01.vma.gz
(also beide Treffer)


aber das liefert mir bei den VMs immer beide und keine eindeutigen
Eintràge (pro VM). Hat jemand eine Idee, wie man das elegant
vereinfachen kann?

und find . -mtime ...
hilft mir auch nicht so richtig weiter, da das Datum von VM zu VM schwankt...

Danke für einen guten Tipp...
Michael
 

Lesen sie die antworten

#1 Juergen Ilse
26/06/2015 - 16:27 | Warnen spam
Hallo,

wrote:
Folgendes Problem, das ich gerne per bash-Script lösen würde:
Bei einem Backup werden lauter Dateinamen angelegt, die so heißen:

vzdump-qemu-502-2015_06_17-02_00_02.vma.gz
vzdump-qemu-502-2015_06_24-02_00_01.vma.gz
vzdump-qemu-503-2015_06_17-02_05_19.vma.gz
vzdump-qemu-503-2015_06_25-02_05_19.vma.gz

usw.
Dabei ist die erste Zahl die ID der gespeicherten VirtualMachine und
dahinter steht der Zeitstempel.

Nun ist es so, dass von allen Dateien jeweils zwei Backups vorhanden
sind, die natürlich zu verschiedenen Zeiten erstellt wurden. Ich bin auf
der Suche nach einem kurzen Code-Schnipsel, der mir immer die neuere der
beiden Dateien liefert, so dass ich am Ende eine Liste habe mit

502 (vom) 24.6.
503 (vom) 25.6.
usw

iCH HABE SCHON etwas mit diesen Befehlen herumprobiert:

ls -tl *.gz | awk '{print $9}' |sort -n

vzdump-qemu-502-2015_06_17-02_00_02.vma.gz
vzdump-qemu-502-2015_06_24-02_00_01.vma.gz
(also beide Treffer)



Mein Tip waere, jeweils fuer die Dateien jeder VM einzeln die neueste Datei
herauszusuchen. Um bei deinem Beispiel zu bleiben:

~/bzdump $ ls -1
vzdump-qemu-502-2015_06_10-02_03_01.vma.gz
vzdump-qemu-502-2015_06_17-02_00_02.vma.gz
vzdump-qemu-502-2015_06_24-02_00_01.vma.gz
vzdump-qemu-503-2015_06_17-02_05_19.vma.gz
vzdump-qemu-503-2015_06_25-02_05_19.vma.gz
~/bzdump $ ls -1 *-502* | sort -r -t - -k 4,5 | head -1
vzdump-qemu-502-2015_06_24-02_00_01.vma.gz
~/bzdump $

Hilft dir das weiter? Oder benoetigst du noch etwas zur Ermittlung der
Liste der IDs der verschiedenen VMs sowie ein Beispiel, wie du darueber
eine Schleife laufen lassen kannst, in der dann der obenstehende Befehl
(mit der jeweils aktuell abzuarbeitenden "ID der VM") steht?
Die Liste der IDs koenntest du z.B. mit:

ls -1 vzdump-qemu* | cut -d - -f 3 | sort -u

ermitteln ...

Tschuess,
Juergen Ilse ()
Ein Domainname ist nur ein Name, nicht mehr und nicht weniger.
Wer mehr hineininterpretiert, hat das Domain-Name-System nicht
verstanden.

Ähnliche fragen