课时13_软硬链接
文章目录
1、软链接–快捷方式
1.1 创建软链接(ln -s)
命令格式:ln -s 文件名 快捷方式的名字
其中-s:表示soft
enspire@Ubuntu18:~/test001$ ln -s touch.c touch_ls
enspire@Ubuntu18:~/test001$ ls -l
总用量 4
-rw-rw-r-- 1 enspire enspire 144 8月 25 20:22 touch.c
lrwxrwxrwx 1 enspire enspire 7 8月 25 21:07 touch_ls -> touch.c
(1)文件touch_ls为touch.c的快捷方式;
(2)文件touch_ls的大小显示为7,快捷方式文件大小为实际文件的完整路径字符串长度。
1.2、移动软链接文件后,软链接是否还有效
进行如下操作:将软链接文件移动到上一级目录,切换到上级目录,cat打开软链接,是否能够链接到实际的文件?
enspire@Ubuntu18:~/test001$ mv touch_ls ..
enspire@Ubuntu18:~/test001$ ls
touch.c
enspire@Ubuntu18:~/test001$ cd ..
enspire@Ubuntu18:~$ ls
examples.desktop test001 touch_ls
enspire@Ubuntu18:~$ cat touch_ls
cat: touch_ls: 没有那个文件或目录
1.3、软链接指向的实际文件路径改为适用绝对路径
enspire@Ubuntu18:~/test001$ ln -s ~/test001/touch.c touch.soft
enspire@Ubuntu18:~/test001$ ll
总用量 12
drwxrwxr-x 2 enspire enspire 4096 8月 25 21:16 ./
drwxr-xr-x 5 enspire enspire 4096 8月 25 21:11 ../
-rw-rw-r-- 1 enspire enspire 144 8月 25 20:22 touch.c
lrwxrwxrwx 1 enspire enspire 29 8月 25 21:16 touch.soft -> /home/enspire/test001/touch.c
enspire@Ubuntu18:~/test001$ mv touch.soft ..
enspire@Ubuntu18:~/test001$ cd ..
enspire@Ubuntu18:~$ ls
examples.desktop test001 touch_ls touch.soft
enspire@Ubuntu18:~$ cat touch.soft
sdfasfasdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
enspire@Ubuntu18:~$
总结:创建软链接最好适用绝对路径,可以在软链接被移动位置后仍能够正确链接到实际文件。
enspire@Ubuntu18:~$ ls -l
总用量 16
-rw-r--r-- 1 enspire enspire 8980 4月 16 2018 examples.desktop
drwxrwxr-x 2 enspire enspire 4096 8月 25 21:17 test001
lrwxrwxrwx 1 enspire enspire 7 8月 25 21:07 touch_ls -> touch.c
lrwxrwxrwx 1 enspire enspire 29 8月 25 21:16 touch.soft -> /home/enspire/test001/touch.c
enspire@Ubuntu18:~$
适用绝对路径创建的软链接touch.soft的大小为27,适用相对路径创建的软链接touch_ls的大小为7,两者大小都表示实际文件的完整路径字符串长度。
1.4、目录也可以创建软链接,格式与文件相同
2、硬链接
ls命令中涉及一个硬链接计数。
硬链接类似C++中的引用,创建一个别名。
2.1、硬链接实质
对file1创建一个硬链接,创建的硬链接命名为file3,实际file1和file3是指向的同一个inode节点,同一个文件。同一块磁盘数据块,通过file1修改磁盘上的数据块后,打开file3,看到的是修改后的文件。
2.2、创建硬链接(ln)
命令格式:ln 文件名 硬链接文件名
注意事项:
(1)硬链接文件不占用磁盘空间,虽然ls -l命令看到的硬链接文件大小与原文件大小相同。
(2)创建硬链接文件时,原文件的路径使用相对路径或者绝对路径都可以。
enspire@Ubuntu18:~/test001$ ll
总用量 12
drwxrwxr-x 2 enspire enspire 4096 8月 25 21:31 ./
drwxr-xr-x 5 enspire enspire 4096 8月 25 21:30 ../
-rw-rw-r-- 1 enspire enspire 144 8月 25 20:22 touch.c
enspire@Ubuntu18:~/test001$ ln touch.c touch.hardlink
enspire@Ubuntu18:~/test001$ ll
总用量 16
drwxrwxr-x 2 enspire enspire 4096 8月 25 21:31 ./
drwxr-xr-x 5 enspire enspire 4096 8月 25 21:30 ../
-rw-rw-r-- 2 enspire enspire 144 8月 25 20:22 touch.c
-rw-rw-r-- 2 enspire enspire 144 8月 25 20:22 touch.hardlink
enspire@Ubuntu18:~/test001$
2.3、硬链接计数
(1)创建一个新文件file,硬链接计数为1;
(2)给file文件创建一个硬链接,硬链接计数变成2;
(3)删除一个file文件的硬链接,硬链接计数变为1;
2.4、硬链接使用场景
(1)磁盘上有一个文件,假设再/home/enspire/hello
(2)需要在其他多个目录中管理hello文件,并且能够实时同步。