Linux 下移动文件后文件消失不见了?软链文件搞得鬼
在 Centos 上安装软件或者上传压缩包后,通常不会把软件包或者压缩包直接删除,一般会把一个文件夹作为类似垃圾桶或者备份文件夹,然后将包放进去。
> ls
backup www
> cd www
> pwd
/root/www
> ls
v2.8.6
> tar zxvf v2.8.6
...
> mv v2.8.6 ../backup
> cd ../backup
> ls
(空)
操作步骤大概是这样,找了半天也没找到,为了还原测试,又远程下载了一个(showdoc)压缩包,这次将文件移动到上一级目录。
> pwd
root/www
> mv v2.8.6 ../
> cd ../
> ls
backup www
文件又丢失了,这太不可思议了。
灵机一动,用 find 指令去找:
> find / -name v2.8.6
/wwwroot/www/v2.8.6
我并没有找到两个 v2.8.6 文件。
联想 /wwwroot/www
,原来 root/www
是 wwwroot/www
目录的软链文件,我通过 cd /root/www
进入目录移动文件,其实文件是被移动到了 /wwwroot/www
文件夹,即软链目录的原目录。
想通了之后再去 /wwwroot
下发现了一个名为 backup
的文件,其大小与移动前的 v2.8.6
完全一致,可以肯定就是之前移动后丢失的文件。
通过 mv v2.8.6 ../
+ tab 按钮确认了,从软链目录移动文件到上层其他目录,其相对目录地址是软链目录的原目录地址,而不是当前软链文件所在目录地址。