datei verschieben mit upload prüfung

D

D-Learn

Grünschnabel
Hallo,

ich stehe vor einen riesigem problem
welches ich bisher nur zu 50 % lösen konnte folgendes Problem:

ich brauche eine möglichkeit (code) (debian)
das prüft ob dateien in einem ordner vorhanden sind
und wenn ja diese dann sofort verschiebt in einen anderen ordner
soweit funktioniert das auch welches per crontab (bis jetzt) regelmäßig ausgeführt wird
problem dabei ist das von einem anderen server in diesem ordner unregelmäßig
dateien hochgeladen (große dateien ca 1 Gig) werden
und wenn just in diesem moment die crontab anspringt verschiebt er sofort die dateien
und ihm ist es völlig egal ob der upload noch läuft so das die dateien dann defekt sind

was ich nun benötige währe eine lösung
die prüft ob die datei fertig ist oder nicht und wenn nicht eben halt wartet
bis sie fertig ist so das die datei dann komplett ist und bleibt und erst dann verschiebt.

bisher sieht mein code welchen ich per crontab (.sh) ausführe so aus :

while true
do
mv /vonhier/* /nach_hier_verschieben
exit
done

hat irgendjemand rat und tat für mich ?
weiß wircklich nicht weiter ....
und ist dringend..
lg
 
Du könntest z.B. per find die Dateien im Ordner suchen, auf die z.B. seit 10 Minuten nicht mehr schreibend zugegriffen wurde und nur diese verschieben...
 
hmm das mit dem find versteh ich noch
allerdings findet er dann ja auch die datei sofort sobald der upload begonnen hat
aber wie bringe ich ihm das dann bei das geschaut wird ob auf die datei kein zugriff mehr besteht ?
 
dann solltest Du nochmals
Code:
man find
durchlesen und dort dem Bereich "Tests" einen intensiveren Blick gönnen...
 
Na, das hatten wir doch schonmal? Kommt mir sehr bekannt vor, das Problem... Ich hab nur grad nicht wirklich Zeit im Forum zu suchen. ;)
 
Es ist eine Aufgabenstellung, die immer wieder vorkommt, ich bild mir ein bis jetzt war die Übliche Lösung das file in einem Programm als schreibzugriff zu öffnen und dadurch zu checken ob man drauf schreiben kann.

Ein Freund von mir hatte sowas mit asterisk, da empfehlen sie die datei erst händisch ins selbe filesystem zu kopieren und dann erst einen link ins verzeichnis zu legen, damit ist die datei da, oder nicht aber was dazwischen gibt es nicht.

Die schönste Version wäre aber auf das inotify flag "IN_CLOSE_WRITE" abzufragen. Aber ich hatte noch nie das Vergnügen mit incron, da wirst du dich etwas durchwühlen müssen.
 
Wenn die Dateien automatisch von einem anderen Server hochgeladen werden, koennte man das dortige Skript ja vielleicht so modifizieren, dass vorher eine Datei mit der md5- oder einer aehnlichen Pruefsumme erzeugt wird, und der cron-job mit der Option '-c' von md5sum prueft, ob die Datei korrekt ist, bevor sie verschoben wird. Oder man koennte 'fuser' benutzen um zu ueberpruefen, ob noch ein Prozess auf die Datei zugreift.
 
vielleicht ist dir auch das inotify-beispiel als vorlage brauchbar, man muss das rad ja nicht immer neu erfinden
 
daboss hat Recht, es gab bereits einen Thread zu dem Thema, in dem das ganze ausführlich dargestellt wurde und alle Möglichkeiten erläutert wurden. Ergebnis des alten Threads war es, die Dateigröße auf Änderungen zu prüfen und nur wenn eine Datei zweimal gleich groß war, diese auch zu verschieben. Pro und Contra wurden ausgiebig diskutiert, ich glaube ich habe in dem Thread auch gepostet. Sollte nicht so schwierig sein, den zu finden.
 
Zurück
Oben