制作文件间链接

制作文件间链接

制作文件间链接_第1张图片

管理文件间链接

硬/软链接

创建指向同一个文件的多个名称。

创建硬链接

从初始名称到文件系统的数据,每个文件都以一个硬链接开始。当创建指向文件的新硬链接时,也会创建另一个指向同一数据的名称。新硬链接与原始文件名作用相同。一经创建,新硬链接与文件的原始名称便别无二致。

[root@servera ~]# pwd
/root
[root@servera ~]# touch newfile.txt
[root@servera ~]# ls -l  newfile.txt
-rw-r--r--. 1 root root 0 Jul 16 04:53 newfile.txt

newfile.txt 链接数为1,绝对地址/root/newfile.txt

使用ln 命令创建一个指向现有文件的新硬链接。至少需要两个参数,即现有文件的路径已经要创建的硬链接的路径。

在/tmp目录中为现有文件newfile.txt创建硬链接

[root@servera ~]# ls -l newfile.txt /tmp/newfile-link2.txt
-rw-r--r--. 2 root root 0 Jul 16 04:53 newfile.txt
-rw-r--r--. 2 root root 0 Jul 16 04:53 /tmp/newfile-link2.txt

如果想知道两个文件是否为彼此的硬链接,使用ls -i 列出文件的索引节点编号。如果文件位于同一系统,且索引编号系统,那么这两个文件就是指向同一数据的硬链接。


[root@servera ~]# ls -il newfile.txt /tmp/newfile-link2.txt
33579695 -rw-r--r--. 2 root root 0 Jul 16 04:53 newfile.txt
33579695 -rw-r--r--. 2 root root 0 Jul 16 04:53 /tmp/newfile-link2.txt

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


[root@servera ~]# rm -f newfile.txt
[root@servera ~]# ls -l /tmp/newfile-link2.txt
-rw-r--r--. 1 root root 6 Jul 16 05:03 /tmp/newfile-link2.txt
[root@servera ~]# cat /tmp/newfile-link2.txt
Hello

硬链接局限性

  • 只用于常规文件,不能使用ln来创建指向目录或特殊文件的硬链接
  • 当两个文件都位于同一文件系统时,才能使用硬链接。

列出位于不同文件系统上的目录


[root@servera ~]# df
Filesystem            1K-blocks    Used Available Use% Mounted on
devtmpfs                 874504       0    874504   0% /dev
tmpfs                    894592       0    894592   0% /dev/shm
tmpfs                    894592    8900    885692   1% /run
tmpfs                    894592       0    894592   0% /sys/fs/cgroup
/dev/mapper/rhel-root  17811456 1884916  15926540  11% /
/dev/nvme0n1p1          1038336  225396    812940  22% /boot
tmpfs                    178916       0    178916   0% /run/user/0

两个不同的Mounted On目录及其子目录的文件位于不同的文件系统上。

创建软链接

ln -s 创建,软链接不是常规文件,而是指向现有文件或目录的特殊文件。

  • 可以链接不同文件系统上的两个文件
  • 可以指向目录或特殊文件,不限于常规文件

/tmp/newfile-link2.txt创建新的软链


[root@servera ~]# ln -s /tmp/newfile-link2.txt /tmp/newfile-symlink.txt
[root@servera ~]# ls -l /tmp/newfile-link2.txt  /tmp/newfile-symlink.txt
-rw-r--r--. 1 root root  6 Jul 16 05:03 /tmp/newfile-link2.txt
lrwxrwxrwx. 1 root root 22 Jul 16 05:17 /tmp/newfile-symlink.txt -> /tmp/newfile-link2.txt
[root@servera ~]# cat /tmp/newfile-symlink.txt
Hello

当原始常规文件被删除后,软链接依然指向该文件,但目标消失。指向缺失的文件的软链成为"悬挂的软链接"


[root@servera ~]# rm -rf /tmp/newfile-link2.txt
[root@servera ~]# ls -l  /tmp/newfile-symlink.txt
lrwxrwxrwx. 1 root root 22 Jul 16 05:17 /tmp/newfile-symlink.txt -> /tmp/newfile-link2.txt
[root@servera ~]# cat /tmp/newfile-symlink.txt
cat: /tmp/newfile-symlink.txt: No such file or directory

软链可以指向目录。发挥和目录一样的作用。通过cd更改为软链接将是当前的工作目录变成链接目录。一些工具可以跟踪使用软链接到达当前工作目录的事实。例如,cd将使用软链接的名称更新当前工作目录。 -P更新到实际目录名称。

创建指向/etc目录的软链


[root@servera ~]# ln -s /etc /root/configfiles
[root@servera ~]# cd /root/configfiles/

[root@servera configfiles]# cd -P /root/configfiles/
[root@servera etc]# pwd
/etc
[root@servera etc]# cd /root/configfiles/
[root@servera configfiles]# pwd
/root/configfiles

你可能感兴趣的:(运维,linux)