Warum os.link() nicht auch für Windows???

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Warum os.link() nicht auch für Windows???

Beitragvon jens » Samstag 14. April 2007, 08:39

Es doch mit NTFS schon möglich Hardlinks zu erstellen.
Ich hab dafür z.B. http://schinagl.priv.at/nt/hardlinkshel ... llext.html installiert, mit den man das bequem machen kann.

Wäre schön, wenn man das mit Python machen könnte...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
lunar

Re: Warum os.link() nicht auch für Windows???

Beitragvon lunar » Samstag 14. April 2007, 10:03

jens hat geschrieben:Es doch mit NTFS schon möglich Hardlinks zu erstellen.
Ich hab dafür z.B. http://schinagl.priv.at/nt/hardlinkshel ... llext.html installiert, mit den man das bequem machen kann.

Wäre schön, wenn man das mit Python machen könnte...


Wofür denn das? 80-90% aller Windows-Nutzer wissen ja noch nicht mal was ein Hardlink ist...

Was mich allerdings an dem geposteten Link wundert, ist die Tatsache, dass Symlinks nur unter Vista unterstützt werden. Eigentlich sollte das auch schon unter XP gehen...
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Warum os.link() nicht auch für Windows???

Beitragvon Leonidas » Samstag 14. April 2007, 13:05

lunar hat geschrieben:Wofür denn das? 80-90% aller Windows-Nutzer wissen ja noch nicht mal was ein Hardlink ist...

Mit der Bekanntschaft von Symlinks sieht es aber auch nicht besser aus. .lnk Dateien sind eben nur ein schlechter Ersatz.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
DaSch
User
Beiträge: 72
Registriert: Mittwoch 28. März 2007, 20:04
Kontaktdaten:

Beitragvon DaSch » Samstag 14. April 2007, 14:08

ist das überhaupt im Filesystem implementiert oder ist dass nur eine erweiterung die ohne spezielle Treiber nicht funktioniert. Weill wenn es kein Bestandteil des Filesystem ist dann sollte man das lieber lassen.
BlackJack

Beitragvon BlackJack » Samstag 14. April 2007, 14:21

NTFS kann wohl echte Hardlinks.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 14. April 2007, 14:41

Das NTFS in Windows 2000 unterstützt auch Junctions (das Tool wurde von den Sysinternals-Leuten geschrieben), welche wie Symlinks auf Ordner funktionieren.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Samstag 14. April 2007, 14:44

Juhuu. Junctions. The fastes way to make your data garbage on Windows XP and greater. :roll:
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Samstag 14. April 2007, 14:54

Wikipedia http://de.wikipedia.org/wiki/NTFS (Abschnitt NTFS 3.X):
...
# Hardlinks: Daten können von bis zu 1023 Dateinamen referenziert werden (eine Datei, viele Namen).
# NTFS-Junction-Points bzw. symbolische Links, um Verzeichnisse, Partitionen oder Laufwerke in andere Verzeichnisse einzuhängen (siehe Symlinks bei Unix/Linux). NTFS-Junction-Points können jedoch nur auf lokale Ressourcen verweisen, nicht auf Freigaben anderer Rechner – das ist nur mit DFS-Junction-Points möglich.
...
Windows NT 4.0 kann NTFS 3.X-Partitionen erst ab Service Pack 4 lesen.---
...


Demnach gehen Hardlinks ab NT v4 + SP4...

Noch ein andere Stelle: http://de.wikipedia.org/wiki/Symbolischer_Link#Windows
Eine weitere Möglichkeit in Windows sind Abzweigungspunkte („junction points“), welche jedoch das Dateisystem NTFS 5 bzw. ab Version 3.0 (Windows 2000, Windows XP, Windows 2003 und Windows Vista) voraussetzten. Diese sind den symbolischen Links auf Verzeichnisse sehr viel ähnlicher als Verknüpfungen.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Samstag 14. April 2007, 14:59

...I'm singing the song of junctions and data garbage... *whistle*
TUFKAB – the user formerly known as blackbird
Master_of_Mechanic
User
Beiträge: 5
Registriert: Samstag 12. Mai 2007, 18:35

Beitragvon Master_of_Mechanic » Dienstag 15. Mai 2007, 09:57

Die c't hat auch schon mal Spielerein mit HardLinks für winXP gemacht.

"Fix verknüpft Hard-Link-Backups für Windows" http://www.heise.de/ct/ftp/06/09/126/

Allerdings fände ich es "besser" mit Mitteln in Python zu machen ohne extern ein Programm auszuführen. Und am besten wäre es wenn es Platfomunabhängig wäre.[/url]
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 15. Mai 2007, 17:49

Master_of_Mechanic hat geschrieben:Die c't hat auch schon mal Spielerein mit HardLinks für winXP gemacht.

``rsync``? Das ist doch wohl mal was ganz anderes... :?:
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 6. Januar 2009, 09:09

Ich kann das nun für simpleDMS brauchen und mache mich wieder auf die Suche... Kennt jemand spontan Links zum Thema?

EDIT: "Add os.link() and os.symlink() support for Windows": http://bugs.python.org/issue1578269 (Erstellt 2006)
http://timgolden.me.uk/pywin32-docs/win ... _meth.html
http://timgolden.me.uk/pywin32-docs/win ... _meth.html

EDIT2: Na, toll:

Code: Alles auswählen

import sys
import platform
import win32file

print sys.version
print platform.platform()

win32file.CreateHardLink # geht
win32file.CreateSymbolicLink # AttributeError: 'module' object has no attribute 'CreateSymbolicLink'

Ausgabe:

Code: Alles auswählen

2.5.2 (r252:60911, Mar 27 2008, 17:57:18) [MSC v.1310 32 bit (Intel)]
Windows-Vista-6.0.6001-SP1
Traceback (most recent call last):
  File "test.py", line 12, in <module>
    win32file.CreateSymbolicLink
AttributeError: 'module' object has no attribute 'CreateSymbolicLink'

Warum das?
So: https://sourceforge.net/tracker/index.p ... tid=551954

EDIT3: Mit 2.6.1 geht's. bzw. CreateSymbolicLink gibt es generell nur unter Vista.

Dumm ist, um Symbolische Links zu erstellen, braucht man Admin rechte. Diese kann man aber anscheinend nicht mehr im laufenden Programm erhalten, siehe: http://mail.python.org/pipermail/python ... 07600.html

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 6. Januar 2009, 12:02

jens hat geschrieben:Dumm ist, um Symbolische Links zu erstellen, braucht man Admin rechte.

Irgendwie stimmt da was nicht. Denn mit dem Tool "Link Shell Extension" http://schinagl.priv.at/nt/hardlinkshel ... llext.html kann man ohne Admin rechte alles machen. Kein UAC unter Vista. Wie geht das?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 6. Januar 2009, 15:10

Laut dieser Seite braucht man dazu das Priviledge "Create Symbolic Link". Vielleicht macht ja die Shell-Extension irgendwelchen UAC-Voodoo?

Hast du ``mklink`` ausprobiert? Was passiert da?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 6. Januar 2009, 15:54

Das geht auch nur als Admin.

Da wir schon mal bei den Rechten sind. Ich möchte auch was unter win32con.HKEY_CLASSES_ROOT eintragen. Dafür braucht man ebenfalls Admin Rechte.

Ich hab mal irgendwo gesehen, das man bei fehlenden Rechten den Python Interpreter wieder per "runas" aufruft, um so zum Admin zu werden.

Ich verstehe allerdings nicht wie das gehen soll. Ich meine wie soll der runas Aufruf aussehen? Ich weiß doch nicht den namen vom Administrator. Außerdem soll es ja als aktuelle User laufen, der aber dann sich als Admin ausweißt. Letztlich soll also der vista UAC Dialog erscheinen, zum freischalten.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder