硬链接与软链接:
可以创建指向同一文件的多个名称。
有两种方法可以做到这一点:硬链接、软链接(有时也称为符号链接)。
每种方法都各有利弊。
创建硬链接:
每个文件都以一个硬链接开始
新的硬链接与原始文件的一切属性和内容完全相同,同步更新。
ls -l命令可以显示文件硬链接数量
[fu@VM-0-3-centos ~]$ pwd
/home/fu
[fu@VM-0-3-centos ~]$ ls -l newfile.txt
-rw-rw-r-- 1 fu fu 0 Nov 24 20:07 newfile.txt
使用ln命令为现有文件创建新硬链接
[fu@VM-0-3-centos ~]$ ln newfile.txt /tmp/newfile-hlink2.txt
[fu@VM-0-3-centos ~]$ ls -l newfile.txt /tmp/newfile-hlink2.txt
-rw-rw-r-- 2 fu fu 0 Nov 24 20:07 newfile.txt
-rw-rw-r-- 2 fu fu 0 Nov 24 20:07 /tmp/newfile-hlink2.txt
$ ls -il :查看文件的inode(索引节点编号)
如果两个文件具有相同的inode,则表示它们以硬链接连接彼此。
[fu@VM-0-3-centos ~]$ ls -l newfile.txt /tmp/newfile-hlink2.txt
-rw-rw-r-- 2 fu fu 0 Nov 24 20:07 newfile.txt
-rw-rw-r-- 2 fu fu 0 Nov 24 20:07 /tmp/newfile-hlink2.txt
即使原始文件被删除,只要存在至少一个硬链接,该文件的内容就依然可用。
只有删除了最后一个硬链接时,才会将数据从存储中删除。
硬链接的局限性: 硬链接只能用于常规文件。
不能使用ln来创建指向目录或特殊文件的硬链接。
只有当两个文件都位于同一文件系统上时,才能使用硬链接。 创建软链接:
ln -s命令可创建软链接,也称为“符号链接”。
软链接不是常规文件,而是指向现有文件或目录的特殊类型的文件。
软链接相比硬链接有一定的优势:
1. 可以链接位于不同文件系统上的两个文件。
2. 可以指向目录或特殊文件,而不仅限于常规文件。
[fu@VM-0-3-centos ~]$ ln -s /home/user/newfile-link2.txt /tmp/newfile-symlink.txt
[fu@VM-0-3-centos ~]$
[fu@VM-0-3-centos ~]$ ls -l newfile-link2.txt /tmp/newfile-symlink.txt
ls: cannot access newfile-link2.txt: No such file or directory
lrwxrwxrwx 1 fu fu 28 Nov 24 20:16 /tmp/newfile-symlink.txt -> /home/user/newfile-link2.txt
[fu@VM-0-3-centos ~]$ cat /tmp/newfile-symlink.txt
hello world
[fu@VM-0-3-centos ~]$ ln -s /etc /home/fu/configfiles
[fu@VM-0-3-centos ~]$
[fu@VM-0-3-centos ~]$ cd /home/fu/configfiles
[fu@VM-0-3-centos configfiles]$ pwd
/home/fu/configfiles
当原始文件被删除后,软链接依然会指向该文件。
指向缺失的文件的软链接称为“悬挂的软链接”(断链)。
若重新创建与原始文件同名的文件,软链接将重新创建。
[fu@VM-0-3-centos ~]$ touch file.txt
[fu@VM-0-3-centos ~]$ echo 'hello world' >> file.txt
[fu@VM-0-3-centos ~]$ cat file.txt
hello world
[fu@VM-0-3-centos ~]$ ln -s file.txt softlink.txt
[fu@VM-0-3-centos ~]$ ls -l softlink.txt
lrwxrwxrwx 1 fu fu 8 Nov 24 20:29 softlink.txt -> file.txt
[fu@VM-0-3-centos ~]$ cat softlink.txt
hello world
[fu@VM-0-3-centos ~]$ cat file.txt
hello world
[fu@VM-0-3-centos ~]$ rm -f file.txt
[fu@VM-0-3-centos ~]$ ls- lh softlink.txt #删除原始文件后软链接断链
lrwxrwxrwx 1 fu fu 8 Nov 24 20:29 softlink.txt -> file.txt
[fu@VM-0-3-centos ~]$ touch file.txt
[fu@VM-0-3-centos ~]$ ls -lh softlink.txt
lrwxrwxrwx 1 fu fu 8 Nov 24 20:29 softlink.txt -> file.txt