Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Datei mit mehreren hardlinks erstellen

3 views
Skip to first unread message

Christian Stubbs

unread,
Jan 16, 2012, 5:00:34 PM1/16/12
to
Hallo,

gibt es eine Möglichkeit, eine Datei direkt mit mehreren hardlinks zu
erstellen? Und zwar als atomare Operation, nicht erst erstellen und dann
links hinzufügen.

Rainer Weikusat

unread,
Jan 16, 2012, 5:35:06 PM1/16/12
to
Meines Wissens nach nicht.

Edzard Egberts

unread,
Jan 17, 2012, 2:48:13 AM1/17/12
to
Christian Stubbs schrieb:
Ich denke, dass "mehrere" ganz klar "atomar" ausschließt.

Detlef Bosau

unread,
Jan 17, 2012, 4:09:43 AM1/17/12
to
Ich habe mich nie damit beschäftigt, aber man könnte in einem journaling
filesystem ein "commit" anbieten. Dann _wäre_ das im Sinne einer
Transaktion atomar. Bei einer Datenbank machst Du auch nichts anderes.

Edzard Egberts

unread,
Jan 17, 2012, 7:12:39 AM1/17/12
to
Detlef Bosau schrieb:
Das würde aber auch nur bedeuten, dass man erst die Datei und die
Hardlinks anlegt und dann die ganze Struktur an das FS übergibt. Ja, die
Übergabe wäre atomar, nein, die Datei wäre nicht in einer atomaren
Operation mit mehreren Hardlinks erstellt worden.

Sowieso, ist nicht atomar, na und? Können Critical Sections oder
ähnliche Mechanismen (Mutex) nicht genutzt werden? Atomare Operationen
sind doch eher selten und mit Misstrauen zu betrachten, also einfach die
vorgesehenen Mechanismen nutzen...

Detlef Bosau

unread,
Jan 17, 2012, 8:23:19 AM1/17/12
to
On 01/17/2012 01:12 PM, Edzard Egberts wrote:
> Detlef Bosau schrieb:
>> On 01/17/2012 08:48 AM, Edzard Egberts wrote:
>>> Christian Stubbs schrieb:
>>>> Hallo,
>>>>
>>>> gibt es eine Möglichkeit, eine Datei direkt mit mehreren hardlinks zu
>>>> erstellen? Und zwar als atomare Operation, nicht erst erstellen und
>>>> dann
>>>> links hinzufügen.
>>>
>>> Ich denke, dass "mehrere" ganz klar "atomar" ausschließt.
>>
>> Ich habe mich nie damit beschäftigt, aber man könnte in einem journaling
>> filesystem ein "commit" anbieten. Dann _wäre_ das im Sinne einer
>> Transaktion atomar. Bei einer Datenbank machst Du auch nichts anderes.
>
> Das würde aber auch nur bedeuten, dass man erst die Datei und die
> Hardlinks anlegt und dann die ganze Struktur an das FS übergibt. Ja, die
> Übergabe wäre atomar, nein, die Datei wäre nicht in einer atomaren
> Operation mit mehreren Hardlinks erstellt worden.

Jein. Beim Flicken eines solchen Dateisystems wäre eben das Anlegen der
Datei und ihrer Links eine Transaktion, die ganz oder gar nicht
ausgeführt würde.

>
> Sowieso, ist nicht atomar, na und? Können Critical Sections oder
> ähnliche Mechanismen (Mutex) nicht genutzt werden?

Natürlich, warum nicht?

> Atomare Operationen
> sind doch eher selten und mit Misstrauen zu betrachten, also einfach die
> vorgesehenen Mechanismen nutzen...

Dein Begriff von "atomar" trifft (je nach Prozessor) nicht mal auf jeden
Assemblerbefehl zu ;-)

Stefan Reuther

unread,
Jan 17, 2012, 12:27:17 PM1/17/12
to
Was ist das genaue zu lösende Problem?

Wenn es um das atomare Tauschen eines Datei-Satzes geht, tut vielleicht
sowas in der Art:
- die Dateien liegen in $dir/$GUID
- es gibt einen Symlink $dir/dateien -> $dir/$GUID, über den zugegriffen
wird.
Neuen Datei-Satz erstellen:
- mkdir $dir/$NEWGUID # Neues Verzeichnis
- touch $dir/$NEWGUID/datei1 # Datei
- ln $dir/$NEWGUID/datei1 $dir/$NEWGUID/datei2 # Hardlinks
- ln $dir/$NEWGUID/datei1 $dir/$NEWGUID/datei3
- ln $dir/$NEWGUID/datei1 $dir/$NEWGUID/datei4
- ln -s $NEWGUID $dir/$NEWGUID.lnk # Symlink mit neuem Namen
- mv -Tf $dir/$NEWGUID.lnk $dir/dateien # ein 'rename' syscall



Stefan

Christian Stubbs

unread,
Jan 18, 2012, 4:31:45 AM1/18/12
to
Stefan Reuther <stefa...@arcor.de> writes:

> Was ist das genaue zu lösende Problem?

Gar keins, das war nur eine Frage, die sich daraus ergeben hat, dass es
bei Hardlinks keinen "Hauptlink" gibt, sondern dass alle Hardlinks
gleichberechtigt sind.
0 new messages