Как скопировать символьные ссылки с одной машины на другую?

13

Давайте предположим, что у меня есть две идентичные системы. В первой системе я создал символическую ссылку. На втором я хочу скопировать эту символическую ссылку через sftp, и символьная ссылка будет работать одинаково (то есть, если ссылка на символическую ссылку /etc/, после ее копирования, будет скопирована только символическая ссылка и только символическая ссылка (не связанные файлы))

Любые идеи о том, как я могу это сделать / если я могу это сделать? Я только хочу скопировать символическую ссылку, ничего больше; просто ссылка.

Скрытый
источник
это не работает так, как вы уже описали?
mikeserv
1
sftpне позволю тебе сделать это. rsyncможно, как можноssh cp ...
роайма
То, чего я пытаюсь достичь, это копирование по символической карте ... Я не хочу файлы ... Я просто хочу немного кода, который говорит FOLDER> ETC ... Я просто хочу создать символическую ссылку с сервера и переместить это на сервер его нужно на ... я пытаюсь взломать вложенный файл
TheHidden
1
@roaima ssh cp? как в scp? как?
technical_difficulty

Ответы:

12

Если вы скопируете символическую ссылку, вы можете скопировать архив на удаленный компьютер любым удобным для вас способом. Распаковав его, вы обнаружите, что скопировали только символическую ссылку и ничего больше. Например:

Чтобы проверить это, сначала я создал текстовый файл.

echo this is a test > file.txt

Затем создайте символическую ссылку на файл и сожмите ее в tar-архив.

ln -s file.txt link.lnk
tar czvf tarball.tar.gz link.lnk

Перенесите этот файл на другой компьютер, а затем распакуйте его:

tar xzvf tarball.tar.gz

Вы обнаружите, что есть символическая ссылка, но не оригинальный файл, на который она указала.

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

mkrufky
источник
это довольно интересно, но, к сожалению, я не думаю, что это поможет мне, я не имею никакого контроля над ведомым устройством. Все эти SFTP выполняются через API для заблокированных папок, но я пытаюсь взломать окно с помощью символических ссылок, потому что есть немного аварийная ситуация, и мне нужно получить доступ от мастера, который отправляет выбранные обновления, из соображений безопасности файлы, которые я отправляю, не выполняются, но если я могу использовать символическую ссылку, я могу ввести код в уже существующий процесс (теоретически), заменив файл через символическую ссылку ... но для этого мне нужно скопировать символическую ссылку более чем на 100% в сыром виде :(
TheHidden
@ user1779617 До сих пор неясно, что вы имеете в виду под «ведомый» и «ведущий», потому что вы, кажется, используете оба термина для сервера и клиента взаимозаменяемо. Если вам нужно создать символическую ссылку на сервере , вы можете сделать это с SFTP, однако, в зависимости от конфигурации, вы не сможете смотреть за пределы корневого царства демона SFTP. Пожалуйста, обратитесь к странице справочникаsftp ( linux.die.net/man/1/sftp )! Есть команда symlinkспециально для того, что вам, похоже, нужно.
Полемон
5

Немного неясно, как именно вы хотите иметь дело с символической ссылкой. Насколько я понимаю, вы хотите воссоздать символическую ссылку в другой системе. Симлинки зависят от файловой системы, об этом должен знать протокол, используемый для копирования файлов. Хорошим примером является использование rsyncс -aопцией.

конкретнее, -lвариант, но -a, вероятно, то, что вы хотите.

Он будет воссоздавать символические ссылки без перетягивания целей (разыменование ссылок).

Полемон
источник
Я вижу хм, поэтому не было бы способа скопировать его как файл и сохранить ссылку? У меня есть только возможность напрямую перемещать файлы, я надеялся создать символическую ссылку в той же системе и скопировать ее, или я просто надеюсь?
TheHidden
@ user1779617 Прежде всего: когда вы говорите «переместить», вы на самом деле имеете в виду «переместить» или «скопировать»? Потому что «перемещение» подразумевает удаление исходного файла (это также было причиной, по которой я отредактировал ваш вопрос). Второе: вы ограничены определенным протоколом передачи файлов (например, только FTP)? Если это так, мы должны обсудить это в рамках этого и файловых систем, о которых мы говорим.
Полемон
Только SFTP, загрузка только с компьютера, которому требуется символическая ссылка, поэтому я имею в виду копирование с главного на подчиненный SFTP, а соединение sftp только с подчиненного.
TheHidden
@ user1779617 Я предполагаю, что вы имеете в виду «клиент» (ведомый) и «сервер» (ведущий). sftpбудет перебирать подкаталоги с помощью -rпереключателя, но не будет следовать символическим ссылкам, так как он абстрагирует файловые системы. sftpподдерживает создание символических ссылок на хосте. Вы должны хотя бы попытаться загрузить только символическую ссылку (когда символическая ссылка ~/etc-> /etc/обойтись get etcбез завершающего слова /) и посмотреть, что произойдет. Это зависит от ФС сервера и клиента. Пожалуйста, измените ваш оригинальный вопрос соответственно!
Полемон
3

Я знаю, что @polemon уже ответил на это.

Но делаю немного для быстрого решения.

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

rsync -avz -e ssh /file or sym link/to/copy/ user@ip:/dest/path/

Хотя, в твоем случае нужно убедиться, что ссылки не битые!

Харшад
источник
2

Очень простое решение (для домашнего каталога):

tar -c SYMLINKFILE | ssh machine 'tar -x'

или

tar -c SYMLINKFILE | ssh machine 'tar -xC /some/other/location  '

например

tar -c .bashrc | ssh another_machine 'tar -x'

обеспечить размещение ссылки .bashrc в другом месте (например, в сети).

Пол Нойвирт
источник
0

Другие ответы уже объясняют, как перенести символическую ссылку на другой компьютер. Однако независимо от того, как вы передаете символическую ссылку, вы не сможете использовать эту символическую ссылку для доступа к файлу /etc/через FTP, SFTP, SCP, SSH или любым другим способом. Эти службы, как правило, привязаны к конкретному каталогу или иным образом лишены возможности доступа к файлам, которые не были явно предоставлены в общий доступ. Конечно, всегда есть способы обойти это на старых системах, но такие уязвимости имеют тенденцию исправляться и обновляться, как только они обнаруживаются. Извините, я не думаю, что то, что вы хотите сделать, станет возможным.

mkrufky
источник
достаточно честно, по крайней мере я пытался, я думаю :(
TheHidden