bruzzler: Per Shell Dateien Zippen und löschen

Hallo,

ich hoffe jemand kann mir helfen.
Und zwar würde ich gerne in einem Ordner ein SH Script erstellen, dass in diesem Ordner *.log files sucht, die größer als X sind, diese files dann in ein Zip oder Tar packt, und danach dann diese *.log files löscht.

Was ich versucht habe ist:

  
#!/bin/sh  
date=$(date +"%m%d%Y")  
  
find . -size +400k -exec -zip total_lokal_logs_$date {} +  
find . -name *.log -size +10000k -exec rm {} \;  
  

Das klappt aber irgendwie nicht, zumindest nicht das mit dem Zippen, das löschen schon :)

Hat jemand ne Idee?
Danke und viele Grüße

  1. hi,

    Hallo,

    ich hoffe jemand kann mir helfen.
    Und zwar würde ich gerne in einem Ordner ein SH Script erstellen, dass in diesem Ordner *.log files sucht, die größer als X sind, diese files dann in ein Zip oder Tar packt, und danach dann diese *.log files löscht.

    Was ich versucht habe ist:

    #!/bin/sh
    date=$(date +"%m%d%Y")

    find . -size +400k -exec -zip total_lokal_logs_$date {} +
    find . -name *.log -size +10000k -exec rm {} ;

      
    nach -exec kommt doch dann der neue befehl, oder? also nicht "-zip"???  
      
    eher: tar -czf archiv.tar.gz verzeichnis/  
      
    (zip kenne ich nicht, was nichts heißen soll...)  
      
    mfg  
      
    tami
    
    1. Das klappt so leider auch nicht, jetzt wird auch nicht mal mehr das file gelöscht.

      1. hi,

        Das klappt so leider auch nicht, jetzt wird auch nicht mal mehr das file gelöscht.

        http://de.wikipedia.org/wiki/Find#exec

        muss ja irgendwie ...;

        s.a. http://www.linux-club.de/viewtopic.php?f=21&t=58811 bzw. google mit find und exec und tar ...;

        mfg

        tami

        1. Moin,

          s.a. http://www.linux-club.de/viewtopic.php?f=21&t=58811 bzw. google mit find und exec und tar ...;

          Nicht direkt, -exec wird dort nicht verwendet. Auf diesen Fall hier übertragen würde der Befehl lauten:

          find . -size +400k -print0 | xargs -0 tar -czf tarball.tar.gz  
          
          

          Funktioniert, falls die Kompressionsmethode egal ist.

          Grüße Marco

          --
          Ich spreche Spaghetticode - fließend.
    2. Moin,

      eher: tar -czf archiv.tar.gz verzeichnis/

      Dort wird dann die Dateigröße nicht berücksichtigt, was ja scheinbar ein Kriterium ist.

      Grüße Marco

      --
      Ich spreche Spaghetticode - fließend.
  2. Moin,

    find . -size +400k -exec -zip total_lokal_logs_$date {} +

    find . -size +400k -exec zip total_lokal_logs_$date {} ;

    (ungetestet)

    Grüße Marco

    --
    Ich spreche Spaghetticode - fließend.
    1. Moin,

      find . -size +400k -exec -zip total_lokal_logs_$date {} +

      find . -size +400k -exec zip total_lokal_logs_$date {} ;

      (ungetestet)

      Grüße Marco

      Danke, ich habs jetzt hinbekommen:

        
      find . -name *.log -size +5M  -exec zip -r logs_`date +%d.%m.%Y_%H.%M`.zip {} +  
      find . -name *.log -size +5M -exec rm {} \;  
      find . -type f -mtime +20 -delete
      
      1. Moin,

        find . -name *.log -size +5M -exec rm {} ;

        Warum nutzt du hier nicht auch einfach -delete ? :)

        Grüße Marco

        --
        Ich spreche Spaghetticode - fließend.
  3. Tach,

    Und zwar würde ich gerne in einem Ordner ein SH Script erstellen, dass in diesem Ordner *.log files sucht, die größer als X sind, diese files dann in ein Zip oder Tar packt, und danach dann diese *.log files löscht.

    die Standardlösung dafür wäre logrotate.

    mfg
    Woodfighter