Test auf NFS

11/10/2011 - 18:36 von Ole Streicher | Report spam
Hallo Gruppe,

ich habe folgenden Code:

-8<-
import io, mmap, shutil

f = open('/path/to/file')
a = mmap.mmap(f.fileno(), 0)
shutil.rmtree('/path/to')

# do something (r/w) with the mapped file
# ...

a.close()
-8<-

Das ist ohne weiteres möglich, da Unix die Datei erhàlt solange sie
geöffnet ist, auch nachdem sie gelöscht wurde.

Allerdings nicht auf einem NFS-Laufwerk; dort funktioniert
shutil.rmtree() nicht, weil die gelöschte Datei einen versteckten
Verzeichniszeintrag .nfsXXXXX erhàlt, solange sie geöffnet ist. Daher
kann ich dort mmap nicht anwenden.

Meine Frage ist nun, woran ich erkennen kann, dass die Datei auf einem
NFS-Laufwerk liegt?

Viele Grüße

Ole
 

Lesen sie die antworten

#1 Thomas Orgelmacher
13/10/2011 - 12:07 | Warnen spam
Am 11.10.2011 18:36, schrieb Ole Streicher:

Meine Frage ist nun, woran ich erkennen kann, dass die Datei auf
einem NFS-Laufwerk liegt?



Ich sehe gerade keine Möglichkeit, das portabel zu erledigen. Unter
Linux könnte man z.B. folgendes tun:

import os

def testnfs(datei):
with os.popen("stat -f -L -c %T {}".format(datei)) as p:
l = p.read()
return l =='nfs'

oder

os.stat(datei).st_dev == <deviceid> (die stehen in
/proc/fs/nfsfs/volumes)

Je nachdem, wie viel man testen will, sollte das schneller gehen.


HTH

Thomas

I have seen things you lusers would not believe. I've seen Sun
monitors on fire off the side of the multimedia lab. I've seen
NTU lights glitter in the dark near the Mail Gate. All these
things will be lost in time, like the root partition last week.

Ähnliche fragen