ubuntuusers.de

Softlinks "kopieren"

Status: Ungelöst | Ubuntu-Version: Kubuntu 22.04 (Jammy Jellyfish)
Antworten |

Hexe333

Anmeldungsdatum:
27. November 2019

Beiträge: 179

Hallo,

ich habe eine Ordnerhierarchie mit Dokumenten darin (Wurzelordner ist der Ordner "Daten"), teilweise habe ich Softlinks darin, die auf andere Dateien in derselben Ordnerhierarchie verweisen (bzw. will ich die Softlinks darin noch erstellen). Nun will ich den Ordner "Daten" woanders hinkopieren (von einem Datenträger auf einen anderen). Wie kann man es hinbekommen, dass die Softlinks quasi kopiert werden, nur jetzt eben auf die ebenfalls kopierte Datei verweisen?

Also z.B. Datenträger1: hat Softlink X in Ordner A, der auf Datei Y in Ordner B verweist. Datenträger2: soll diesselbe Ordnerstruktur haben also ebenfalls Ordner A und Ordner B und Datei Y in Ordner B. Außerdem soll er einen Softlink X2 haben, der auf Datei Y, nur jetzt aber innerhalb von Datenträger2, verweist.

Also der relative Pfad ab dem Wurzelordner "Daten" bleibt gleich, aber wo "Daten" steht ist unterschiedlich.

Es soll einerseits einem Umzug dienen von Datenträger1 auf Datenträger2, andererseits brauche ich was für ein Backup (bisher habe ich Backups immer von Hand mit Synchronisation mit double commander gemacht). Für ersteres gerne mit einem Befehl, für letzteres lieber ein Programm bzw. vorerst weiter mit einem Synchronisationsprogramm. Wie kann ich das anstellen?

Bisher hab ich das Kopieren mit cp und cp -s probiert, aber dann führt der Link vom zweiten zum ersten Datenträger.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9622

Wohnort: Münster

  • Wenn Du in den Softlinks relative Pfade verwendest, kann das funktionieren, sofern der Kopierbefehl wirklich Dateien kopiert und nicht die Softlinks anpasst. Oder auch nicht.

  • Wenn Du in den Softlinks absolute Pfade verwendest, kann es auch funktionieren, aber nur, wenn der Kopierbefehl die Softlinks anpasst. Oder auch nicht.

Was ein Kopierbefehl mit Softlinks standardmäßig tun soll, darüber streitet sich die Gilde der Kopierbefehle und jeder befolgt nur seine eigene Sicht bzw. das, was der Bediener über Optionen vorgibt. Somit erlebt man beim Kopieren von Softlinks in der Praxis immer wieder Überraschungen und die beste gute Praxis ist daher, Softlinks gar nicht zu kopieren, sondern nach dem Kopieren der anderen Dateien am Zielort neu zu erstellen. Wenn Du die Softlinks sowohl an der alten wie der neuen Stelle über dasselbe Skript anlegst, sollte das identische Ergebnisse ergeben, sofern beide Dateisysteme vom selben Typ sind.

Die Implementierung von Softlinks hängt ab vom Typ des Dateisystems. Zwischen unterschiedlichen Dateisystemtypen, z.B. von ext4 nach NTFS, wird Dein Vorhaben nie funktionieren oder jedenfalls erst dann, nachdem Dich der Wahnsinn befallen hat.

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: 2176

Wohnort: dahoam

kB schrieb:

Die Implementierung von Softlinks hängt ab vom Typ des Dateisystems. Zwischen unterschiedlichen Dateisystemtypen, z.B. von ext4 nach NTFS, wird Dein Vorhaben nie funktionieren oder jedenfalls erst dann, nachdem Dich der Wahnsinn befallen hat.

... wobei NTFS natürlich ein Spezialfall ist, weil es ein nicht-unixoides Filesystem ist, das natürlich keine Unix-Links kennt. Ein (Unix-)(soft-)Link ist technisch etwas völlig anderes als ein (Windows-)Shortcut.

cp bspw. kopiert mWn die Metadaten wie sie sind und macht keinen Dateicheck. D.h. kopierst Du einen softlink mit relativen Pfad, schaut der softlink nach dem Kopieren ggfs. in den Mond.

Hexe333

(Themenstarter)

Anmeldungsdatum:
27. November 2019

Beiträge: 179

kB schrieb:

  • Wenn Du in den Softlinks relative Pfade verwendest, kann das funktionieren, sofern der Kopierbefehl wirklich Dateien kopiert und nicht die Softlinks anpasst. Oder auch nicht.

Er soll ja gerade keine Dateien kopieren, sondern den Link auf den aboluten Pfad anpassen. Bisher hab ich (eine noch halbwegs überschaubare Anzahl an) Softlinks mit absoluten Pfaden erzeugt (auf die Schnelle mit dolphin). Das kann nicht passen, klar. Ich muss mal sehen, wie es mit relativen Pfaden funktioniert. Wenn da stur 1:1 der Link selbst kopiert wird, müsste es ja gehen?

Wobei Du hier in Aussicht stellst, dass es mit absoluten Pfaden funtionieren würde. Hm...

  • Wenn Du in den Softlinks absolute Pfade verwendest, kann es auch funktionieren, aber nur, wenn der Kopierbefehl die Softlinks anpasst. Oder auch nicht.

Was ein Kopierbefehl mit Softlinks standardmäßig tun soll, darüber streitet sich die Gilde der Kopierbefehle und jeder befolgt nur seine eigene Sicht bzw. das, was der Bediener über Optionen vorgibt.

Die Optionen kann ich ja recherchieren und dann so verwenden. Kann man denn irgendwo nachlesen, wie die verschiedenen Kopierbefehle damit umgehen?

Somit erlebt man beim Kopieren von Softlinks in der Praxis immer wieder Überraschungen und die beste gute Praxis ist daher, Softlinks gar nicht zu kopieren, sondern nach dem Kopieren der anderen Dateien am Zielort neu zu erstellen.

Quasi von Hand. Wenn man eine kleine Anzahl hat, mag das gehen. Ich will damit Ordnung in meine Dateien bringen und Informationen, die zu 2 (oder mehr) Themen passen, in beiden Ordnern ablegen, einmal als Datei, einmal als Link zu der Datei. Das entscheide ich per Kopf und mache es per Hand.

Die Implementierung von Softlinks hängt ab vom Typ des Dateisystems. Zwischen unterschiedlichen Dateisystemtypen, z.B. von ext4 nach NTFS, wird Dein Vorhaben nie funktionieren

Gut, soll auf ext4 bleiben. Muss ich mir dann nur merken, wenn ich notfallmäßig (alle anderen Speichermedien sind belegt) für ein Backup auf NTFS zurückgreifen müsste.

dirkolus schrieb:

cp bspw. kopiert mWn die Metadaten wie sie sind und macht keinen Dateicheck. D.h. kopierst Du einen softlink mit relativen Pfad, schaut der softlink nach dem Kopieren ggfs. in den Mond.

Aber heisst umgekehrt ja auch, wenn der relative Pfad gleich bleibt, müsste es gehen?!

Ich probiere es mal aus. Ketten mit "../" müsste man da ja dann schreiben dürfen...

Hexe333

(Themenstarter)

Anmeldungsdatum:
27. November 2019

Beiträge: 179

So, ich habs grad ausprobiert, eine kleine Beispielhierarchie von Ordnern und Datei angelegt wie im Eingangsbeitrag und ein Softlink, nun mit ln -sr und einmal den aboluten Pfad der Datei angegeben (der Dank -r in einen relativen Pfad umgewandelt wurde) und einmal direkt den relativen Link. Den Oberordner hab ich ganz woanders hinkopiert (einmal im Dateisystem und einmal auf einen anderen Stick) mit cp und es wurden die (relativen) Links kopiert, nicht die Dateien, so wie ich es wollte.

Also müsste ich bisherigen Softlinks umwandeln in relative Pfade.

double commander hab ich auch ausprobiert, man muss nur anklicken "Nein" wenn er fragt, ob er Symlinks folgen soll (neben ja, überspringen und noch anderen Optionen) (und bei einem späteren Vergleich der Symlinks den Datumsvergleich weglassen, sonst will er das beim nächsten Vergleich wieder zurückkopieren, das finde ich etwas unschön für ein Synchronisationstool (dc verwendet beim synchronisieren/kopieren nicht das Datum des ursprünglichen Symlinks). Vielleicht hat da noch jemand eine bessere Idee oder anderes Tool)

Sonst brauch ich nur noch Backuptools, die das analog zu cp machen. Basieren die üblicherweise auf cp? Welche, die eben nicht "dem Link folgen" und die zugehörige Datei kopieren wollen, sondern den Link als solchen. Und am besten auch das mit dem Datum auch richtig machen.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9622

Wohnort: Münster

Hexe333 schrieb:

[…] Er soll ja gerade keine Dateien kopieren, sondern den Link auf den aboluten Pfad anpassen.

Ein Softlink ist eine Datei, die Du ja kopieren willst. Den Inhalt einer solchen Datei, genauer Textdatei, kann man als Pfad interpretieren, das ist auch weit verbreitet so üblich, aber nicht allgemein gültig. Wegen der weiten Verbreitung einer Interpretation als Pfad wollen manche Programme besonders schlau sein und passen beim Kopieren den Inhalt an, was Du nicht willst oder jedenfalls nicht so, wie manche Programme es tun.

[…] Kann man denn irgendwo nachlesen, wie die verschiedenen Kopierbefehle damit umgehen?

Wie immer bei solchen Fragen ist die erste Anlaufstelle die Manpage des jeweiligen Programms.

Hexe333

(Themenstarter)

Anmeldungsdatum:
27. November 2019

Beiträge: 179

Hall kB,

ah, Du meinst die Sichtweise Softlinks als Datei. Das hatte ich vorher nicht verstanden, jetzt verstehe ich, was Du vorher meintest.

cp ist dann klar. Jetzt brauch ich nur was für Synchronisieren und Backups. Also muss ich erstmal alle möglichen Programme dafür zusammensuchen und dann einzeln schauen (ich hatte aufgrund Deiner vorigen Beschreibung gedacht, es gäbe irgendwo eine Diskussion darüber, jedenfalls fürs kopieren). Hat denn jedes Programm man pages (also auch GUI-Programme), die noch dazu ausführlich genug sind? Und wenn dazu nichts drinsteht, wie z.B. bei double commander, muss man es wohl einzeln ausprobieren.

Na ja, vielleicht kennt ja noch jemand was...

Antworten |