如何将符号链接作为符号链接从一台计算机复制到另一台计算机?


13

假设我有两个相同的系统。在第一个系统上,我创建了一个符号链接。在第二个上,我想通过sftp复制该符号链接,并且符号链接应该工作相同(即,如果将符号链接链接到/etc/,将其复制过来,则将仅复制符号链接,并且仅复制符号链接(而不是链接文件))

关于如何执行此操作/如果可以执行此操作的任何想法?我只是想复制的符号链接,没有别的; 只是参考。


它不像您描述的那样起作用吗?
mikeserv

1
sftp不会让你那样做。rsync可以,可以ssh cp ...
roaima 2015年

我想要实现的事情是在符号映射上进行复制...我不想要文件..我只想要一段代码,说FOLDER> ETC ...我只想在服务器上创建一个符号链接并移动它到服务器上它需要的...我试图破解一个封闭的文件
TheHidden 2015年

1
@roaima ssh cp吗?如在SCP?怎么样?
Technical_difficulty

Answers:


12

如果对符号链接进行压缩,则可以将压缩文件以任意方式复制到远程计算机上。解压缩它后,您会发现仅复制了符号链接,而没有其他任何内容。例如:

为了对此进行测试,首先我创建了一个文本文件。

echo this is a test > file.txt

然后创建一个指向文件的符号链接,并将其压缩为tar gzip。

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

将此文件传输到另一台计算机,然后解压缩:

tar xzvf tarball.tar.gz

您会发现符号链接在那里,但不是它指向的原始文件。

当然,如果要在保留它们之间关系的同时传输原始文件和符号链接,可以将它们都放在tarball中,并且它们都将被传输,并且在解压缩时,符号链接仍应正确指向原始文件。目标位置的压缩包。


这是相当有趣的,但可悲的是,我认为它不会对我有帮助,我对从站没有任何控制权,所有这些SFTP都是通过API完成以锁定文件夹,但是我尝试使用符号链接来破解该盒子,因为有一些紧急情况下,出于安全原因,我需要获得推送更新的主服务器的访问权限,出于安全原因,我发送的文件不执行,但是如果我可以进行符号链接,则可以通过符号链接替换文件(理论上)将代码注入到现有的进程中...但是要做到这一点,我需要复制超过100%原始值的符号链接:(
TheHidden 2015年

@ user1779617仍然不清楚您对“从属”和“主控”的含义,因为您似乎可以同时使用服务器和客户端这两个术语。如果需要在服务器上创建符号链接,则可以使用SFTP进行操作,但是根据配置,您可能无法查看SFTP守护程序的chroot范围之外。请参考sftplinux.die.net/man/1/sftp)的手册页!有symlink专门针对您似乎需要的命令。
polemon

5

尚不清楚您要如何正确处理符号链接。据我了解,您想在另一个系统上重新创建符号链接。符号链接取决于文件系统,用于复制文件的协议必须了解这一点。一个很好的例子是使用rsync-a选项。

更具体地说,是-l选项,但-a可能正是您想要的。

它将重新创建符号链接,而不会拉扯目标(取消引用链接)。


我看到了hm,因此无法像文件一样复制它并保留链接?我只能直接将文件移到我希望在同一系统上构建符号链接并将其复制到上面的能力,或者我只是抱有希望?
TheHidden 2015年

@ user1779617首先:当您说“移动”时,您实际上是在说“移动”还是“复制”?因为“移动”意味着删除原始文件(这也是我编辑您的问题的原因)。第二件事:您是否局限于特定的文件传输协议(仅适用于FTP)?如果是这样,我们应该在此范围内以及我们正在讨论的文件系统中进行讨论。
polemon

仅SFTP,仅从需要符号链接的计算机上下载,因此我的意思是仅从主服务器复制到从属服务器,而sftp连接仅从从服务器复制。
TheHidden's

@ user1779617我假设您的意思是“客户端”(从属)和“服务器”(主)。sftp将使用-r开关遍历子目录,但不遵循符号链接,因为它抽象了文件系统。sftp支持在主机上创建符号链接。您至少应该尝试下载符号链接(当符号链接为~/etc->时/etc/不要get etc拖尾/),然后看看会发生什么。它取决于服务器和客户端的FS。请相应地编辑您的原始问题!
polemon

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已经回答了这个问题。

但是请花点时间快速解决。

我必须做man rsync才能知道我想使用哪个开关...

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

虽然,根据您的情况,您需要确保链接没有中断!


0

其他答案已经说明了如何将符号链接传输到另一台计算机。但是,无论您如何传输符号链接,都将无法使用该符号链接/etc/通过FTP,SFTP,SCP,SSH或任何其他方式访问文件。这些服务往往被chroot到给定目录,或者被阻止提供对未明确共享的文件的访问。当然,总是有办法在较旧的系统上进行破解,但是一旦发现此类漏洞,便会立即进行修补和升级。对不起,我认为您想做的事不会实现。


足够公平,我至少尝试过:(
TheHidden 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.