perl- oder bash-script fuers umbenennen von dateien ab bestimmter grösse
hallo liste!
ich habe ein kleines problem: mein alter 200er idt ist etwas
langsam, wenn ich über den imap einen ordner mit ein paar
tausend nachrichten öffne (verständlich, ist ja nur eine grosse
datei...). da ich meine mails auf keinen fall löschen möchte,
kam mir die idee mit einem kleinen perl- oder bash-script, das
per procmail gestartet werden soll. es soll nachsehen, ob der
ordner (die datei), in den/die mail(s) bei einem match verschoben
werden sollen, mehr als z.b. 4096kbyte gross ist und ihn/sie bei
"true" in "
Hallo, Wolfram Schlich wrote:
ich habe ein kleines problem: mein alter 200er idt ist etwas langsam, wenn ich über den imap einen ordner mit ein paar tausend nachrichten öffne (verständlich, ist ja nur eine grosse datei...). da ich meine mails auf keinen fall löschen möchte, kam mir die idee mit einem kleinen perl- oder bash-script, das per procmail gestartet werden soll. es soll nachsehen, ob der ordner (die datei), in den/die mail(s) bei einem match verschoben werden sollen, mehr als z.b. 4096kbyte gross ist und ihn/sie bei "true" in "
.aktuellesdatum_uhrzeit" umbenennt. da ich aber absolut keinen plan von perl bzw. der bash habe, frage ich einfach mal in die runde... äh... liste :)
<schuss aus der huefte und ungetestet> a) mbox-format ('ordner' ist eine Datei) if [ $(du -b $mbox | cut -f1) -gt $LIMIT ]; then arch=$mbox-$(date +%Y-%m-%d); cp $mbox $arch && gzip $arch;
$mbox; fi
b) MH-format oder so (jede mail eine Datei): if [ $(du -bs $maildir | cut -f) -gt $LIMIT ]; then arch=$maildir-$(date +%Y-%m-%d); tar -czf ../archiv/$arch $maildir/ rm -f maildir/* fi Uhrzeit? Einfach ein _%k_%M_%S an den date-string anhaengen... Siehe man bash usw... Ich hoffe das gibt dir ein paar Ideen. CU David -- "Seinen Horizont zu erweitern macht nur dann Sinn, wenn man einen selbigen auch erkennen kann." [das Woko° in dag°] --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On Wed, 01 Nov 2000 02:52:18 +0100 (MET),
David Haller
a) mbox-format ('ordner' ist eine Datei)
if [ $(du -b $mbox | cut -f1) -gt $LIMIT ]; then arch=$mbox-$(date +%Y-%m-%d); cp $mbox $arch && gzip $arch;
$mbox; fi
Ein fertiges Beispiel habe ich gerade nicht, aber 2 Ansätze:
1. würde ich für das Problem "Prüfung auf Dateigröße" find verwenden:
Auszug aus "man find":
-size n[bckw]
File uses n units of space. The units are 512-byte
blocks by default or if `b' follows n, bytes if `c'
follows n, kilobytes if `k' follows n, or 2-byte
words if `w' follows n. The size does not count
indirect blocks, but it does count blocks in sparse
files that are not actually allocated.
2. gefällt mir eine Archivierung nach Zeit (monatlich?) besser, weil
man dann alte Mails schneller findet (ja, ich kenne grep).
--
Ralf Cirksena
Hallo, Ralf Cirksena wrote:
David Haller
wrote: a) mbox-format ('ordner' ist eine Datei)
if [ $(du -b $mbox | cut -f1) -gt $LIMIT ]; then arch=$mbox-$(date +%Y-%m-%d); cp $mbox $arch && gzip $arch;
$mbox; fi
Ein fertiges Beispiel habe ich gerade nicht, aber 2 Ansätze:
1. würde ich für das Problem "Prüfung auf Dateigröße" find verwenden: Auszug aus "man find": -size n[bckw]
Hm. Ich denke, wenn man direkt schon einen Dateinamen angeben kann, ist's ziemlich egal ob man die Dateigroesse mit du | cut oder mit find testet. Wenn man aber mehrere Dateien pruefen will, ist das find in einer Schleife for f in $(find -size ...); do arch=... natuerlich praktischer. Im Fall b) muss man aber IMHO eh du verwenden.
2. gefällt mir eine Archivierung nach Zeit (monatlich?) besser, weil man dann alte Mails schneller findet (ja, ich kenne grep).
Ack. Das war zwar nicht gefragt, aber vielleicht ueberlegt's sich der Fragesteller ja. CU David -- Anything that happens, happens. --- Anything that, in happening, causes something else to happen, causes something else to happen. --- Anything that, in happening, causes itself to happen again, happens again. --- It doesn't necessarily do it in chronological order, though. -- Douglas Adams --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* David Haller schrieb am 02.Nov.2000:
Ralf Cirksena wrote:
2. gefällt mir eine Archivierung nach Zeit (monatlich?) besser, weil man dann alte Mails schneller findet (ja, ich kenne grep).
Ack. Das war zwar nicht gefragt, aber vielleicht ueberlegt's sich der Fragesteller ja.
Ich archiviere meine Mails auch nach Ordner und Monaten. Allerdings gefällt es mir nicht ganz. Ich würde lieber nach Threads archivieren. Wüßte jemand wie man das anstellen könnte? Natürlich nur automatisch. Bei so vielen zerissenen Threads sehe ich aber schwarz. Außerdem soll ein Thread nur dann einen eigenen Ordner erhalten, wenn er eine gewisse Länge hat. Bernd -- Was ist quoten? Quoten ist das Zitieren aus einer mail, der man antwortet. Und wie macht man es richtig? Zitate werden mit "> " gekennzeichnet. Nicht mehr als nötig zitieren. Vor den Abschnitten das Zitat, auf das man sich bezieht, mit einer Zeile Abstand oben und unten. |Zufallssignatur 12 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo, Bernd Brodesser wrote:
Ich archiviere meine Mails auch nach Ordner und Monaten. Allerdings gefällt es mir nicht ganz. Ich würde lieber nach Threads archivieren. Wüßte jemand wie man das anstellen könnte? Natürlich nur automatisch.
Hm. Da wuerde ich mit Perl die References und In-Reply-To Header verwenden... Aber ob sich das lohnt? Nach welchem Header sortierst du eigentlich in die Monats-Ornder? Date? X-RDate bzw. From bla@foo.bar <datum>? Oder parst du die Received Zeilen? CU David -- "Reality is that which, when you stop believing in it, doesn't go away". -- Philip K. Dick --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Bernd Brodesser schrieb in 1,1K (30 Zeilen):
Ich archiviere meine Mails auch nach Ordner und Monaten. Allerdings gefällt es mir nicht ganz. Ich würde lieber nach Threads archivieren. Wüßte jemand wie man das anstellen könnte? Natürlich nur automatisch.
Mutt kann threads. Mutt kann 'push STRING', um Tastendruecke zu emulieren. Mutt kann Kommandos von der Commandline bekommen.
Bei so vielen zerissenen Threads sehe ich aber schwarz. Außerdem soll ein Thread nur dann einen eigenen Ordner erhalten, wenn er eine gewisse Länge hat.
Alle Threads aufsplitten (Name: Subject--1.-MessageID -- damit's eindeutig ist), im mbox-Format (wegen die Groesse messen). cd TEMP-THREAD-FOLDER for i in *; do if `find -size +128k $i` ; then mv $i ../SAVE-THREAD-FOLDER else cat $i >> ../REST-OF-THREADS-YYYY-MM rm $i fi done (untested) Gegebenenfalls dann umbenennen und/oder mit mutt in Maildir Format bringen etc. oder das 'cat' via Mutt machen... -Wolfgang --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
From: "Wolfram Schlich"
ich habe ein kleines problem: mein alter 200er idt ist etwas
Ausserdem funktioniert deine Shift-Taste zum Erzeugen von Großbuchstaben nicht.
langsam, wenn ich über den imap einen ordner mit ein paar tausend nachrichten öffne (verständlich, ist ja nur eine grosse datei...). da ich meine mails auf keinen fall löschen möchte, kam mir die idee mit einem kleinen perl- oder bash-script, das per procmail gestartet werden soll. es soll nachsehen, ob der ordner (die datei), in den/die mail(s) bei einem match verschoben werden sollen, mehr als z.b. 4096kbyte gross ist und ihn/sie bei "true" in "
.aktuellesdatum_uhrzeit" umbenennt. da ich aber absolut keinen plan von perl bzw. der bash habe, frage ich einfach mal in die runde... äh... liste :) vielen dank schonmal für alle antworten! schönen feiertag noch :)
man find cd ~/Mail ; find -type i -size +4096k -exec mv {} `date +%s` \; Natürlich kannst du das date-Format auch beliebig ändern. -- Marco Dieckhoff icq# 22243433 PGP key 9EFA D64F 5DAA D36B E0E7 CE1B 9E1B 4903 0C51 1632 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Am Mittwoch, 1. November 2000 01:36 schrieb Wolfram Schlich:
ich habe ein kleines problem: mein alter 200er idt ist etwas langsam, wenn ich über den imap einen ordner mit ein paar tausend nachrichten öffne (verständlich, ist ja nur eine grosse datei...). da ich meine mails auf keinen fall löschen möchte, kam mir die idee mit einem kleinen perl- oder bash-script, das per procmail gestartet werden soll. es soll nachsehen, ob der ordner (die datei), in den/die mail(s) bei einem match verschoben werden sollen, mehr als z.b. 4096kbyte gross ist und ihn/sie bei "true" in "
.aktuellesdatum_uhrzeit" umbenennt. da ich aber absolut keinen plan von perl bzw. der bash habe, frage ich einfach mal in die runde... äh... liste :)
Sowas gibts schon bei SuSE, das musst Du gar nicht selber machen. Nimm die entsprechenden Dateien einfach in die /etc/logfiles auf. Da wird dann automatisch täglich geprüft, ob die Datei die vorgegebene Grösse übersteigt, ist das der fall, wird sie umbenannt (Dateiname-Datum), gegezippt und ne neue, leere Datei mit den vorgegebenen Rechten erstellt. Läuft hier schon lange problemlos. -- Machs gut | http://www.iiv.de/schwinde/buerger/tremmel/ | http://www.knightsoft.de Manfred | http://www.knightsoft-net.de -> Bundesliga-Tipprunde! --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (7)
-
B.Brodesser@online-club.de
-
ci@holmco.de
-
David@dhaller.de
-
linux@jwr.de
-
Manfred.Tremmel@iiv.de
-
weissel@netcologne.de
-
wolfram@schlich.org