On Sat, Jun 28, 2003 at 08:43:48PM +0200, Joerg Rossdeutscher wrote:
Wenn ich z.B. ein ghostscript starten möchte, nachdem eine postscript-Datei in einen Ordner gelegt wurde, dann darf gs erst starten, wenn die Datei komplett drin ist, und das kann schonmal ein paar Minuten dauern. Wenn er losrennt, sobald die Datei auftaucht, gibt es garantiert Murx.
Auch das ist ein häufiges Problem, und man löst es, indem man am Ende des Uploads eine atomare Operation im Dateisystem ausführt. Atomar sind das Anlegen, das Löschen oder das Umbenennen von Dateien. Man kann also a) die Datei hochladen ("daten.ps") und dann eine Triggerdatei anlegen ("daten.ps.doit"). Mit dem Anlegen der Triggerdatei startet die Verarbeitung. b) eine Lockdatei anlegen ("daten.ps.LOCK") und dann den Upload starten. Ist der Upload fertig, löscht man das Lock wieder und die Verarbeitung startet. c) den Upload in eine Workdatei vornehmen ("daten.ps.UP") und am Ende die Workdatei umbenennen ("daten.ps"). Die Verarbeitung faßt Dateien, die die Endung ".UP" haben, grundsätzlich nicht an. Je nach Szenario können unterschiedliche Verfahren opportun sein, bei Upload mit ftp und scp verwende ich meist a oder c, UUCP verwendet a (D-Datei mit den Daten, gefolgt von X-Datei mit dem Kommando), rsync verwendet c (".datei.ps.<pid-spezifische-kennung>" wird zu "datei.ps"), Mail und auch einige POP-Server verwenden auf vielen Systemen b. Kristian