Як скопіювати посилання як символьні посилання з однієї машини на іншу?


13

Припустимо, у мене є дві однакові системи. У першій системі я створив символічне посилання. На другому я хочу скопіювати це посилання через sftp, і символьна посилання працюватиме однаково (тобто, якщо посилання на неї посилається /etc/після її копіювання, буде скопійовано лише символьне посилання, і тільки символьне посилання (не пов'язані файли))

Будь-які ідеї, як я можу це зробити / чи можу це зробити? Я хочу лише скопіювати символічне посилання, нічого іншого; просто посилання.


це не працює так, як ви вже описували?
mikeserv

1
sftpне дозволить вам це зробити. rsyncможе, як можеssh cp ...
roaima

Я намагаюся досягти - це копіювання на символічну карту ... Я не хочу файлів .. Я просто хочу трохи коду, який говорить FOLDER> ETC ... Я просто хочу створити посилання з сервера і перемістити це на сервер його потрібно на ... я намагаюся зламати із вкладеного файлу
TheHidden

1
@roaima ssh cp? як у scp? як?
технічна_складність

Відповіді:


12

Якщо ви націлите на симпосилання, ви можете скопіювати тарбол на віддалену машину будь-яким способом. Коли ви знімете його, ви побачите, що ви скопіювали лише символічне посилання та більше нічого. Наприклад:

Щоб перевірити це, спершу я створив текстовий файл.

echo this is a test > file.txt

Потім створіть символьне посилання на файл і стисніть його в gzip tar.

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

Перенесіть цей файл на іншу машину, а потім розпакуйте його:

tar xzvf tarball.tar.gz

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

Звичайно, якщо ви хочете перенести і вихідний файл, і симпосилання, зберігаючи їх взаємозв'язок, ви можете помістити їх і в тарбол, і вони будуть перенесені, і символічне посилання все одно має бути правильно вказано на вихідний файл, коли ви видаляєте його. тарбол у місці призначення.


це досить цікаво, але, на жаль, я не думаю, що це допоможе мені, я не маю ніякого контролю над веденим, всі ці SFTP робляться через API, щоб заблокувати папки, але я намагаюся зламати вікно за допомогою символьних посилань, тому що є трохи надзвичайна ситуація, і мені потрібно отримати доступ від майстра, який штовхає вибрані оновлення, з міркувань безпеки файли, які я надсилаю, не виконуються, але якщо я можу передати посилання, я можу ввести код у вже існуючий процес (теоретично), замінивши файл через симпосилання ... але для цього мені потрібно скопіювати посилання на 100% необробленого :(
TheHidden

@ user1779617 Досі незрозуміло, що ви маєте на увазі під "рабом" та "майстром", оскільки ви, здається, використовуєте обидва терміни як для сервера, так і для клієнта. Якщо вам потрібно створити симпосилання на сервері , ви можете зробити це за допомогою SFTP, однак залежно від конфігурації, ви не зможете шукати за межами закріпленого царства SFTP-демона. Будь ласка, зверніться до довідкової сторінки sftp( linux.die.net/man/1/sftp )! Існує команда symlinkспеціально для того, що вам здається потрібно.
полем

5

Трохи незрозуміло, як саме ви хочете мати справу з симпосиланням. Як я розумію, ви хочете відтворити симпосилання в іншій системі. Символьні посилання залежать від файлової системи, протокол, який використовується для копіювання файлів, повинен знати про це. Хороший приклад - використання rsyncз -aопцією.

точніше, -lваріант, але -aце, мабуть, те, що ви хочете.

Він відтворить символьні посилання, не тягнучи цілі (відкидання посилань).


Я бачу hm, тому не було б можливості скопіювати його як файл та зберегти посилання? У мене є лише можливість безпосередньо переміщувати файли, над якими я сподівався побудувати симпосилання на ідентичній системі та скопіювати її, або я просто сподіваюся?
TheHidden

@ user1779617 насамперед: коли ви говорите "переміститися", ви насправді маєте на увазі "перемістити" чи "скопіювати"? Тому що "переміщення" передбачає видалення оригінального файлу (це також було причиною того, що я редагував ваше запитання). Друге: ви обмежені певним протоколом передачі файлів (як FTP)? Якщо так, ми повинні обговорити це в межах цього і файлових систем, про які ми говоримо.
полем

Тільки SFTP, завантажуйте лише з машини, якій потрібна символьна посилання, тому я маю на увазі копію з ведучого на тільки підлеглий SFTP, а з'єднання sftp - лише з підлеглого.
TheHidden

@ user1779617 Я припускаю, що ви маєте на увазі "клієнт" (раб) і "сервер" (майстер). sftpбуде перетинати підкаталоги з -rкомутатором, але не буде слідувати посиланням, оскільки це абстрагує файлові системи. sftpпідтримує створення символьних посилань на хості. Потрібно, принаймні, спробувати завантажити просто символьне посилання (коли символьне посилання ~/etc-> /etc/зробити get etcбез трейлінгу /) і подивитися, що відбувається. Це залежить від FS сервера та клієнта. Будь ласка, відредагуйте своє оригінальне запитання відповідно!
полем

3

Дуже просте рішення (для домашнього каталогу):

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 з посиланням на інше (наприклад, мережеве) призначення.


3

Я знаю, що @polemon вже відповів на це.

Але роблю мій маленький тат для швидкого вирішення.

Мені довелося зробити людину rsync, щоб знати, який перемикач я хочу використовувати ...

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

Хоча, у вашому випадку вам потрібно переконатися, що посилання не порушені!


0

Інші відповіді вже пояснюють, як перенести символічне посилання на іншу машину. Однак, незалежно від того, як ви передаєте символьне посилання, ви не зможете використовувати це символьне посилання для доступу до файлу /etc/через FTP, SFTP, SCP, SSH чи будь-яким іншим способом. Ці сервіси, як правило, укладаються в певний каталог або іншим чином перешкоджають надавати доступ до файлів, які не надавались явному спільному доступу. Звичайно, завжди існують способи зламати це на старих системах, але такі вразливості, як правило, виправляються та модернізуються, як тільки вони знайдені. Вибачте, я не думаю, що те, що ти хочеш зробити, стане можливим.


Досить справедливо, принаймні, я намагався здогадуватися :(
TheHidden
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.