Anzeige:
Ergebnis 1 bis 9 von 9

Thema: nur Symbolic Link loeschen ?

  1. #1
    Registrierter Benutzer
    Registriert seit
    Apr 2003
    Ort
    Düsseldorf
    Beiträge
    22

    nur Symbolic Link loeschen ?

    Hi Gemeinde,

    ueber die Suchfunktion habe ich viele Beiträge zu ln gefunden, aber habe es immer noch nicht richtig verstanden.

    Ich habe mit ln -s ein Verzeichniss verlinkt. Klar ist, schaue ich in das verlinkte Verzeichniss werden mir dort die gleichen Dateien angezeigt, löschen funktioniert auch.

    Aber wenn ich die Dateien lösche, werden sie auch im originalen Verzeichniss gelöscht! - jetzt das Problem, wie bekomme ich den Link wieder weg, ohne die Dateien zu löschen?

    Bleibt nur eins übrig, das Verzeichnis kopieren und dann das gelinkte Verzeichnis mit rm löschen ?

    Kann ich die bereits gelöschten Dateien irgendwie wieder herstellen ?

    letzte Frage, kann ich wie unter Windows eine Verknüpfung erstellen?, wenn ich diese lösche, werden die original Dateien und Verzeichnisse nicht gelöscht.

    Danke für eure Hilfe
    Gruesse Norbert
    Geändert von norbertB (08.10.03 um 10:42 Uhr)

  2. #2
    Vi-ennese Avatar von Snofix
    Registriert seit
    Mar 2003
    Ort
    Wien
    Beiträge
    129
    Ich glaub' das Kommando das du suchst heißt unlink

    greetz,
    Martin
    [:: Athlon 2000+ ::] [:: nVidia Geforce4 ::] [:: Debian Testing + Slackware 10.2 ::]
    ---
    Error: cannot resolve symbol: method Signature()
    ---

  3. #3
    Linuxgeiler Mod Avatar von AceTheFace
    Registriert seit
    Mar 2003
    Ort
    Ulm
    Beiträge
    4.545
    Also bei mir löscht ein "rm -f linkname" nur den Link und nicht das gelinkt Verzeichnis...

    Gruß,

    Ace

    openSUSE 10.3 @ AMD 64 3700+,A8N-SLI-Premium,1GB,256MB NVIDIA GeForce 7950GT
    Mac OS X Tiger @ MacBook, Intel Core Duo 2GHz, 2GB

    Last.FM - Profil | Blog


  4. #4
    Out of limits. Avatar von LX-Ben
    Registriert seit
    Nov 2002
    Ort
    Infinity
    Beiträge
    1.701
    schaue ich in das verlinkte Verzeichniss werden mir dort die gleichen Dateien angezeigt,
    löschen funktioniert auch.
    Durch den Klick auf den link wirst du in das Originalverzeichnis geführt, daher ist Löschen
    möglich. Außer dem Verweis auf das Originalverzeichnis hat der Link keine Beziehung
    zu dem Verzeichnis oder deren Dateien, kann also problemlos gelöscht werden. Das lässt
    sich sogar risikolos testen, indem du den link umbenennst - das Originalverzeichnis muss
    dann immer noch vorhanden sein.

  5. #5
    cirad
    Gast
    EDIT:
    Habe hier ******e geschrieben.
    a) Das Beschriebene trifft auf einen HardLink, nicht SymLink zu.
    b) Folglich ist auch die Sache mit dem Löschen falsch.

    -----------------------------------

    Jedes Verzeichnis und jede Datei hat eine Inode, in der Informationen wie der User, Größe, die benutzen Blöcke für die Daten und ähnliches stehen. Der Name ist aber nicht darin enthalten. Die Inodes sind einfach durchnummeriert.

    Die Namen werden in den Verzeichnissen gespeichert. Ein solcher Eintrag nennt sich Dentry und könnte vereinfacht so aussehen: "45634 filename", die Datei mit der Inode 45634 heißt also filename. Nun hindert dich aber niemand, einen zweiten Dentry mit "45634 blubblah" anzulegen und genau das macht ln -s.

    Du hast also eine Datei mit der Inode 45634, die zwei unterschiedliche Namen hat. Mit rm löscht du einen solchen Dentry, rm blubblah sollte also nur den Namen blubblah löschen, nicht aber die Inode, die Daten und filename. (rm filename löscht die Datei wirklich, es ist quasi der Hauptname)

    Wenn rm blubblah sowohl blubblah, wie auch filename (also alles) löscht, dann ist das zumindest sehr merkwürdig. Kürzlich war hier glaube ich schonmal jemand mit dem Problem.

  6. #6
    Registrierter Benutzer
    Registriert seit
    Apr 2003
    Ort
    Düsseldorf
    Beiträge
    22
    Danke für eure Antworten,

    @Snofix
    mit unlink lösche ich ebenfalls die Originaldatei
    @AceTheFace
    rm -f löscht auch das Original
    @LX-Ben
    umbennen des Linkverzeichnis kein Problem, allerdings werden ebenfalls "beide" Dateien gelöscht.
    @cirad
    Danke für deine ausführliche Beschreibung.

    Also, ich habs gerade auf dem Server probiert, immer werden die Originaldateien gelöscht. Kann es vielleicht an den Rechten der Dateien liegen?

    Werde nochmal versuchen, das nur root Rechte an den Originalen hat und dann als user unlink oder rm ausführen. Jetzt ist es so, das ich als user owner der Dateien bin.

    Irgendwie verwirrend das Ganze, aber auf der anderen Seite, nur so lernt man mit Linux umzugehen....

    Gruesse
    Norbert

    PS: vielleicht kann es auch an Samba liegen, Original ist ein Share, damit ich über Windows an die Dateien komme, und da ist Schreibrecht gesetzt.
    Geändert von norbertB (08.10.03 um 13:24 Uhr)

  7. #7
    Registrierter Benutzer Avatar von real-challo
    Registriert seit
    Aug 2002
    Ort
    Hamburg
    Beiträge
    424
    andi@challo:~/ln_test> ls -li
    insgesamt 0
    1280 drwxr-xr-x 2 andi users 72 2003-10-08 14:51 verz_1


    andi@challo:~/ln_test> ln -s ./verz_1 verz_2
    andi@challo:~/ln_test> ls -li
    insgesamt 0
    1280 drwxr-xr-x 2 andi users 72 2003-10-08 14:51 verz_1
    524 lrwxrwxrwx 1 andi users 8 2003-10-08 14:52 verz_2 -> ./verz_1
    Jetzt verlinken
    andi@challo:~/ln_test> ls -li verz_1
    insgesamt 4
    1314 -rw-r--r-- 1 andi users 44 2003-10-08 14:51 dat_1
    andi@challo:~/ln_test> ls -li verz_2
    524 lrwxrwxrwx 1 andi users 8 2003-10-08 14:52 verz_2 -> ./verz_1
    andi@challo:~/ln_test> cat verz_1/dat_1
    das ist datei 1 aus dem Verzeichniss verz_1
    andi@challo:~/ln_test> cat verz_2/dat_1
    das ist datei 1 aus dem Verzeichniss verz_1
    andi@challo:~/ln_test> ls -li
    insgesamt 0
    1280 drwxr-xr-x 2 andi users 72 2003-10-08 14:51 verz_1
    524 lrwxrwxrwx 1 andi users 8 2003-10-08 14:52 verz_2 -> ./verz_1
    Jetzt löschen
    andi@challo:~/ln_test> rm verz_2
    andi@challo:~/ln_test> ls -li
    insgesamt 0
    1280 drwxr-xr-x 2 andi users 72 2003-10-08 14:51 verz_1
    andi@challo:~/ln_test> cat verz_1/dat_1
    das ist datei 1 aus dem Verzeichniss verz_1
    andi@challo:~/ln_test>

    ==================
    Wenn Du verz_1 löschst, dann ist natürlich alles weg, da du das original löschst
    Wenn du immer tust, was du schon immer getan hast,
    wirst du immer bekommen, was du schon immer bekommen hast.
    ==========================
    http://www.admin-hilf-mir.de

  8. #8
    cirad
    Gast
    @norbertB:
    Ich hatte gerade überlegt, woran es noch liegen könnte und dabei ist mir aufgefallen, daß ich Unsinn geschrieben habe (was schon fast peinlich ist). Was ich oben beschrieben habe betrifft aber einen Hardlink, keinen Softlink. Sorry, ich habe nicht aufgepaßt.

    Mir kam das schon so komisch vor, als ich das mit dem Löschen schrieb. Das obige ist auch soweit korrekt (wenn man SymLink durch Hardlink ersetzt), bis auf die Tatsache mit dem Löschen. Tatsächlich sieht es so aus, daß du bei einem Hardlink nicht zwischen Original und Hardlink unterscheiden kannst. Du hast zwei Dentries in einem Verzeichnis:
    45634 filename
    45634 blubblah
    Und egal welches du löscht, die Inode und die Daten bleiben erhalten. Um es kurz zu machen: ein Hardlink ist ein alternativer Name, nur ein zusätzlich Eintrag in einem Verzeichnis!

    Ein SymLink hingegen ist eine weitere Inode, die auf die gleichen Blöcke (Daten) zeigt. Ein SymLink enthält nichts weiter als den Namen der Datei, auf die er zeigt. Und hier macht es dann sehr wohl einen Unterschied, was Original-Inode und was Link-Inode ist. Löscht du den Link, löscht du nur den Zeiger auf die andere Datei. Löscht du die Original-Inode, löscht du die Original-Datei.

    EDIT:
    Tut mir leid, ich hoffe ich habe dich jetzt damit nicht verwirrt.
    Jetzt habe ich leider wieder keine Idee. Ich hatte eine, da ist mir der Fehler dann aber aufgefallen, weil das alles sehr komisch wurde. Naja, aus Interesse denke ich nochmal drüber nach.

  9. #9
    cirad
    Gast
    Ich habe gerade nochmal dein erstes Posting durchgelesen:

    # Aber wenn ich die Dateien lösche, werden sie auch im originalen
    # Verzeichniss gelöscht! - jetzt das Problem, wie bekomme ich den
    # Link wieder weg, ohne die Dateien zu löschen?

    Die Dateien werden logischerweise gelöscht. Wenn du ein Verzeichnis a hast und einen SymLink darauf, der b heißt, dann zeigt b auf a. Das siehst du so auch direkt im Filesystem:
    b -> a

    Ein Wechsel in b ist das selbe wie ein Wechsel in a. Es handelt sich um das selbe Verzeichnis, keine Kopie. Löscht du darin Dateien, dann sind die weg. Hier wäre also alles korrekt.

    "rm b" sollte aber wirklich nur den Link löschen. Tatsächlich dürfte es überhaupt nicht anders möglich sein, weil a ein Verzeichnis ist und man Verzeichnisse ohne zusätzlich Optionen mit rm überhaupt nicht löschen kann. Daher zum Verständnis:

    Wie sehen die Links aus? (mit ls -ld einmal das Original und den Link zeigen)
    Was hast du jetzt genau versucht zu löschen, als du den Link entfernen wolltest?

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •