Die drei aktuellsten Dateien kopieren

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von lalyboy, 05.08.2005.

  1. #1 lalyboy, 05.08.2005
    lalyboy

    lalyboy Grünschnabel

    Dabei seit:
    20.11.2003
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo Zusammen

    Ich suche ein Weg wie ich die letzen 3 Dateien kopieren kann. Ich habe schon viel gegoogelt, aber noch kein geeignetes Skript gefunden.

    Ich würde gerne die drei aktuellsten Logdateien von einer DB kopierung und auf einem anderen Verzeichnis speichern. Es werden die Log nach einer fortlaufenden Nummer generiert. Vielleicht weiss jemand ein Befehl oder Parameter, wie man die letzen drei Datein auflisten oder kopieren kann? :hilfe2:

    Im Verzeichnis /sapdb/backup werden regelmässig die Logs auf Files geschrieben.

    -rw-rw---- 1 sqdvrp sapsys 231473152 Jun 1 12:00 log1.220
    -rw-rw---- 1 sqdvrp sapsys 217645056 Jun 2 12:01 log1.221
    -rw-rw---- 1 sqdvrp sapsys 175112192 Jun 3 12:00 log1.222
    ...
    ...
    ...
    -rw-rw---- 1 sqdvrp sapsys 819396608 Jul 25 20:41 log1.242
    -rw-rw---- 1 sqdvrp sapsys 819396608 Jul 27 11:11 log1.243
    -rw-rw---- 1 sqdvrp sapsys 819396608 Aug 2 19:27 log1.244

    Freundliche Grüsse

    0.B
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 MrFenix, 05.08.2005
    MrFenix

    MrFenix Executor

    Dabei seit:
    16.10.2004
    Beiträge:
    480
    Zustimmungen:
    0
    Ort:
    Siegen, NRW
    Also ich würde es so machen:
    Code:
    #!/bin/bash
    count=0
    for i in `ls`
    do 
       count=$count+1 
       files[$count]=$i 
    done; 
    for ((i=count-2; i <= count; i++))
    do 
       echo ${files[i]}
    done;
    
     
  4. #3 Wolfgang, 05.08.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Immer die drei neusten Dateien nach der ctime liefert dir auch folgender Einzeiler.
    cd /quelle;for i in $(ls -A1t log* |tail -n3); do echo $i;done
    copieren dann halt ensprechend
    cd /quelle;for i in $(ls -A1t log* |tail -n3); do cp $i /zielpath/$i ;done
    die drei ältesten gleich löschen
    cd /quelle;for i in $(ls -A1tr log* |tail -n3); do rm -f $i;done

    Gruß Wolfgang
     
  5. #4 lalyboy, 08.08.2005
    lalyboy

    lalyboy Grünschnabel

    Dabei seit:
    20.11.2003
    Beiträge:
    5
    Zustimmungen:
    0
    Vielen Dank

    Für Eure Tipps. :)

    Habe nun ein Funktionsfähiges Script, dass über cron gestartet wird.
     
  6. #5 lalyboy, 10.08.2005
    lalyboy

    lalyboy Grünschnabel

    Dabei seit:
    20.11.2003
    Beiträge:
    5
    Zustimmungen:
    0
    Also ich habe das Skript von MrFenix genommen und ein wenig angepasst. Mittels Cronjob wird das Skript jeden Tag einmal ausgeführt.

    Für meinen Bedarf reicht es.
    Es wäre nur interessant zu sehen, wie das Skript das Ziel mit der Quelle vergleichen könnte, um zu sehen ob es alte Files im Zielverzichnis löschen muss und/oder neue kopieren soll.

    Code:
    #!/bin/bash
    
    source=/xxx/backup
    destination=/yyy/backup
    cd $source
    
    rm $destination/log1.*
    
    count=0
    for i in `ls`
    do
       count=$count+1
       files[$count]=$i
    done;
    for ((i=count-1; i <= count; i++))
    do
       cp -v ${files[i]} $destination/${files[i]}
    done;
    
     
  7. #6 Wolfgang, 10.08.2005
    Zuletzt bearbeitet: 10.08.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Mal abgesehen davon, dass du damit nur die letzte statt der letzten drei Dateien kopierst, ist es viel einfacher mit rsync zu arbeiten.
    Wenn beide Verzeichnisse immer gleich sein sollen, findet rsync nämlich selber raus, was abgeglichen werden soll und kopiert nur die neu hinzugekommenen Dateien.
    Damit ersparst du dir die ganzen Schleifen. Dein /source kann so aber überlaufen.
    Deshalb würde ich das per cronjob so machen.
    erst die Dateien die z.B. älter als 5 Tage im Quellverzeichnis sind finden und löschen:

    #!/bin/bash

    source=/xxx/backup/
    destination=/yyy/backup
    cd $source
    find . -type f -name "log.*" -ctime +5 -exec rm -f {} \;
    #nun abgleichen mit rsync
    rsync --delete -avR $source $destination
    # damit hast du was du willst

    Die -ctime +5 kannst du dir anpassen wie du willst.
    Brauchst dich also um das Zielverzeichnis nicht mehr kümmern, das macht rsync --delete für dich.
    ;)
    Gruß Wolfgang
    EDIT rm die Option -f dazu, sonst läuft es uU. nicht 8)
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Die drei aktuellsten Dateien kopieren

Die Seite wird geladen...

Die drei aktuellsten Dateien kopieren - Ähnliche Themen

  1. Collabora Office 5.0 mit drei Jahren Unterstützung veröffentlicht

    Collabora Office 5.0 mit drei Jahren Unterstützung veröffentlicht: Collabora Office, die Unternehmensversion von Libre Office ist als Version 5.0 erhältlich. Weiterlesen...
  2. Linux Foundation mit drei neuen Mitgliedern

    Linux Foundation mit drei neuen Mitgliedern: Die Linux Foundation vergrößert sich weiter und begrüßt nun weitere drei Mitglieder. In bei dem Industriekonsortium zur Förderung von Linux sind...
  3. IBM stellt drei neue Linux-Server vor

    IBM stellt drei neue Linux-Server vor: IBM will noch in diesem Jahr drei neue Linux-Server nach der OpenPOWER-Spezifikation ausliefern. Die Server sind für BigData und Cloud-Computing...
  4. Mozilla: Drei Prinzipien für das Blockieren von Inhalten

    Mozilla: Drei Prinzipien für das Blockieren von Inhalten: Mozilla beobachtet nach eigenen Angaben die aktuellen Entwicklungen beim Blockieren von Inhalten und hat nun drei Prinzipien vorgeschlagen, die...
  5. Core Infrastructure Initiative fördert drei Sicherheitsinitiativen

    Core Infrastructure Initiative fördert drei Sicherheitsinitiativen: Die von der Linux Foundation finanzierte »Core Infrastructure Initiative« hat jetzt drei weitere Projekte bekannt gegeben, die gefördert werden...