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. Zitieren
bigvic Geschrieben 1. Oktober 2007 Geschrieben 1. Oktober 2007 Hi, mach das ganz mit dem find-Kommando. Alles andere ist supoptimal. ciao, vic Zitieren
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. Zitieren
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. Zitieren
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. Zitieren
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. Zitieren
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 Zitieren
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. Zitieren
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. Zitieren
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 Zitieren
Daether Geschrieben 2. Oktober 2007 Autor Geschrieben 2. Oktober 2007 Ich danke euch für eure Hilfe Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.