• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] Links zu Dateien umwandeln

Hi,
Der Titel ist etwas irreführend, leider.

Möchte aus einer Linksammlung mit 'echten' Verzeichnissen und gelinkten Verzeichnissen und darin wiederum Links (alo kurz: alles fein Durcheinander) eine Struktur machen, in dem statt den Links die jeweiligen Linkziele sind.

Um das ganze als Daten-CD brennen zu können...
 
Code:
	QUEL=~/Quellverzeichnis
	TARG=~/Zielverzeichnis

# Da ich keinen Weg gefunden habe, rekursiv zu kopieren und gleichzeitig allen Links
# zu folgen, werden erst Verzeichnisse angelegt (ersetzen auch Links), und dann
# der Inhalt darin.

	for dir in `ls $QUEL` ; do

		if [ -d $QUEL/$dir ] ; then

			mkdir $TARG/$dir

#			Wenn es sich um eine Datei handelt, kopiere.
#			In diesem Fall macht 'cp' aus einem Link eine Datei.

			for file in `ls $QUEL/$dir` ; do

#				Wiederum: Dateien werden kopiert, Unterverzeichnisse
#				erst angelegt und dann der Inhalt kopiert:

				if [ -f $QUEL/$dir/$file ] ; then

					cp $QUEL/$dir/$file $TARG/$dir
				else
					mkdir $TARG/$dir/$file
					cp -R $QUEL/$dir/$file/* $TARG/$dir/$file
				fi
			done
		fi
	done
Mit dieser Methode kann ich eine Linksammlung bis zu mehreren (durch das Script festgelegte) Verzeichnisebenen tief in echte Dateien umwandeln.
'cp' legt beim kopieren eines Links statt dessen eine Kopie des Linkzieles an.

Aber ich denke, oben genannter Weg ist nach dem Motto: "Warum so einfach, wenn's auch schwierig geht"
Leider ist mir der einfache Weg nicht geläufig...
oder Tante Google gefragt ?
Wie soll man das formulieren? mit "Links zu Dateien" oder so kommt man da nicht weit.
Natürlich kann man sich Linkziele zB mit 'ls -Al' herausfischen und ein Script schreiben.
Aber ich kann mir nicht vorstellen, daß es nicht auch ganz einfach geht.

Vielleicht auch direkt ein ISO so erstellen, daß den Linkzielen gefolgt wurde (mkisofs -f').
Schöner wärs, erstmal noch kein ISO, sondern einen 'echten' Verzeichnissbaum zu erstellen.
 

framp

Moderator
Teammitglied
rsync hat Optionen die beim Kopieren bei Links das ganze Verzeichnis kopieren ;)
 
Tante Google hat direkt was gefunden:

Code:
        -l, --links                 copy symlinks as symlinks
        -L, --copy-links            transform symlink into referent file/dir
            --copy-unsafe-links     only "unsafe" symlinks are transformed
            --safe-links            ignore symlinks that point outside the tree
        -k, --copy-dirlinks         transform symlink to dir into referent dir
        -K, --keep-dirlinks         treat symlinked dir on receiver as dir
        -H, --hard-links            preserve hard links

...aber noch nicht probiert.
Danke!
 
Hallo,

Code:
> ln -s ../xyz.txt link_to_xyz
> 
> ls -l
total 0
lrwxrwxrwx 1 user0 users 10 Aug 25 11:27 link_to_xyz -> ../xyz.txt
> 
> readlink link_to_xyz
../xyz.txt
>
Gruss,
Roland
 
Auch für andere Zwecke gut... Benutze Xfburn, der kann das nicht.
Ausserdem war die Frage nach dem Prinzip.
mkisofs kann das auch, also könnte man so gesehen von der Konsole aus brennen.
Habs mit 'rsync' gemacht, ist gut für meinen Zweck.
@Roland: Vielen Dank für 'readlink', hatte bisher immer sowas wie 'ls -l | awk {print $5}' (oder so ähnlich)
 
Oben