Daether Geschrieben 1. Oktober 2007 Geschrieben 1. Oktober 2007 Hi, ich bräuchte nur ein kleines Shellskript zum Backup eines Ordners. Bis jetzt sieht das ganze so aus : #!/bin/bash rsync -avz root@xxx.xxx.xxx.xxx:/var/hier_liegt_mein_original/* /var/hier_liegt_mein_backup/ for i in `/var/hier_liegt_mein_backup/` ; do if [ $i älter als x Monate ] rm `/var/hier_liegt_mein_backup/`+$i ; fi done Das Skript sollte eigendlich nichts anderes machen, als den RSYNC ausführen und danach zu alte Dateien löschen. 1. Weiß ich nicht wie ich die "älter als"-Abfrage durchführen kann. 2. Bin ich mir nicht sicher ob die Zeile "rm `/var/hier_liegt_mein_backup/`+$i ;" so erlaubt ist.
bigvic Geschrieben 1. Oktober 2007 Geschrieben 1. Oktober 2007 Hi, mach das ganz mit dem find-Kommando. Alles andere ist supoptimal. ciao, vic
carstenj Geschrieben 1. Oktober 2007 Geschrieben 1. Oktober 2007 Hi, rsync kann auch deleten. Guck dir mal die Optionen an. Ansonsten würde ich dir find +mtime empfehlen, das ist meiner Meinung nach das Einfachste: Suche nach der Zeit mit find und mtime Mit Exec kannst du dann auf die gefundenen Dateien ein Kommando ausführen, in deinem Fall eben rm. Vorher evtl. mal mit ls anzeigen lassen, ob das auch die gewünschten Dateien sind, sonst kann es schonmal Ärger geben.
Daether Geschrieben 1. Oktober 2007 Autor Geschrieben 1. Oktober 2007 Für exec würde ich ja wieder php nutzen. Geht das überhaupt nicht per Shellskript.
carstenj Geschrieben 1. Oktober 2007 Geschrieben 1. Oktober 2007 Hi, doch, man kann sich da was zusammenstricken. Aber wieso willst du selber was basteln, wenn es doch Standardwerkzeuge gibt, die das Problem eleganter, schneller und richtiger lösen? Exec ist eine Option im Find. Von PHP lese ich jetzt hier das erste Mal etwas.
lupo49 Geschrieben 1. Oktober 2007 Geschrieben 1. Oktober 2007 find /home/lupo49/ -name "foo.*" -mtime -40 | xargs rm Wobei 40 die Zeit in Minuten ist.
bigvic Geschrieben 1. Oktober 2007 Geschrieben 1. Oktober 2007 Hi, xargs? Wieso nicht rm im exec wie carstenj gesagt hat? Ne pipe ist unnötig. ciao, vic
Schlaubi Geschrieben 1. Oktober 2007 Geschrieben 1. Oktober 2007 Weil mit -exec bei sehr vielen tausend Dateien die Performance in die Knie geht! Die xargs-Variante ist Faktor 15x schneller.
lupo49 Geschrieben 1. Oktober 2007 Geschrieben 1. Oktober 2007 Weil mit -exec bei sehr vielen tausend Dateien die Performance in die Knie geht! Die xargs-Variante ist Faktor 15x schneller. Genauer: Wenn du -exec verwendest, wird fuer jedes Loeschen einer Datei ein neuer Prozess erzeugt. Das ist ziemlich unperformant und wirkt sich bei vielen Dateien recht negativ aus. Das Programm xargs bastelt dir dynamisch den Parameter (die Dateien die geloescht werden sollen) zusammen und uebergibt ihn an rm. So das du mit einem einzigen rm-Prozess alle Dateien geloescht bekommst.
bigvic Geschrieben 1. Oktober 2007 Geschrieben 1. Oktober 2007 Hi, alright - stimmt, ne gute Sache. Muss aber auch auf die Nachteile achten: iX 7/2001, S. 164: GNU-Tips ciao, vic
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden