• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Node.js | Ausgabedatei vor Zugriff während des Schreibends sichern

Net_HAns

New member
Hallo,

ich möchte eine Datei mittels
Code:
fs.createWriteStream()
schreiben. Diese Datei wird mit ca. 500MB relativ groß.
Nun würde ich gerne sicherstellen, das die Datei vollständig geschrieben wird, bevor ein anderer Anwender, oder ein anderer Prozess darauf zugreifen kann.
Ich habe bei Tests mal versucht die zu schreibende Datei während des Speichervorgangs zu löschen. Das ging auch ohne Probleme, das Script hat nicht mal einen Fehler angezeigt. Es tat so, als wenn nichts gewesen wäre.

Wie kann ich die zu schreibende Datei sichern, das diese nicht gelesen, verändert, verschoben oder gelöscht werden kann, solange ich hineinschreibe?


Grüße & Danke
Hans
 
Du kannst auch eine temporäre Datei mit einem ziemlich zufälligen Namen machen und diese am Ende einfach umbenennen. flock würde ich trotzdem verwenden.
 
Hallo,

ich habe die Flock-Variante implementiert. Aber zu 100% glücklich bin ich noch nicht. Die Prozesse, welche die Datei weiter verarbeiten sollen, halten sich an die Sperre von Flock. Aber Windows ist das recht egal. Über den Windows-Explorer kann ich die gerade zum beschreiben offene Datei ausschneiden und "wegziehen". Der Prozess des schreibens bricht nicht mit einem Fehler ab, sondern macht einfach weiter. Was müsste ich jetzt noch tun, damit auch der Windows-Explorer die Datei als gesperrt ansieht?
 
Also ein Windows-Server und die zu sperrende Datei liegt auf eben diesem?
Dann wüsste ich nur workarounds wie z. B. umbenennen während Zugriff oder separate Sperrkartei etc.
 
Jupp es handelt sich um einen Windows-Server und die Daten liegen auf einem über DFS angebundenen Storage.
Dann muss ich mal gucken, wie ich das Problem weiter in den Griff bekomme, denn auch umbenennen ändert nichts daran, das die Datei durch User weggezogen werden kann. Die XCopy Jobs halten sich ja an das Flocken und warten bis fertig. Meine Bedenken sind jetzt halt unachtsamme Anwender ;-)
 
Zurück
Oben