linux - 删除文件后保持硬链接(hard link)连接

标签 linux bash hardlink

我试图实现一些我想象中很简单的事情,但最终比预期更难。

我有一个文件夹:source/。我有第二个:target/。我在第一个文件夹中创建了一个文件 test.jar。然后,我希望该文件在我的第二个文件夹中出现并可执行。我看到 3 个选项:

  • 手动复制/粘贴我的文件。它有效,但是......我不想每次更新文件时都这样做。

  • 符号链接(symbolic link)。它有效,但如果我执行 jar 文件,上下文是 source/ 而不是我想要的 target/

  • 硬链接(hard link)。这正是我所需要的,但问题是 test.jar 没有被修改,而是生成了。这意味着删除 source/test.jar 后,target.test.jar 仍然引用旧文件...是否可以强制这两个文件始终具有相同的值?

感谢您的帮助!

编辑:现在,我通过添加一行将我的文件从源/复制到目标/的脚本来解决这个问题,生成 jar 后无论如何我都会执行该脚本。我想我想做的事其实是不可能的。它需要一种新的链接方式,在给定路径名而不是 inode 的情况下链接 2 个文件的内容...

最佳答案

不要创建文件的软链接(soft link)。创建整个文件夹的软链接(soft link)。

类似

ln -s {whatever path}/source/ {whatever path}/target

然后文件夹 target/是第一个文件夹的文件夹链接,上下文应该相同。

您还可以尝试使用 git(本地)并将 source/ checkout 到文件夹目标。

关于linux - 删除文件后保持硬链接(hard link)连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26423355/

相关文章:

php - 写入 Google Cloud Bucket 失败

python - 将具有多个子选项的命令行选项传递给 python 脚本 -- shell 脚本

ntfs - 如何枚举指向文件的所有 NTFS 硬链接(hard link)的路径?

php - 用PHP编辑硬链接(hard link)或软链接(soft link)的目标位置内容

linux - Nginx 阻止访问引用 url

c - 是否有预先存在的函数或代码可用于计算 POSIX 程序中的 TCP 段校验和

bash - ffprobe 从音频文件中获取位深度

bash - 从 zsh 恢复到 bash 后 Vim/Vundle 坏了

linux -/var/spool/mail 和/var/mail/root 相同的 inode 但只有一个链接数

linux - 哪个是在虚拟机环境中安装实用软件最轻的 Linux 发行版?