我在 centos 6.5 vps 服务器上有一个奇怪的硬链接。我猜这是人造的,但我不是做这件事的人。
df
告诉一些信息。
[root@root]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/simfs 209715200 128660820 81054380 62% /
none 4194304 4 4194300 1% /dev
none 4194304 0 4194304 0% /dev/shm
/dev/simfs 209715200 128660820 81054380 62% /var/www/username/data/www/test.site.biz/photo
ls -li
没有说任何有用的东西
[root@vz65646 test.site.biz]# ls -li
total 7952
79435160 drwxr-xr-x 2 someuser someuser 8130560 Oct 25 20:52 photo
硬链接文件夹是photo
.我的错误rm -rf test.site.biz
导致了不好的事情发生。也就是说,其他地方的照片目录变干净了。
我认为恢复数据是不可能的。然而,我想弄清楚这里发生了什么,这样我就不会重复同样的错误两次。
非常感谢任何提示。
答案1
您有两个已安装的具有相似特征的文件系统:相同的设备名称、相同的磁盘使用情况。事实上,这些很可能是同一设备。例如,如果您在不同位置安装相同的网络文件系统,则可能会发生这种情况。鉴于这是一个本地文件系统,如来源绝地在评论中指出,这很可能是绑定挂载,由类似 的命令创建mount --bind /origin /var/www/username/data/www/test.site.biz/photo
。
如果您的系统足够新,您可以用于findmnt
确认它是绑定安装。但无论如何,大多数文件系统类型不能同时安装在不同位置,因此拥有相同的设备足以证明这是绑定安装。
绑定安装提供了不同位置的目录树视图。就访问绑定挂载下的文件而言,它类似于在树中具有符号链接,即/var/www/username/data/www/test.site.biz/photo/somefile
与 是相同的文件/origin/somefile
,就好像/var/www/username/data/www/test.site.biz/photo
是到 的符号链接一样/origin
。但/var/www/username/data/www/test.site.biz/photo
它不是一个符号链接,而是一个目录。
由于/var/www/username/data/www/test.site.biz/photo
是一个目录,因此递归遍历会深入其中。因此rm -rf
删除了 下的文件/original
,因为/original
和/var/www/username/data/www/test.site.biz/photo
是同一目录,只是恰好显示在不同的位置。
答案2
我对此事想到了几点:
mount --bind
在您确切知道自己在做什么之前,这是一个坏主意。最好使用符号链接。- 使用文件夹时很难检测到安装。这是某种服务器范围(不是您在移动文件夹时所想的)。
umount your_directory
删除绑定但不会损害原始文件夹。- 您可以通过命令列出所有安装
findmnt
。绑定安装座将带有方括号。