【问题标题】:Copy symbolic link over network通过网络复制符号链接
【发布时间】:2011-02-05 15:26:34
【问题描述】:

我正在编写一个源代码控制应用程序。现在我想使用 BSD 套接字通过网络将文件从一台机器复制到另一台机器。我也不想遵循符号链接,而是将链接本身复制到另一台机器。我有点卡在这个上。

我想到的一个选项是使用readlink() 命令,将数据发送到机器的另一端并将接收到的内容写入文件。我什至不知道这是否可行,因为我不知道不同的操作系统(在我的例子中是 Ubuntu 和 Mac OS X)在符号链接中是否具有相同的文件结构。而且我什至不知道将这些接收到的内容写入文件是否会自动使其成为符号链接。老实说,我几乎不怀疑这一点。也许带有O_SYMLINK 标志的open() 命令可以创建一个符号链接并写入它?

我想到的另一个选择是让另一台机器知道我们正在处理一个链接并在该机器上使用symlink() 建立该链接,但这里我有两个问题。首先,我如何获得符号链接在文件系统上指向的绝对文件名。第二个问题是我不知道用不存在的文件调用symlink() 是否有效?

如果有人能解释一下,我将不胜感激, ief2

【问题讨论】:

    标签: c unix networking copy symlink


    【解决方案1】:

    您应该在源系统上使用 readlink,在目标系统上使用 symlink。符号链接实际上并没有“符号链接中的文件结构”;符号链接只包含一个文件路径(绝对或相对)。

    您应该按原样复制符号链接,即。不要尝试将其调整为目标系统。在目标文件不存在的地方有符号链接是完全可以的(它们被称为“损坏的符号链接”)。用户必须设置有意义的链接(可能是绝对的,但通常是相对的);如果他们不这样做,事情就会以可预测的方式失败。

    【讨论】:

      【解决方案2】:

      为什么不这样做: 焦油 cvfp - . | ssh user@remote "cd targetdir; tar xfp -" ?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-16
        • 1970-01-01
        • 2011-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多