如何将符号链接文件从Linux复制到Windows,然后再复制到Linux,但仍将其保留为符号链接

如何将符号链接文件从Linux复制到Windows,然后再复制到Linux,但仍将其保留为符号链接,第1张

概述我的 Linux机器上有一个符号链接. 我想只将符号链接(不是目标)复制到Windows机器,然后将此符号链接从Windows机器复制回其他Linux机器,符号链接应继续工作. 我尝试了什么: >我gziped符号链接 >使用WinSCP将gzip压缩文件移动到Windows计算机 >提取的符号链接 >使用WinSCP将符号文件移动到Linux计算机 现在这个文件不再是符号链接了. 有人知道这样做 我的 Linux机器上有一个符号链接.

我想只将符号链接(不是目标)复制到windows机器,然后将此符号链接从windows机器复制回其他linux机器,符号链接应继续工作.

我尝试了什么:

>我gziped符号链接
>使用WinSCP将Gzip压缩文件移动到windows计算机
>提取的符号链接
>使用WinSCP将符号文件移动到linux计算机

现在这个文件不再是符号链接了.

有人知道这样做的诀窍吗?

解决方法 在* nix中,符号链接通常只是具有“symlink”属性的纯文本文件.该文件包含链接目标的路径. windows上不存在“symlink”属性.因此,当您在windows上提取符号链接时,它将成为常规文本文件[虽然它也可能出错,但它可能取决于您用来提取存档的工具].复制回* nix时,它将保留常规文本文件.

唯一的解决方案是在某些外部元数据存储中保留“symlink”属性,并在上载文件或创建存档时恢复该属性.

虽然我不知道任何支持这个的工具.

你绝对可以编码.

>使用WinSCP:您生成一个生成WinSCP script的代码.代码将递归迭代本地目录结构.对于文件,它将生成put命令以上载它.对于符号链接,它将生成ln命令以创建符号链接.为了区分符号链接,您可以使用一个简单的启发式方法(符号链接=带有斜杠的简短单行文本文件).一种正确的方法是在提取存档时记住文件符号链接属性(但是你也必须自己编写提取代码,请参阅下面的提示).
>使用存档:
我最近为ZIP存档实现了这个. (即使在windows上)您可以使用PHP方法ZipArchive::setExternalAttributes将存档文件标记为符号链接.请注意,该功能仅适用于PHP 5.6.

示例代码:

$symlink = true; // is symlink?$dir = false; // is folder?$mode = "755"; // permissions$local_path = "C:\zip\folder\mylink";$zip_path = "folder/mylink";$attr =     (1 << 14) | // this bit seems to be always set    (1 << ($dir ? 30 : 31)) |    ($symlink ? (1 << 29) : 0) |    octdec($mode) << 16;$zip->addfile($local_path,$zip_path);$zip->setExternalAttributesname($zip_path,ZipArchive::OPSYS_UNIX,$attr);

如果您对Python更熟悉,请参阅How do I set permissions (attributes) on a file in a ZIP file using Python’s zipfile module?它仅处理权限,但您可以使用符号链接位轻松扩展它,根据我的PHP示例.

总结

以上是内存溢出为你收集整理的如何将符号链接文件从Linux复制到Windows,然后再复制到Linux,但仍将其保留为符号链接全部内容,希望文章能够帮你解决如何将符号链接文件从Linux复制到Windows,然后再复制到Linux,但仍将其保留为符号链接所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1026645.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存