Lesesperre (read-lock) auf Verzeichnisse/Dateien

Hallo,

ich habe einen Server auf den ich gelegentlich Dateien hochlade per sftp. Gleichzeitig aber verbinden sich diverse Clients in regelmässigen Abständen ebenfalls mit SFTP um den Inhalt deses Verzeichnisses herunterzuladen. Kann man unter Linux eine Datei, die sich im upload-prozess befinden (also noch nicht vollständig hochgeladen ist) lese / schreib sperren? So eine art von read/write locks wie sie bei Datenbanken üblicherweise eingesetzt um dirty-reads etc zu verhindern? So eine Art pessimistisches sperren mittels Semaphore.

Ich möchte also eine Dateien, die ich mit SFTP uploade so lange für Andere sperren, bis sie vollständig ist.

— Joe

Moien

Kann man unter
Linux eine Datei, die sich im upload-prozess befinden (also
noch nicht vollständig hochgeladen ist) lese / schreib
sperren?

Klar:

  • erzeug die Datei
  • setz die Rechte auf write-only.
  • lad hoch
  • setz die Rechte auf read.

Nur wenn ein Client zwischen Schritt 1 und 2 runterlädt bekommt er was invalides.

Wie du das in SFTP machst kann ich dir allerdings nicht sagen.

cu

Hallo,

eine Idee für einen Workaround: Lade die Dateien in einem getrennten upload-Verzeichnis hoch, und erst wenn du fertig bist, erzeugst du einen symlink im entsprechenden Verzeichnis.

Grüße,
Moritz