# 软连接

软连接

软连接我觉得是一个比较妙的命令,windows的快捷方式就不如它的效果好

例如有的时候程序中写死了文件夹存储的路径,

而我们在服务器上有时候又需要更换一下这个路径

软连接就派上用场了

# 创建一个软连接

我们先看看创建之前的效果

[root@xxxxx zyttest]# mkdir -p sourcefolder/sourcefolderchild
[root@xxxxx zyttest]# ll
total 4
drwxr-xr-x 3 root root 4096 Apr 28 23:14 sourcefolder

将连接,连接到一个不存在的文件夹上

ln -s sourcefolder test1

看看效果

[root@xxxxx zyttest]# ll
total 4
drwxr-xr-x 3 root root 4096 Apr 28 23:19 sourcefolder
[root@xxxxx zyttest]# ln -s sourcefolder test1
[root@xxxxx zyttest]# ll
total 4
drwxr-xr-x 3 root root 4096 Apr 28 23:19 sourcefolder
lrwxrwxrwx 1 root root   12 Apr 28 23:20 test1 -> sourcefolder
[root@xxxxx zyttest]# cd test1/
[root@xxxxx test1]# ll
total 4
drwxr-xr-x 2 root root 4096 Apr 28 23:18 sourcefolderchild
[root@xxxxx test1]# 

很明显,以后从test1进入,

也可以看到sourcefolder里一样的内容了

这样我们就可以在配置文件中,直接将之前不方便的路径指向/zyttest/test1即可

# 修改一个软连接

ln -snf tempfolder test1

看看效果

[root@xxxxx zyttest]# ll
total 8
drwxr-xr-x 3 root root 4096 Apr 28 23:19 sourcefolder
drwxr-xr-x 2 root root 4096 Apr 28 23:23 tempfolder
lrwxrwxrwx 1 root root   12 Apr 28 23:20 test1 -> sourcefolder
[root@xxxxx zyttest]# ln -snf tempfolder test1
[root@xxxxx zyttest]# ll
total 8
drwxr-xr-x 3 root root 4096 Apr 28 23:19 sourcefolder
drwxr-xr-x 2 root root 4096 Apr 28 23:23 tempfolder
lrwxrwxrwx 1 root root   10 Apr 28 23:23 test1 -> tempfolder
[root@xxxxx zyttest]# cd test1/
[root@xxxxx test1]# ll
total 0
[root@xxxxx test1]# 

可以发现,看不到sourcefolderchild了

# 删除一个软连接

先切换回来

ln -snf sourcefolder test1
[root@xxxxx zyttest]# ln -snf sourcefolder test1
[root@xxxxx zyttest]# ll
total 8
drwxr-xr-x 3 root root 4096 Apr 28 23:19 sourcefolder
drwxr-xr-x 2 root root 4096 Apr 28 23:23 tempfolder
lrwxrwxrwx 1 root root   12 Apr 28 23:25 test1 -> sourcefolder
[root@xxxxx zyttest]# cd test1/
[root@xxxxx test1]# ll
total 4
drwxr-xr-x 2 root root 4096 Apr 28 23:18 sourcefolderchild
[root@xxxxx test1]# 

注意

软连接不要轻易删除,如果在生产平台上更要慎重!!!

区别就是 rm -rf xx 和 rm -rf xx/

如果你建错了软连接打算删除掉的话,没有把握还是请求旁边的同事协助一下

好了,准备删除

rm -rf test1

看看效果

[root@xxxxx zyttest]# ll
total 8
drwxr-xr-x 3 root root 4096 Apr 28 23:19 sourcefolder
drwxr-xr-x 2 root root 4096 Apr 28 23:23 tempfolder
lrwxrwxrwx 1 root root   12 Apr 28 23:25 test1 -> sourcefolder
[root@xxxxx zyttest]# rm -rf test1
[root@xxxxx zyttest]# ll
total 8
drwxr-xr-x 3 root root 4096 Apr 28 23:19 sourcefolder
drwxr-xr-x 2 root root 4096 Apr 28 23:23 tempfolder
[root@xxxxx zyttest]# 

如果你用rm -rf test1/ 呢?

[root@xxxxx zyttest]# ll
total 8
drwxr-xr-x 3 root root 4096 Apr 28 23:19 sourcefolder
drwxr-xr-x 2 root root 4096 Apr 28 23:23 tempfolder
lrwxrwxrwx 1 root root   12 Apr 28 23:29 test1 -> sourcefolder
[root@xxxxx zyttest]# cd test1/
[root@xxxxx test1]# ll
total 4
drwxr-xr-x 2 root root 4096 Apr 28 23:18 sourcefolderchild
[root@xxxxx test1]# cd ..
[root@xxxxx zyttest]# rm -rf test1/
[root@xxxxx zyttest]# ll
total 8
drwxr-xr-x 2 root root 4096 Apr 28 23:30 sourcefolder
drwxr-xr-x 2 root root 4096 Apr 28 23:23 tempfolder
lrwxrwxrwx 1 root root   12 Apr 28 23:29 test1 -> sourcefolder
[root@xxxxx zyttest]# cd test1/
[root@xxxxx test1]# ll
total 0

看到了么? 实际上你是把test1/下的文件都删除了 所以在Linux上,要时刻区分文件夹级别的操作,带/和不带/的区别