Hallo, ich habe mir ein ganz bloedes Problem eingefangen. Im Laufe der Jahre haben sich auf der Festplatte an die 10 000 Textdateien in einigen Dutzend Verzeichnissen angesammelt. Da viele Dateien thematisch in mehreren Verzeichnissen liegen koennen, habe ich entsprechende Softlinks angelegt. Bloss - wenn ich jetzt das Verzeichnissystem veraendere, d.h. neue Unterverzeichnisse anlege und Dateien dorthin move, zeige u.U. diverse Links ins Leere. Wenn ich in den man-pages nichts ueberlesen habe, dann schliessen ln -s und mv sich gegenseitig aus. Alternative: Hardlinks? Oder gibt es einen besseren Weg? Bei Hardlinks stoert mich vor allem, dass ls nicht erkennen laesst, ob es sich wirklich um eine Datei oder nur einen Link handelt. Da ich mir nicht vorstellen kann, dass andere dieses Problem nicht auch bereits hatten, gibt es bestimmt auch schon laengst gute Loesungen. Gruss, Heinz. -- E-Mail: Heinz W. Pahlke <h.pahlke@berlin.de> Date: 01-Feb-2000 Time: 09:32:51 This message was sent by XFMail via S.u.S.E. Linux 6.2 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On 01-Feb-00 Heinz W. Pahlke wrote:
Bloss - wenn ich jetzt das Verzeichnissystem veraendere, d.h. neue Unterverzeichnisse anlege und Dateien dorthin move, zeige u.U. diverse Links ins Leere.
Da ich mir nicht vorstellen kann, dass andere dieses Problem nicht auch bereits hatten, gibt es bestimmt auch schon laengst gute Loesungen.
die lösung sind die art der links. je nachdem was du da hast funktionieren entweder relative oder absolute links. wenn du aus den unterverzeichnissen nicht zu einem absoluten pfad verlinken mußt sondern immer nur in die über- und untergeordneten verzeichnisse, funktioniert das solange wie sich die entsprechenden verzeichnisnamen nicht ändern. bei absoluten links gibt es das problem, daß der link solbald sich der pfad ändert, ins leere zeigt. ---------------------------------- E-Mail: Oliver Leue <artus-ol@gmx.net> Date: 01-Feb-00 Time: 09:44:21 This message was sent by XFMail ---------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On 01-Feb-2000 Oliver Leue wrote:
die lösung sind die art der links. je nachdem was du da hast
Sie verringern die Probleme, verhindern sie aber nicht.
funktionieren entweder relative oder absolute links. wenn du aus den unterverzeichnissen nicht zu einem absoluten pfad verlinken mußt sondern immer nur in die über- und untergeordneten verzeichnisse, funktioniert das solange wie sich die entsprechenden verzeichnisnamen nicht ändern. bei absoluten links
Bloss sie veraendern sich zum Teil eben doch, und vor allem aendert sich hin und wieder die Verzeichnishierarchie. Gruss, Heinz. -- E-Mail: Heinz W. Pahlke <h.pahlke@berlin.de> Date: 01-Feb-2000 Time: 10:51:34 This message was sent by XFMail via S.u.S.E. Linux 6.2 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* Heinz W. Pahlke schrieb:
Alternative: Hardlinks? Oder gibt es einen besseren Weg? Bei Hardlinks stoert mich vor allem, dass ls nicht erkennen laesst, ob es sich wirklich um eine Datei oder nur einen Link handelt.
Es gibt keinen Unterschied. Es sind einfach zwei gleichberechtigte Verzeichniseinträge. Wenn ln fertig ist, kann keiner mehr sagen, was schon da war und was neu ist. -- Christian Ullrich Registrierter Linux-User #125183 "Sie können nach R'ed'mond fliegen -- aber Sie werden sterben" --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* Heinz W. Pahlke schrieb am 01.Feb.2000:
Alternative: Hardlinks? Oder gibt es einen besseren Weg? Bei Hardlinks stoert mich vor allem, dass ls nicht erkennen laesst, ob es sich wirklich um eine Datei oder nur einen Link handelt.
Das ist so, weil es keinen Unterschied zwichen Datei und Link gibt. Es gibt wirklich keinen Unterschied. Es sind alles Links. Wenn Du alle Links bis auf einen löschst, so ist der eine der Ubrigbleibt die Datei. Gleichgültig, ob er es ursprünglich war oder ob es ein Link war. Ein Hardlink funktioniert in etwa so: Verzeichnis1 Verzeichnis2 Verzeichnis3 | | | Name1 Name2 Name3 \ | / \ | / \ V / \ ================================= / \--> I-Node <-- / --------------------------------- Datum, mod, UID, GID, Größe usw. --------------------------------- Verweise direkt und bis zu drei- fach indirekt auf die Realen Daten. ================================= Da in den Verzeichnissen nichts anderes steht, als der Name und der Verweiß, gibt es keine Möglichkeit festzustellen, was der ursprüngliche Namen ist. Ich wüßte auch nicht, warum das bei Dir wichtig sein sollte. Du kannst aber sehen, wieviele Links es noch gibt. Wenn Du aus irgend einem Grund eine Datei komplett löschen möchtest, so mußt Du Dir vorher alle Links mithilfe von find suchen. Bernd -- Bei Fragen an die Liste erst mal nachschauen, ob es diese Frage nicht schon einmal gegeben hat. Ein Archiv der Liste findest Du auf: http://lists.suse.com/archives/suse-linux |Zufallssignatur 7 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On Tue, 01 Feb 2000, Bernd Brodesser wrote:
* Heinz W. Pahlke schrieb am 01.Feb.2000:
Alternative: Hardlinks? Oder gibt es einen besseren Weg? Bei Hardlinks stoert mich vor allem, dass ls nicht erkennen laesst, ob es sich wirklich um eine Datei oder nur einen Link handelt.
[Hardlink-Erklärung]
Du kannst aber sehen, wieviele Links es noch gibt. Wenn Du aus irgend einem Grund eine Datei komplett löschen möchtest, so mußt Du Dir vorher alle Links mithilfe von find suchen.
Ergänzung: Der ls zeigt mit der Option -l die Anzahl der Verweise für eine Datei und mit der Option -i auch die I-Node an. Hart verlinkte Dateien haben alle die gleiche I-Node und können so identifiziert werden. Innerhalb eines Dateisystems ist für die eingangs erwähnten Belange (Textdateien thematisch mehrfach zuordnen) ein Hardlink IMHO immer besser geeignet als ein Softlink. Sollte nämlich die Originaldatei aus ihrem Verzeichnis gelöscht weren, dann hat man mit Hardlinks überhaupt keine Arbeit (außer dem einen rm), bei Softlinks fängt ein hartes ;-) Stück Arbeit an. Deshalb mein Tip(p?): Nutze Hardlinks, das ist einfacher. Jan --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Heinz W. Pahlke wrote:
ich habe mir ein ganz bloedes Problem eingefangen. Im Laufe der Jahre haben sich auf der Festplatte an die 10 000 Textdateien in einigen Dutzend Verzeichnissen angesammelt. Da viele Dateien thematisch in mehreren Verzeichnissen liegen koennen, habe ich entsprechende Softlinks angelegt.
Bloss - wenn ich jetzt das Verzeichnissystem veraendere, d.h. neue Unterverzeichnisse anlege und Dateien dorthin move, zeige u.U. diverse Links ins Leere.
Wenn ich in den man-pages nichts ueberlesen habe, dann schliessen ln -s und mv sich gegenseitig aus.
Alternative: Hardlinks? Oder gibt es einen besseren Weg? Bei Hardlinks stoert mich vor allem, dass ls nicht erkennen laesst, ob es sich wirklich um eine Datei oder nur einen Link handelt.
Da ich mir nicht vorstellen kann, dass andere dieses Problem nicht auch bereits hatten, gibt es bestimmt auch schon laengst gute Loesungen.
Wenn die Linknamen der Dateien identisch mit den Originaldateien sind, könnte es klappen. Du bräuchtest ein Script, dass dir die toten Links raussucht, die Datei auf die der Link mal zeigte anhand des Namens findet und den Link dann neu erstellt. Das Finden der toten Links ist kein Problem, da habe ich noch ein Script gefunden: #!/bin/sh ### oldlinks - print pathnames of outdated (un-connected) symbolic links ### Usage: oldlinks directory [directories...] # # written by Tom Christiansen # find . -type l -print | perl -nle '-e || print' Das Script muss nun so erweitert werden, dass von den toten Links der Pfad abgeschnitten wird, so dass nur noch der Dateiname übrigbleibt. Nach dem Dateinamen suchst du dann in deiner Verzeichnishierarchie. Wenn gefunden, wird der Link gelöscht und ein neuer, passender angelegt. christian -- Bitte kein CC: bei Antwort an Mailingliste Mail-Etikette: To: cschult@gmx.de, Subject: send etikette Mail-Etikette: http://www.ndh.net/home/schult/etikette.html --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On 01-Feb-2000 Christian Schult wrote:
Wenn die Linknamen der Dateien identisch mit den Originaldateien sind, könnte es klappen.
Sind es leider aber nicht immer.
Du bräuchtest ein Script, dass dir die toten Links raussucht, die Datei auf die der Link mal zeigte anhand des Namens findet und den Link dann neu erstellt. Das Finden der toten Links ist kein Problem, da habe ich noch ein Script gefunden:
#!/bin/sh ### oldlinks - print pathnames of outdated (un-connected) ### symbolic links ### Usage: oldlinks directory [directories...] # # written by Tom Christiansen # find . -type l -print | perl -nle '-e || print'
Hervorragend. Manchmal :-) ist perl wirklich nicht schlecht. Mit der bash ist das wohl doch sehr viel schwerer zu bewaeltigen, jedenfalls hatte ich bisher nichts gefunden, wie ich die durch mv abgemurksten Links bequem haette finden koennen.
Das Script muss nun so erweitert werden, dass von den toten Links der Pfad abgeschnitten wird, so dass nur noch der Dateiname übrigbleibt. Nach dem Dateinamen suchst du dann in deiner Verzeichnishierarchie. Wenn gefunden, wird der Link gelöscht und ein neuer, passender angelegt.
Ich glaube, da bleibe ich lieber faul und mache das per Fuss. Besten Gruss und Dank, Heinz. -- E-Mail: Heinz W. Pahlke <h.pahlke@berlin.de> Date: 01-Feb-2000 Time: 12:56:48 This message was sent by XFMail via S.u.S.E. Linux 6.2 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On Tue, 01 Feb 2000, Heinz W. Pahlke wrote:
find . -type l -print | perl -nle '-e || print'
Hervorragend. Manchmal :-) ist perl wirklich nicht schlecht. Mit der bash ist das wohl doch sehr viel schwerer zu bewaeltigen, jedenfalls hatte ich bisher nichts gefunden, wie ich die durch mv abgemurksten Links bequem haette finden koennen.
Geht auch mit bash. find . -type l -exec test ! -e {} \; -print CU Dirk -- "If Microsoft can change and compete on quality, I've won." - Linus Torvalds --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hi Heinz, On Die, 01 Feb 2000, Heinz W. Pahlke wrote:
Alternative: Hardlinks? Oder gibt es einen besseren Weg? Bei Hardlinks stoert mich vor allem, dass ls nicht erkennen laesst, ob es sich wirklich um eine Datei oder nur einen Link handelt.
Naja, ein Hardlink ist ja nicht "nur" ein Link, sondern einfach ein zweiter Verzeichniseintrag, der auf die selbe INode zeigt. Du kannst schon sehen, ob eine Datei hart "verlinkt" ist. Hier steht in der Spalte vor dem Besitzer (root) eine "1", daß heißt, es gibt einen Verweis auf diese INode. Der Softlink in mail zählt da nicht, weil es eben nur ein Softlink ist. helms@intrepid:/etc > ls aliases -rw-r--r-- 1 root root 2309 Jan 21 05:57 aliases helms@intrepid:/etc > ls mail lrwxrwxrwx 1 root root 10 Jan 21 06:48 aliases -> ../aliases Wenn das ganze jetzt hart verlinkt wäre, sähe das so aus : helms@intrepid:/etc > ls aliases -rw-r--r-- 2 root root 2309 Jan 21 05:57 aliases helms@intrepid:/etc > ls mail lrwxrwxrwx 2 root root 10 Jan 21 06:48 aliases Du hast schon recht, du kannst nicht sehen, _wohin_ der Link geht, und beim schnellen Überlesen fällt vielleicht auch die 2 nicht auf. Aber man _kann_ es schon sehen. Es macht dann eben auch mehr Aufwand, wenn du die Datei ganz ändern willst. Gruß, Sebastian -- "No worries." - Rincewind Sebastian Helms - mailto:sebastian@helms.sh(PGP available) --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo, Sebastian Helms wrote:
Hier steht in der Spalte vor dem Besitzer (root) eine "1", daß heißt, es gibt einen Verweis auf diese INode. Der Softlink in mail zählt da nicht, weil es eben nur ein Softlink ist.
helms@intrepid:/etc > ls aliases -rw-r--r-- 1 root root 2309 Jan 21 05:57 aliases helms@intrepid:/etc > ls mail lrwxrwxrwx 1 root root 10 Jan 21 06:48 aliases -> ../aliases
Soweit so gut.
Wenn das ganze jetzt hart verlinkt wäre, sähe das so aus :
helms@intrepid:/etc > ls aliases -rw-r--r-- 2 root root 2309 Jan 21 05:57 aliases helms@intrepid:/etc > ls mail lrwxrwxrwx 2 root root 10 Jan 21 06:48 aliases
Sicher? Die Sache mit der "2" stimmt schon. Aber beim Hardlink sind die Rechte, die Groesse und Datum/Uhrzeit AFAIK identisch mit der urspruenglichen Datei (weil es keinen Unterschied gibt), v.a. sollte dieses "l" nicht da stehen. Also eher so: helms@intrepid:/etc > ls aliases -rw-r--r-- 2 root root 2309 Jan 21 05:57 aliases helms@intrepid:/etc > ls mail -rw-r--r-- 2 root root 2309 Jan 21 05:57 aliases [Wichtig ist, dass mit "mail" das Unterverzeichnis gemeint ist. ;-) ] Gruss, Steffen --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hi Steffen, On Die, 01 Feb 2000, Steffen Moser wrote:
helms@intrepid:/etc > ls aliases -rw-r--r-- 1 root root 2309 Jan 21 05:57 aliases helms@intrepid:/etc > ls mail lrwxrwxrwx 1 root root 10 Jan 21 06:48 aliases -> ../aliases
helms@intrepid:/etc > ls aliases -rw-r--r-- 2 root root 2309 Jan 21 05:57 aliases helms@intrepid:/etc > ls mail lrwxrwxrwx 2 root root 10 Jan 21 06:48 aliases
Sicher?
Nein *g*
Die Sache mit der "2" stimmt schon. Aber beim Hardlink sind die Rechte, die Groesse und Datum/Uhrzeit AFAIK identisch mit der urspruenglichen Datei (weil es keinen Unterschied gibt), v.a. sollte dieses "l" nicht da stehen.
Du hast natürlich völlig recht, das kommt davon, wenn man sowas mal eben mit der Hand macht ;-) Das "l" steht ja auch nur für Symlink (softlink). Gruß, Sebastian -- "No worries." - Rincewind Sebastian Helms - mailto:sebastian@helms.sh (PGP available) --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (9)
-
artus-ol@gmx.net
-
B.Brodesser@online-club.de
-
chris@chrullrich.de
-
cschult@gmx.de
-
dirk@pirschel.de
-
h.pahlke@berlin.de
-
Jan.Trippler@t-online.de
-
moser@egu.schule.ulm.de
-
sebastian@helms.sh