Если копирование выполняется в некотором терминале оболочки (т.е. баш), то cp
может быть явно сказано , чтобы скопировать файл , который указывает ссылка с --dereference
, вместо самой ссылки. Поведение по умолчанию cp
- копировать файлы по их ссылкам, но многие графические браузеры файлов, по-видимому, по умолчанию пытаются копировать ссылки и обычно сохраняют большинство атрибутов.
man cp
-a, --archive
same as -dR --preserve=all
-d same as --no-dereference --preserve=links
-L, --dereference
always follow symbolic links in SOURCE
пример
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
Тот факт, что someLink
это ссылка, показывается l
флагом в первой позиции вывода списка (а `d 'обозначает каталог).
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
Файл содержит содержимое, и ссылка указывает на файл, но может использоваться практически любым способом, которым может быть файл. (Обратите внимание, что размер файла ссылки и размер текстового файла: 32 байта против 12 байтов.)
cat someFile.txt
Some content for the test file.
cat someLink
Some content for the test file.
Сначала копируем ссылку на каталог. Затем скопируйте файл в каталог, перейдя по ссылке. (Ниже также показано, что ссылки на каталоги работают аналогично ссылкам на файлы.):
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
предосторожность
Можно сделать ссылки, указывающие на полный или относительный путь. Поскольку в этом примере использовалась ссылка на основе относительного пути к цели, находящейся в том же каталоге, что и создаваемая ссылка, ссылка была разорвана при копировании в новый каталог.
cat someDirLink/newCopy
cat: someDirLink/newCopy: No such file or directory
cat someDirLink/newCopy.txt
Some content for the test file.