проблема
При копировании файлов с помощью cp -H
или cp -L
я получаю те же результаты:
$ ls -l fileA
fileA -> fileB
$ cp fileA somewhere/ -H
$ ls -l somewhere/
fileA # fileA is a copy of fileB, only renamed, with same properties!
Этот ответ здесь описывает оба варианта как аналогичные UNLESS, используемые в сочетании с -R
. Не для меня. Мягкие - файлы с жесткими ссылками становятся переименованными копиями файлов, на которые они указывают в источнике.
Вопрос :
Что такое правильное использование cp -H
и cp -L
? Это ожидаемое поведение?
Моя попытка решить :
man cp
говорит мне совершенно одинаковы для обоих вариантов, но info cp
«s формулировка делает его еще более запутанной для меня. Может быть, кто-нибудь поможет мне разобраться в этом немного:
-H
Если аргумент командной строки указывает символическую ссылку, скопируйте файл, на который он указывает, а не саму символическую ссылку . Тем не менее, скопируйте (сохраняя природу) любую символическую ссылку, которая встречается при рекурсивном обходе.
Это звучит как противоречие для меня: я предполагаю, что « характер символической ссылки» заключается в том, что она указывает куда-то ...
-L, --dereference
При копировании с них следуйте по символическим ссылкам. С этой опциейcp
невозможно создать символическую ссылку. Например, символическая ссылка (на обычный файл) в исходном дереве будет скопирована в обычный файл в дереве назначения.
Я действительно знаю, что символическая ссылка не является обычным файлом, но ... я признаю, что здесь слишком много объяснений.
info cp
и изо всех сил пытался выяснить, что на самом деле означает выбор слов в этой опции & ndash; и о чем эта публикация. Публикация также содержит фактическую формулировку info cp
- таким образом, я, по крайней мере, должен был ее открыть…;)
info cp
, ищи-R
. Это говорит,Copy directories recursively.
но вы тестируете с не-каталогами. Разница в том, что внутри копируемых каталогов, а не аргументов командной строки.