7

Почему команда scp не копирует ссылки с локального компьютера на другой?

scp -rp dir linux:/dir_target

Как я могу скопировать ссылки, когда в исходном каталоге у меня есть и файлы, и ссылки?

2 ответа2

8

Если я правильно понимаю, что вы хотите правильно. Вы хотите точно отразить dir на локальной машине в dir_target в linux, и он копирует содержимое символической ссылки, а не копирует саму символическую ссылку. Чтобы сделать точную копию, вам нужно использовать rsync вместо scp.

rsync -Wav --progress dir linux:dir_target

Я подозреваю, что будет иметь желаемый результат. Обычно я в любом случае использую rsync, потому что он будет копировать только те файлы, которые нужно скопировать, и, как правило, он более интеллектуален, чем scp.

6

Это хороший вопрос. К сожалению, scp не копирует символические ссылки, и похоже, что нет планов его добавления: https://bugzilla.mindrot.org/show_bug.cgi?id=485.

Однако альтернативы существуют. Вы могли бы:

  • Используйте tar cvfz для сжатия папки (tar сохранит ссылки); затем скопируйте файл tar
  • Используйте переключатель rsync -e ssh для синхронизации по ssh (например, rsync -ave ssh /src/dir user@hostname:/folder)
  • Используйте команду, подобную этой, чтобы найти и перечислить символические ссылки, а затем воссоздать их на другой стороне (не очень, но я подумал реализовать это самостоятельно):

    ls -la `find openddr_ODRINT1/ -type l`

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .