查看软/硬链接

1
2
3
4
5
6
7
8
9
10
11
12
[root@k3s-node4 bin]# ls -l
total 25844
-rwxr-xr-x 1 root root 26451968 Mar 29 02:23 docker-compose
lrwxrwxrwx 1 root root 26 Apr 6 02:16 node -> /usr/local/nodejs/bin/node
-rwxr-xr-x 1 root root 3506 Apr 14 09:27 node-gyp
lrwxrwxrwx 1 root root 25 Apr 6 02:16 npm -> /usr/local/nodejs/bin/npm
-rwxr-xr-x 1 root root 177 Apr 14 09:27 npx
-rw-r--r-- 1 root root 27 Apr 14 09:28 package-lock.json
lrwxrwxrwx 1 root root 25 Apr 14 09:37 pm2 -> /usr/local/nodejs/bin/pm2
lrwxrwxrwx 1 root root 29 Apr 14 09:38 pm2-dev -> /usr/local/nodejs/bin/pm2-dev
lrwxrwxrwx 1 root root 32 Apr 14 09:37 pm2-docker -> /usr/local/nodejs/bin/pm2-docker
lrwxrwxrwx 1 root root 33 Apr 14 09:38 pm2-runtime -> /usr/local/nodejs/bin/pm2-runtime

查看哪些文件是某个文件的硬链接

假如查找上面 docker-compose 的硬链接:

1
find / -inum 26451968

Linux 建立软链接

解决某个目录空间不足问题。假如 /usr/mysql/data/ 空间不足,想移到另一个盘下 /home/data

1
2
3
4
5
# 1. 移动原有 data 目录至新目录下
mv /usr/mysql/data/ /home/data

# 2. 创建软链接
ln -s /home/data /usr/mysql/data

这样操作后实际上 /usr/mysql/data 就像是 /home/data 的一个快捷方式,而真正存储则在 /home/data 下。这样我们就可以使其他利用到该目录的进程在无感知的情况下解决磁盘目录不足的问题了。

链接文件方便管理(例如将 node 连接到 /usr/local/bin 下)。

Linux 硬链接

ln 不加 -s 则为硬链接。

注意:目录不能创建硬链接,硬链接文件可以用 rm 命令删除。

硬链接与软链接区别

  1. ln 命令创建硬链接,ln -s 命令创建软链接
  2. 目录不能创建硬链接,并且硬链接不可以跨越分区系统
  3. 目录软链接特别常用,并且软链接支持跨越分区系统
  4. 硬链接文件与源文件的 inode 相同,软链接文件与源文件 inode 不同
  5. 删除软链接文件,对源文件及硬链接文件无任何影响
  6. 删除文件的硬链接文件,对源文件及软链接文件无任何影响
  7. 删除链接文件的源文件,对硬链接无影响,会导致软链接失效
  8. 删除源文件及其硬链接文件,整个文件会被真正的删除