问题标签 [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 投票
1 回答
269 浏览

windows - Windows 硬链接 - 防止写入

我有一堆文件,我会在某个时候下载然后自定义。我想保留原件,但也允许修改,我想使用硬链接来做到这一点。

我想我首先将这批文件下载到某种存储库中,然后在我的工作位置创建硬链接。我想让用户删除他的文件(例如删除硬链接),这不会造成问题。

但是我也想让他写信给他们,在这种情况下,我希望我的原始文件在存储库中保持不变,这样我以后可以恢复。我怎样才能透明地做到这一点,而不实际锁定文件并强迫他删除它并重新创建它?

任何想法都非常感谢,谢谢。

考斯敏

0 投票
2 回答
9241 浏览

linux - 如何在 Linux 上创建带有链接的目录副本

我在 Linux 上有一系列目录,每个目录都包含大量文件和数据。这些目录中的数据是自动生成的,但多个用户将需要对该数据执行更多分析并生成更多文件、更改结构等。

由于这些数据目录非常大,我不希望几个人复制原始数据,所以我想复制目录并从新目录链接到原始数据。但是,我希望将任何更改仅保留在新目录中,并将原始目录保留为只读。我不希望只链接我定义的特定文件,因为这些目录中的数据非常多样。

所以我想知道是否有一种方法可以通过链接到原始目录来创建目录的副本,但仅将任何更改的文件保留在新目录中。

0 投票
1 回答
127 浏览

bash - 在 NAND 闪存上突然创建的硬链接

我对在我(作为 usr1)拥有的配置文件和我在操作系统守护程序(每 5 分钟)中创建的临时文件之间突然创建的硬链接感到惊讶,以便从原始配置文件中复制。

复制回原始文件后,我使用 rename(*file2, *file1); 在 C 中,它会杀死对 config.txt.tmp 的任何跟踪

该目录在 mnt /sram 驱动器上是 root 拥有的,并且没有人对嵌入式机器具有 root 访问权限。存储介质是嵌入式 Linux 2.6.10 上的 NAND 闪存 SRAM

ls -l节目

config.txt.tmp 应该被创建,从 config.txt 复制,将配置参数发送到 config.txt,然后在 5-7 个 C 行内自动删除

该目录是 root 拥有的,无法创建硬链接。

有人对低级函数中的“硬链接”创建有解释吗?我会面临竞争状况吗?或者它可能是一些用于通过闪存存储的内核代码?还是Linux中的错误?

我的代码运行了 5 年,100 台机器,最近只有 1 台机器出现了这个问题。

0 投票
2 回答
1121 浏览

filesystems - 在 NTFS 卷上 CreateHardLink() 失败,错误代码为 1(函数不正确)

我们有一个使用 NTFS 硬链接的桌面应用程序。该应用程序已在全球超过 400K 用户 PC 上成功分发和使用。

但是,有一位客户的 CreateHardLink() 函数始终失败,错误代码为 1(函数不正确)。这发生在同一家公司的多台机器上。所有这些机器都运行 Windows XP,并且问题发生在 NTFS 分区上。

我们已要求用户运行 fsutil.exe 以确认卷文件系统实际上是 NTFS,并且“fsutil.exe hardlink create newname.txt existing.txt”无法显示确切的错误消息。

知道是什么原因造成的吗?

0 投票
4 回答
1212 浏览

linux - 无法硬链接 gitconfig 文件

我正在尝试创建一个 git 存储库来存储我所有的点文件和配置文件。我的想法是简单地创建指向我关心的所有文件的硬链接,并将这些链接存储在他们自己的目录中,我可以将其变成存储库。

我的 ~/.gitconfig 文件遇到了一些问题。似乎每当我运行“git config”命令时,我创建的链接不再指向正确的位置,例如存储库中的文件不再正确更新。

这是一个使用 shell 和交互式 ruby​​ 来确定文件链接状态的示例。

我认为这与 git 编写 .gitconfig 文件的方式有关。有谁知道为什么会发生这种情况,或者有任何创造性的解决方法?

0 投票
1 回答
304 浏览

macos - 准备 .dmg 文件时,有没有办法合并冗余文件?

我的公司提供了一个包含几个基于 Qt 的 MacOS/X GUI 应用程序的软件包;该软件包以 .dmg 文件的形式提供,“安装”包括双击 .dmg 图标,然后将一个或多个应用程序图标拖到他想要保留它们的位置(例如,拖到他自己的 Applications 文件夹)。

这很好用,但是 .dmg 文件相当大(例如 40+MB),如果可能的话,我想减小它的大小,以减少下载它所需的时间。我注意到的一件事是,包中的应用程序都有大量共同的大文件(Qt 库、图形资源文件等),目前我们在 blah.xml 中包含每个文件的单独副本。每个包含的应用程序的 app/Contents 文件夹——大概这就是 .dmg 文件如此之大的原因。

所以我的问题是,有没有办法修改 .dmg 使其不需要包含这些文件的多个副本,因此不是那么大?理想情况下,我希望这样做不需要用户运行特殊的安装程序,并且如果用户将它们移动到不同的(或意外的)文件夹或删除它们中的任何一个,也不会导致任何应用程序中断。

这似乎是硬链接的理想应用程序 - 即准备 .dmg 文件的输入,以便一个应用程序包含实际文件,而其他应用程序包含到这些文件的硬链接,以便在用户之后从 .dmg 文件中解压应用程序,文件在逻辑上保持相互独立(特别是如果用户移动或删除应用程序 A,应用程序 B 不会停止工作)。但是 AFAICT MacOS/X 不支持未命名为 Time Machine 的应用程序的硬链接 [编辑:到目录]。:^(

0 投票
1 回答
134 浏览

visual-studio-2010 - Mercurial 存储库和 MSVS - 两个项目和共享文件

我目前正在 MS VS2010 中开发一个基于客户端-服务器架构的应用程序,VS 中的每个部分都有一个项目。直到最近,他们都在 Hg 中拥有自己的存储库,但我决定将它们移动到一起,因为现在共享了很多文件。

我一直在使用硬链接来确保将一个文件上的更改传播到另一个文件夹/项目中的同一文件。但是,如果您克隆存储库或从在线存储库中签出,则硬链接会损坏。

我已经尽可能多地阅读了 Hg 的软链接和硬链接,在这一点上,它们似乎都不是一个好的、可移植的解决方案。您建议在两个项目之间共享文件的哪种方法,请记住,理想情况下,我希望在 VS 中也反映一个干净的结构?

最好的问候,马克斯。

0 投票
1 回答
147 浏览

macos - 是否可以在文件系统上创建“弱引用”硬链接?

一些编程语言能够区分强引用对象和弱引用对象,以便在所有强引用消失后,弱引用对象成为垃圾回收的候选对象。

文件系统上的硬链接是否有类似的概念?这是一个理论API:

符号链接有点给你这个,除了 A 的符号链接仍然会出现在磁盘上(即使它的基础文件已经消失),而且我想利用直接指向同一个 inode 的优势(用于跟踪移动,重命名主文件等)。是否有任何文件系统实际上支持这个或类似的东西?

0 投票
3 回答
2521 浏览

c - 使用 dup() 创建重复文件描述符和创建硬链接之间的区别?

我刚刚试用了这个程序,我使用 dup 复制打开文件的文件描述符。

我已经对同一个文件进行了硬链接,并打开了同一个文件以读取程序中文件的内容。

我的问题是有什么区别?

我知道 dup 为我提供了对文件的运行时抽象,并且硬链接更多地指的是 filsystem 实现,但我不明白需要使用一个而不是另一个。

使用一个比另一个有什么优势?

如果我们想引用相同的文件位置而不是创建文件描述符,为什么不能显式引用硬链接,反之亦然?

我正在使用 Linux 和标准 C 库。

0 投票
3 回答
2257 浏览

python - 在 Windows 7 中硬链接整个目录的内容

归档这个的最好方法是什么?我正在考虑一个批处理脚本,该脚本将源文件夹和目标文件夹作为输入,然后递归地遍历源文件夹,并为每个文件在目标文件夹中创建指向该文件(同名)的硬链接。

我尝试使用 for 循环执行此操作,但我对批处理脚本的经验有限,而且我不知道如何拆分源文件夹名称以在目标文件夹中重新创建相同的目录结构。任何提示将不胜感激!

PD:该解决方案可以使用任何脚本语言。我目前安装了 python 2.7.3