问题标签 [hardlink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
4420 浏览

c# - 列出文件的硬链接(在 C# 中)

我想编写一个程序,用硬链接显示另一个驱动器的文件。

我想让两个硬链接在文件名和其他内容上保持一致,所以我必须得到一个函数/方法,我可以在其中列出文件的所有当前硬链接。

例如:

我有一个文件C:\file.txt和第二个硬链接到D:\file.txt.

然后我重命名D:\file.txtD:\file_new.txt.

我现在也希望能够重命名 C 驱动器上的硬链接。

因此,我需要一个返回D:\file_new.txt以下硬链接的函数:

然后我也可以重命名硬链接C:\以获得D:\file_new.txt

所以我需要获取物理文件的所有硬链接。或者:使用硬链接寻址的文件的所有硬链接。

希望有人能帮忙!

编辑

Oliver 注意到硬链接不能在不同的磁盘上使用。谢谢...所以我将问题扩展到:我需要什么?交汇点?符号链接?它不仅适用于文件夹,还应该适用于文件!

0 投票
1 回答
2491 浏览

c# - C# - 计算并列出文件的硬链接位置

我目前正在寻找一个 C# 解决方案,它可以读取文件的硬链接数量及其链接位置。我正在考虑程序链接外壳扩展,它可以通过转到文件属性并列出一个文件的所有硬链接来做到这一点。我希望 C# 编码器有一个解决方案,它可以在不搜索完整磁盘的情况下执行相同的操作。

编辑1:

如果它们是同一个文件,有没有办法测试两个硬链接?

0 投票
3 回答
30662 浏览

filesystems - FAT32 格式存储上的文件系统链接

我知道 FAT32 以及 FAT16/12 既不支持符号链接也不支持硬链接。但是我想出了这个主意:

FAT 规范描述了每个文件都与一个目录条目相关联。据我了解,可以说目录中的文件条目以某种方式或其他方式指向文件的内容。

那么,如何定义两个指向相同文件内容的目录条目?或者,什么可以阻止我这样做?

用例:我的车载收音机有一个 USB 大容量存储设备,我想使用目录作为播放列表,因为收音机软件不支持播放列表。因此,对我而言,Windows 在执行此操作时的行为并不重要。

0 投票
1 回答
537 浏览

winapi - 找出两个 HANDLE 是否是指向同一文件的硬链接

(这个问题很棘手......它可能需要了解 NTFS 和/或使用 NT Native API;请注意。):)

如果给我两个HANDLEs 到两个文件,我怎样才能明确(不仅仅是很有可能)找出这两个HANDLEs 是否属于完全相同的文件并在磁盘上流式传输?

这意味着,例如检查 8 字节的 NTFS 文件 ID 是不够的,因为HANDLE具有相同文件 ID 的两个 s 可以指向同一文件的不同数据流,我需要找出这两个流是否是真的一样,只是名称不同(硬链接)。

(有什么用?这样的话,如果我想对一个文件夹内的所有文件执行操作,我不会对同一个数据流不同名称的操作执行两次。)

0 投票
3 回答
2970 浏览

windows - 在 ntfs 分区上从 linux 创建硬链接可行吗?

我找到了一个程序,它可以通过硬链接实际上相同的文件来节省空间,从而在文件系统上只留下一个文件副本,并且有多个硬链接指向它。该程序称为硬链接

这非常好,因为我终于找到了一种方法来为我在了解 rsync 和增量备份之前所做的旧备份节省备份磁盘上的空间。

经过这么长的介绍,任何读者都会期待一个问题,所以这里是:

使用硬链接来节省 ntfs 分区上的空间是否安全?硬链接当然是使用上面提到的硬链接程序从 Linux 创建的。更准确地说,Windows(任何版本)是否能够使用已被硬链接替换的文件?

非常感谢

0 投票
3 回答
4460 浏览

linux - 创建/删除许多硬链接的缺点?

我需要创建数百到数千个临时硬链接或符号链接,这些链接将在创建后不久被删除。出于我的目的,两种类型的链接都可以工作(即目标不是目录,它总是存在于同一个文件系统上)

据我了解,符号链接会创建一个包含原始文件路径的小文件。而硬链接创建对同一 inode 中数据的引用。因此,如果我要创建/删除数千个这些链接,创建和删除数千个小文件(符号链接)或数千个这些引用(硬链接)会更好吗?似乎一个对硬盘驱动器征税(可能是碎片),而另一个可能对文件系统本身征税?inode 引用存储在哪里。做这么多硬链接是否有损坏文件系统的风险?速度呢?

感谢您的专业知识!

这是一种解决方法,能够使用 ffmpeg 从目录中的任意图像子集中对电影进行编码。由于 ffmpeg 要求正确命名文件(例如 frame%04d.jpg),我意识到我可以创建指向文件子集的硬/符号链接,然后适当地命名链接。这避免了重命名原始文件并不得不实际复制数据。它工作得很好,但它需要反复创建和删除数千个链接。

我相信也可以解决这个问题: convert image sequence using ffmpeg

0 投票
1 回答
789 浏览

windows-xp - windows xp中的硬链接

有什么方法可以在 windows xp 中创建硬链接?我遇到了这个链接,但它说需要最小的vista,有什么方法可以在不使用链接魔术软件的情况下做到这一点?

0 投票
2 回答
424 浏览

c++ - 当链接数为 2 时,有没有办法完全删除一个 inode?

目前,我的数据被组织在一个具有缓存目录的卷中(首先创建或传输所有文件)。之后,卷上有合适的目录,这些目录在其子目录中包含硬链接到缓存中文件的文件。这样做是为了使同一个 inode(文件)可以在多个目录中多次硬链接。

现在,当尝试清理卷时,我递归地遍历目录(而不是缓存)并基于某些标准,取消链接文件(这基本上将缓存条目的 inode 计数减少了 1)。当我删除最后一个硬链接(将计数从 2 减少到 1)时,有没有办法让我直接删除缓存条目。这样我就不必手动解析整个缓存目录来清除其中的任何 inode,这些 inode 的链接计数仅为 1。

我已经完成了取消链接/删除功能,但找不到任何特定的用途。是否有一些清除算法在内部处理这个问题,然后我可以尝试实现它。

对此的任何帮助将不胜感激。期待及时回复。

0 投票
1 回答
303 浏览

msvcrt - MSVCRT 中的“创建硬链接”功能的名称是什么?

要修复此答案中的错误:在 MSVCRT 中创建硬链接的函数的正确名称是什么?

0 投票
1 回答
217 浏览

linux - 从另一个仓库合并/拉取时,强制版本控制不破坏硬链接?

我有一个项目,其中部分代码是公开的,而其他部分不是。

我在文件夹 E 中的企业中对完整的项目进行了版本化,并在特定文件夹 P 中放置了公共部分。我认为将硬链接放在文件夹 E 中公共文件的文件夹 P 中是个好主意。

因此,通常的工作流程应该是在企业版本的文件夹 E 上工作,偶尔去文件夹 P 提交公共文件。(请注意,如果我“单独”工作,效果很好)

问题是,当我对文件夹 E 中的文件进行一些合并/拉取/变基时,它会替换文件 -> 从而更改它们的 inode -> 因此文件夹 P 中硬链接的文件不会得到更新!

所以我的问题是:是否有一个版本控制系统可以授权在合并/拉取/变基时不更改文件的 inode 选项?

我使用 git(或 git-svn),但我同意切换到这个方便的选项。

谢谢

路易斯

PS:我看过这个问题(Git and hard links),但在这里我想利用硬链接来更有效地工作。