从技术上讲,我明白两者之间的区别;这只是一个用法问题。
特别是,我想将一些文件夹从较小的硬盘驱动器移到较大的硬盘驱动器上,但我需要使用某种链接来执行此操作——使用这些文件的应用程序只希望它们位于当前位置,并且不可配置。
我不确定应该将哪个参数传递给 mklink:/J 或 /D。在网络上做一些研究时,地方似乎只是选择一个或另一个,而没有解释他们为什么做出这样的选择。
数据由许多小文件和文件夹组成,这些文件和文件夹被频繁读取和写入,如果这会影响决策的话。
有什么想法吗?
谢谢。
在 Windows NTFS 文件系统上,我有一个文件(比如orig.mp3)。我通过此路径orig.mp3以正在使用的方式打开此文件(例如,通过在 VLC 中播放它)。
然后我创建一个硬链接 ( cmd /c mklink /h link.mp3 orig.mp3)。这导致两个 NTFS 路径指向完全相同的文件。
最后,我再次尝试删除链接文件(del link.mp3,或在 Windows 资源管理器中删除)。
失败并显示错误:“该进程无法访问该文件,因为它正被另一个进程使用。”
为什么?更重要的是:我怎样才能避免这种情况(除了确保没有进程使用原始文件)?我是否可以告诉 Windows 进行“延迟删除”,以便在不再使用原始文件时自动删除链接文件?
我即将开始玩弄,mklink但我仍然试图真正掌握整个“符号链接”的东西。特别是,我注意到有两种类型的链接——“软链接”和“硬链接”——但我很难真正理解两者之间的区别,或者为什么我应该更喜欢一种而不是另一种给定的用例。
到目前为止我能收集到的最多的是:
就操作系统和应用程序将如何处理链接而言,这究竟意味着什么?在决定使用其中一种还是另一种时,应权衡哪些因素?
我目前的用例是让 SkyDrive 同步实际 SkyDrive 目录之外的文件/文件夹。但是,我希望答案还可以包括供将来参考的一般准则。
我试图让符号链接在网络驱动器上工作。
我已经针对已经提出的问题尝试了建议,例如以管理员身份运行并检查目录是否已存在。不幸的是,它仍然给我以下错误:
C:\Windows\system32>mklink /d \\myserver\SomeDir\SomeLink \\myserver\SomeOtherDir\MyDir
Access is denied.
Run Code Online (Sandbox Code Playgroud)
SomeLink 是我试图创建的链接,Mydir 是我试图在其上创建的目录。
我有什么想法可以让这个工作吗?本地机器运行 Windows 7,远程机器运行 Windows Server 2008 R2 标准。
windows windows-7 symbolic-link windows-server-2008-r2 mklink
如果我通过 mklink 创建了一个目录链接,我如何确定它是符号链接、目录连接还是硬链接(即我使用的是 /d、/j 还是 /h)?
我使用mklink /D命令在 MS Windows 中创建了一些符号链接。但是在复制时,Windows 资源管理器总是执行深层复制,而不是复制符号链接本身。我怎么能复制链接?我需要将这些链接发送给其他机器上的其他用户。
我创建了一个指向我的保管箱目录中的文件的硬链接 - 该链接是在一个文件夹中创建的,该文件需要在该文件夹中被我用来编辑它的程序访问 -
mklink /h path_to_hard_link C:\dropbox\git\repo\existing_file
Run Code Online (Sandbox Code Playgroud)
我开始使用硬链接。在某些时候,我意识到更改不会传播到 repo\ 中的文件 - 文件大小、修改日期,什么都没有 - 甚至不是内容。
我究竟做错了什么 ?
编辑:是否可能依赖于程序?我的意思是我用于这些文件的编辑器确实编辑它们 - 但只编辑硬链接。链接的文件未被修改。此外,此编辑器似乎无法跟踪符号链接
EDIT2:根据surfasb链接的文章:
由于硬链接是文件的目录条目,因此应用程序可以使用其任何硬链接来修改文件。使用任何其他硬链接的应用程序可以检测到更改。
这意味着当使用适当的编辑器直接打开原始文件时必须包含修改 - 不仅仅是通过其硬链接 - 对吗?
但是,只有当用户使用硬链接访问文件时,才会更新硬链接的目录条目。例如,如果用户使用硬链接打开和修改文件,并且原始文件的大小发生变化,则用于访问该文件的硬链接也会显示新的大小。
如果我正确理解了这个可悲的英语样本,这意味着我可以有 69 个硬链接(实际上最多 1023 个)到同一个文件,显示同一个文件的不同大小?!
编辑 3:根据 surfasb 我确实理解这一点 - 文件系统的限制。无论如何 - 奇怪的事情 -情况并非总是如此- 有时属性的更改会立即返回到原始文件中 - 当有更改时 - 我现在真正担心的是我正在使用的至少一个程序似乎没有编辑链接的文件,但只有硬链接。可能的 ?
dir /a没有透露太多关于硬链接的信息 - 有什么办法可以看到它们吗?
我知道我可以将 webdav 文件夹映射到 Windows 中的驱动器号,但我需要映射约 10 个不同的 webdav 文件夹(不同的服务器)并且分配驱动器号会很难看。
是否可以以某种方式将链接创建为文件夹结构,例如使用 mklink?
我尝试了几种组合(/d、/H、/J 标志 + https://webdav.server.com/ ... 或 \\webdav.server.com@SSL\...)但没有成功。大多数组合会导致一个虚拟文件夹,当打开该文件夹时会加载相当长的时间(就像当 webdav 映射到驱动器时一样),但随后失败并显示类似的错误消息,指出它不可访问。
我有一个目录apps/myapp/,myapp.exe其中包含一个文件,该文件使用myapp.dll了其他一些 dll。
现在假设我想将其符号链接到一个目录,就像在 linux 中所做的那样。
bin/myapp.exe=> verylongpath/myapp/myapp.exe。即使用mklink bin/myapp.exe verylongpath/bin/myapp.exe
现在,当我运行 myapp 时,它对我大喊大叫它找不到 dll。这意味着 exe 不是针对它自己的工作目录运行的。这让我很伤心。
有什么办法可以让它在 ints 自己的工作目录中运行吗?谢谢!
我有一个 SSD 作为我的 C:\ 驱动器,它只有 128 Gig。
我注意到 C:\Windows 子文件夹“winsxs”和“Installer”——我已经阅读了很多地方,除非他们想要做噩梦,否则永远不要删除它们——占用了最大的空间。
那么,在将数据移动到具有更多空间的主轴驱动器之一后,我可以使用 mklink 命令创建一个连接点吗?谢谢,--吉姆