Linux学习-管理文件(3)

硬链接与软连接

ln:

1)创建一个指向现有文件的新硬链接。

2)至少需要两个参数,即现有文件的路径以及要创建的硬链接的路径

3)通过 ls -i 查看两个文件是否为彼此的硬链接

注意:

1)引用同一文件的所有硬链接将具有相同的链接数、访问权限、用户和组所有权、时间戳、以及文件内容。

2)每个硬链接都指向存储设备上的同一数据。

3)即使原始文件被删除,只要存在至少一个硬链接,该文件内容就依然可用。只有删除最后一个硬链接时,才会将数据从存储中删除

硬链接的局限性:

1)硬链接只能用于常规文件。不能使用ln来创建指向目录或特殊文件的硬链接

2)只有当两个文件都位于同一文件系统上时,才能使用硬链接

3)可以使用df命令来列出位于不同文件系统上的目录

[sea@192 test]$ ll
total 0
-rw-rw-r--. 1 sea sea 0 Nov 15 00:38 1231231
[sea@192 test]$ ln 1231231 /home/sea/test/12312-1
[sea@192 test]$ ll
total 0
-rw-rw-r--. 2 sea sea 0 Nov 15 00:38 12312-1
-rw-rw-r--. 2 sea sea 0 Nov 15 00:38 1231231
[sea@192 test]$ ls -il
total 0
52931863 -rw-rw-r--. 2 sea sea 0 Nov 15 00:38 12312-1
52931863 -rw-rw-r--. 2 sea sea 0 Nov 15 00:38 1231231
[sea@192 test]$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs          910520       0    910520   0% /dev
tmpfs             924700       0    924700   0% /dev/shm
tmpfs             924700   21448    903252   3% /run
tmpfs             924700       0    924700   0% /sys/fs/cgroup
/dev/nvme0n1p3  18555904 5518580  13037324  30% /
/dev/nvme0n1p1    301728  186940    114788  62% /boot
tmpfs             184940      20    184920   1% /run/user/42
tmpfs             184940    4652    180288   3% /run/user/1000
错误示范:
[root@192 run]# ln test /home/sea/test/test1
ln: failed to create hard link /home/sea/test/test1 => test: Invalid cross-device link

ln -s:

1)软链接不是常规文件,而是指向现有文件或目录的特殊类型的文件

软链接比硬链接有一定优势:

1)他们可以链接位于不同文件系统上的两个文件

2)他们可以指向目录或特殊文件,而不仅限于常规文件

[root@192 run]# ln -s test /home/sea/test/test1
[root@192 run]# ls -l /home/sea/test/test1 
lrwxrwxrwx. 1 root root 4 Nov 15 01:16 /home/sea/test/test1 -> test
[root@192 /]# ll /home/sea/test
total 0
-rw-rw-r--. 2 sea  sea  0 Nov 15 00:38 12312-1
-rw-rw-r--. 2 sea  sea  0 Nov 15 00:38 1231231
-rw-r--r--. 1 root root 0 Nov 15 01:08 haha-1
lrwxrwxrwx. 1 root root 4 Nov 15 01:18 run -> /run
lrwxrwxrwx. 1 root root 4 Nov 15 01:16 test1 -> test

注意:

1)当原始文件删除后,软连接依然会指向该文件,但目标已消失。指向缺失文件的软连接称为“悬空的软连接”

2)悬空的软连接有一个副作用,就是如果稍后创建了一个和已删除文件同名的新文件,那么软连接将不再悬挂,而是指向新文件。

[root@192 run]# ll /home/sea/test/123-2.txt
lrwxrwxrwx. 1 root root 7 Nov 15 01:46 /home/sea/test/123-2.txt -> 123.txt
[root@192 run]# ls
123.txt       cron.reboot      gssproxy.sock  mcelog-client   rpcbind.sock    systemd
abrt          cryptsetup       httpd          mcelog.pid      rsyslogd.pid    tmpfiles.d
alsactl.pid   cups             initctl        mdadm           samba           tuned
atd.pid       dbus             initramfs      media           sepermit        udev
auditd.pid    dmeventd-client  ksmtune.pid    mount           setrans         udisks2
avahi-daemon  dmeventd-server  libvirt        NetworkManager  setroubleshoot  user
blkid         faillock         libvirtd.pid   plymouth        sm-notify.pid   utmp
boltd         firewalld        lock           ppp             spice-vdagentd  vmware
chrony        gdm              log            radvd           sshd.pid
cockpit       gluster          lsm            rhsm            sssd.pid
console       gssproxy.pid     lvm            rpcbind         sudo
[root@192 run]# rm -rf 123.txt
[root@192 run]# ll /home/sea/test/123-2.txt
lrwxrwxrwx. 1 root root 7 Nov 15 01:46 /home/sea/test/123-2.txt -> 123.txt

总结:

1)硬链接时将名称指向存储设备上的数据

2)软连接则是将名称指向另一个名称,后者指向存储设备上的数据

Linux学习-管理文件(3)

上一篇:Ubuntu中文本查看编辑等命令


下一篇:Linux kernel mmc_test驱动测试mmc