硬链接与软连接
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)软连接则是将名称指向另一个名称,后者指向存储设备上的数据