Wenn das Kopieren in einem Shell-Terminal (z. B. Bash) erfolgt, cp
kann explizit angewiesen werden, die Datei, auf die ein Link verweist --dereference
, anstelle des Links selbst zu kopieren . Das Standardverhalten von cp
besteht darin, Dateien zu kopieren, indem Sie ihren Links folgen. Viele Browser für grafische Dateien scheinen jedoch das Standardverhalten zu haben, Links zu kopieren und die meisten Attribute im Allgemeinen beizubehalten.
man cp
-a, --archive
same as -dR --preserve=all
-d same as --no-dereference --preserve=links
-L, --dereference
always follow symbolic links in SOURCE
Beispiel
touch SomeFile.txt
echo "some content" > someFile.txt
ln -s -T someFile.txt someLink
echo "Some content for the test file." > someLink
mkdir someDirectory
ln -s -T someDirectory someDirLink
Die Tatsache, dass someLink
es sich um einen Link handelt, wird durch das l
Flag an der ersten Position der Listenausgabe angezeigt (und "d" bezeichnet ein Verzeichnis).
ls -l
drwxrwxr-x. 2 user group 4096 Aug 17 17:17 someDirectory
lrwxrwxrwx. 1 user group 13 Aug 17 17:17 someDirLink -> someDirectory
-rw-rw-r--. 1 user group 32 Aug 17 17:01 someFile.txt
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 someLink -> someFile.txt
Die Datei enthält den Inhalt und der Link verweist auf die Datei, kann jedoch auf nahezu jede Art und Weise verwendet werden, die die Datei sein könnte. (Beachten Sie die Größe der Linkdatei im Vergleich zur Größe der Textdatei: 32 Bytes gegenüber 12 Bytes.)
cat someFile.txt
Some content for the test file.
cat someLink
Some content for the test file.
Kopieren Sie zunächst den Link in ein Verzeichnis. Kopieren Sie dann die Datei über den Link in das Verzeichnis. (Das Folgende zeigt auch, dass Verzeichnisverknüpfungen ähnlich wie Dateilinks funktionieren.):
cp -a someLink someDirLink/newCopy
cp -L someLink someDirectory/newCopy.txt
ll -l someDirLink/
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 newCopy -> someFile.txt
-rw-rw-r--. 1 user group 32 Aug 17 17:36 newCopy.txt
Vorsicht
Es können Verknüpfungen hergestellt werden, die auf einen vollständigen Pfad oder einen relativen Pfad verweisen. Da in diesem Beispiel eine Verknüpfung verwendet wurde, die darauf basiert, dass sich der relative Pfad des Ziels im selben Verzeichnis befindet wie die erstellte Verknüpfung, wurde die Verknüpfung beim Kopieren in ein neues Verzeichnis unterbrochen.
cat someDirLink/newCopy
cat: someDirLink/newCopy: No such file or directory
cat someDirLink/newCopy.txt
Some content for the test file.