就地断开硬链接?

0xC0000022L

我将我的点文件保持在版本控制下,部署它们的脚本会创建硬链接。我也习惯etckeeper将我/etc置于版本控制之下。最近,我收到了这样的警告:

warning: hard-linked files could cause problems with bzr

简单的副本(cp filename.ext filename.ext)不起作用:

cp: `filename.ext' and `filename.ext' are the same file

重命名/移动文件(跨卷除外)也不会破坏硬链接。

所以我的问题是:是否有一种方法可以在不真正知道该文件的其他硬链接在哪里的情况下,断开与该文件的硬链接?

吉勒斯“别再邪恶了”
cp -p filename filename.tmp
mv -f filename.tmp filename

使其可编写脚本:

dir=$(dirname -- "$filename")
tmp=$(TMPDIR=$dir mktemp)
cp -p -- "$filename" "$tmp"
mv -f -- "$tmp" "$filename"

先进行复制,然后再将其移动到位,具有以下优点:文件从原子上从硬链接更改为单独的副本(没有时间点filename是部分或丢失)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章