Sebastian: Backup mit TAR - aber nur *.php etc.

Hallo,
ich möchte auf einer Linux-Konsole (bash) ein Backup mit tar machen und habe nun mehrere Unterverzeichnisse mit mehrere Dateitypen.
Ich habe nun aber nur ein exclude-Attribut gefunden und leider kein include-only-Attribut :-(
Ich möchte nur *.php, *.html, und *.csv backupen bzw. die eben einmal am Tag und alle anderen nur einmal die Woche (jeweils per Cronjob getrennt voneinander)
Habe nun schon die manpage, die Hilfe und Google befragt, aber bisher keine Möglichkeit gefunden, wie ich _nur_ *.csv, *.php und *.html einpacken lassen kann - ohne eben *.jpg/png/mpg/mpeg usw. usf.
Und tar -$attribute $filename /pfad/*.php geht nicht rekursiv und so eben nur mit dem Hauptverzeichnis - und da auch nur mit einer Dateiendung...

Und einfach alles einpacken wäre doof - nur html/php/csv sind zusammen ca. 50MB ungepackt und alle Dateien zusammen sind ca. 9GB...

Weiss vielleicht jemand Rat?

Danke, Basti

  1. Ich grüsse den Cosmos,

    Weiss vielleicht jemand Rat?

    man find

    Möge das "Self" mit euch sein

    --
    Fragt ein Atom das andere: Hast du mein Elektron gesehen? Ich bin heute so positiv.
    ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
  2. Hallo,
    habe es nun mithilfe von u.a. Manuel im Forum, dem Chat, Nachdenken und Ausprobieren geschafft :-)

    Fürs Archiv:

    Zuerst habe ich per find folgendes gesucht:

    find ORDNERNAME -name '*.php' -o -name '*.csv' -o -name '*.html'

    hier kann man per  "-o -name '*.DATEIENDUNG'" beliebig viele Dateiendungen hinzufügen

    find gibt einem dann alle Dateien, die dazu gefunden werden, in einer Liste aus

    Ans Ende dieses Queries dann ein > ergebnisliste.txt

    So hat man dann eine Liste aller gefundenen Dateien mit Pfadangabe in der Datei ergebnisliste.txt

    Komplett gibt man in der Shell also ein:

    find ORDNERNAME -name '*.php' -o -name '*.csv' -o -name '*.html' > ergebnisliste.txt

    Diese gespeicherte Datei kann man nun widerum als Basis für tar verwenden:

    tar -cvzf archivname.tgz -T ergebnisliste.txt

    durch das -T ergebnisliste.txt weiss tar nun, dass es eine Liste der zu archivierenden Dateien in der Datei ergebnisliste.txt findet.

    Das ganze packt tar dann - in diesem Beispiel mit gzip-Komprimierung - zusammen in das Archiv archivname.tgz
    Und zwar inklusive Verzeichnisstruktur und Dateirechten.

    Noch ein Hinweis:
    date +%Y-%m-%d spuckt das aktuelle Datum im Format 2007-01-01 aus (Jahr-Monat-Tag).
    Wenn man also folgendes schreibt:

    tar -cvzf backup_files__date +%Y-%m-%d.tgz -T ergebnisliste.txt

    kommt dabei z.B. der Dateiname "backup_files__2007-01-01.tgz" heraus. So weiss man immer, von wann das Backup stammt.

    Das ganze kann man nun noch automatisieren, indem man den ganzen Klabautsch in eine Textdatei schreibt und diese *.sh nennt.

    Hier für ganz Faule die ready-to-copy *.sh-Datei:
       (Für richtig Faule: die Ordner müsst ihr schon selber ersetzen *g*)

    ---------------------------------------------------------

    #In Backupverzeichnis wechseln (Unbedingt beachten, dass das Verzeichnis absolut ist; bei Confixx unter Debian z.B. meist /var/www/webXY/html/DEIN_PFAD)
    cd /VERZEICHNIS_IN_DEM_DAS_BACKUPSCRIPT_GESPEICHERT_IST

    #Dateiliste aller Dateien erstellen, die gebackupt werden sollen (Auch hier muss die Ordnerangabe absolut sein!)
    #     Noch ein Hinweis: es können, wie bereits im Forum beschrieben, beliebig viele Dateiendungen per -o -name '*.dateiendung' hinzugefügt werden
    find /ORDNER_IN_DEM_GESUCHT_WERDEN_SOLL -name '*php' -o -name '*.html' -o -name '*.csv' > filelist_to_backup.txt

    #Dateiliste auf 0777 chmoden, damit die auch sicher gelesen und nachher wieder gelöscht werden kann
    chmod 0777 filelist_to_backup.txt #Hier kann die Ordnerangabe relativ sein, da wir ja schon in dem Verzeichnis sind

    #TarGZIP-Archiv erstellen
    tar -cvzf backup____date +%Y-%m-%d.tgz -T filelist_to_backup.txt

    #Dateiliste löschen
    rm filelist_to_backup.txt

    #fertig

    ---------------------------------------------------------

    Der Vollständigkeit halber: Datenbankbackups kann man z.B. mittels phpmybackuppro (OpenSource) machen.

    Ich hoffe, dass dieser Beitrag auch Anderen weiterhilft und bedanke mich nochmals für jedliche Hilfe von allen :-)

    Gruß, Basti.

    P.S.: Das ganze funktioniert natürlich nur auf Linux-/Unix-Systemen!

    Noch einige Suchbegriffe: Backup Linux ssh shell cronjob nur bestimmte Dateien Dateitypen

    1. Hallo Sebastian,

      ich finde es gut, dass du die Lösung, die du gefunden hast, gepostet hast. So wissen andere Leser, dass dein Problem behoben ist und möglicherweise hilft dein Posting in Zukunft noch anderen, die das gleiche oder ein ähnliches Problem haben.

      Danke und Schöne Grüße,

      Johannes