我将我的点文件保持在版本控制下,部署它们的脚本会创建硬链接。我也习惯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] 删除。
我来说两句