Linux下的软连接和硬链接
Linux 软硬链接1. 如何查看inode在 Linux 操作系统中链接会分两种,一种被称为硬链接,另一种被称为符号链接,即软链接。而默认情况下,ln 命令产生的是硬链接。
关于inode是什么,可以看这篇文章:Inode 详解
bash
文件粉碎工具shred:shred -uzvn10 FILE重复随机写入 10 次覆盖源文件,然后最后删除此文件。# 电脑 查看文件和文件夹的inode号$ ll -di /boot / /app# 查看挂载点文件夹的inode号$ df -i
2. 做inode增长实验
软链接 就相当于 Windows 的快捷方式,删掉源文件,快捷方式就失效了,软链接就找不到源文件了。 硬链接 相当于多个链接指向同一份数据存储区域,每多一个硬链接,硬链接数+1,如果一个文件,有 n 个硬链接,删除 n-1 个硬链接,源文件还在,直到删除所有硬链接,才会删除源文件。# 创建60万个文件的方法1(效率不高)$ for i in {1..600000}; do touch file$1; echo file$i is created;done# 创建60万个文件的方法2(效率高)$ echo file{1..600000} | xargs touch# 删除前20万个文件$ echo file{1..200000} | xargs rm# 在创建的过程中,可以另开一个窗口,用下面命令,每隔1秒运行df -hi命令,可以查看inode的增长情况$ watch -n1 df -hi
3. 硬链接、软链接
1. 电脑 复制(cp)
在复制过程中,复制软连接相当于复制了快捷方式,速度很快,而且可以跨分区。在复制过程中,复制硬链接分为两种情形:在同一分区复制,相当于多创建一个链接指向原数据存储位置,速度很快。在不同分区复制,相当于把原来分区的数据拷贝过去存储,同时创建一个指向新数据区域的指针,速度比较慢。2. 删除(rm)
在删除过程中,删除软连接相当于删除了快捷方式,源文件还在。在删除过程中,删除硬连接相当于删除了一个到数据块的指针,除非删除所有硬链接文件,源文件才删除。3. 移动(mv)
在移动过程中,移动软连接相当于移动了快捷方式而已。在移动过程中,移动硬连接分为两种情形:在同一分区移动,相当于创建了一个新 inode,指向数据块,并把原来的 inode 删掉在不同分区移动,要把数据块复制到新分区,然后在新分区创建新的 inode 号指向新的数据块,并且把原来分区的 inode 号和数据块都删掉。4. 软连接支持对目录创建,硬链接不支持
【问题 1】:当我们看到一个磁盘,使用空间没满,但是却提示”no space left on device”
那可能是inode用完了
【问题 2】:如何删除数量很多的文件(比如前面做实验创建的 60 万个文件)
技巧是使用管道|和xargs,管道|后面会讲,管道是指的是前面命令的输出作为后面命令的输入。xargs,前面命令多个输出,可以用xargs一个个的传给后面的命令,而不是已下载全传给后面命令,可以解决参数太长的情况ls | xargs rm
# 创建不成功ln dir1 dir2# 创建成功ln /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/ens33
5. 如何写软连接相对路径
软连接写相对路径,要根据软连接文件的路径来写。# 例如要在把/etc/issue 软连接到/app/d1/d2/d3/ilinkln -s ../../../../../etc/issue /app/d1/d1/d3/ilink
6. 如何软链接设备文件
设备文件比较特殊,如果要创建设备文件的链接,需要用到mknod命令:[root@centos7 etc]# ll /dev/sdabrw-rw----. 1 root disk 8, 0 May 22 09:06 /dev/sda #得到主设备号和复设备号。mknod /app/sda b 8 0ll -i /dev/sda /app/sda
软链接练习
# 1. 创建一个目录tomcat-8.5.23,创建一个软连接tomcat到这个目录;在创建一个目录tomcat-9.0.1, 把tomcat的软连接指向新的tomcat-9.0.1目录。ln -sv tomcat-8.5.23 tomcatrm -rf tomcatln -sv tomcat-9.0.1 tomcat# 2. 创建一个目录/mnt/lfs/tools, 然后创建/mnt/lfs/tools的软连接/tools,一般有这样的命令:ln -sv /mnt/lfs/tools /tools,如何可以更短?mkdir -v /mnt/lfs/toolsln -sv /mnt/lfs/tools /
4. file 命令的使用
常用选项
-b 列出文件辨识结果时,不显示文件名称-f 列出文件中文件名的文件类型-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符-L 查看对应软链接对应文件的文件类型--help 显示命令在线帮助注意事项
file命令就是查看的文件头部的信息,可以用hexdump查看源文件源码信息 (也可以用xxd命令看)。如果是二进制文件,会显示二进制的头信息。如果是文本文件,就直接是文本。[root@centos7 ~]# hexdump -C -n 100 /bin/ls00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|00000010 02 00 3e 00 01 00 00 00 48 4b 40 00 00 00 00 00 |..>.....HK@.....|00000020 40 00 00 00 00 00 00 00 18 c4 01 00 00 00 00 00 |@...............|00000030 00 00 00 00 40 00 38 00 09 00 40 00 1e 00 1d 00 |....@.8...@.....|00000040 06 00 00 00 05 00 00 00 40 00 00 00 00 00 00 00 |........@.......|00000050 40 00 40 00 00 00 00 00 40 00 40 00 00 00 00 00 |@.@.....@.@.....|00000060 f8 01 00 00 |....|00000064[root@centos7 ~]# hexdump -C -n 100 /etc/issue00000000 5c 53 0a 4b 65 72 6e 65 6c 20 5c 72 20 6f 6e 20 |\S.Kernel \r on |00000010 61 6e 20 5c 6d 0a |an \m.|00000016
5. readlink 命令读取软连接指向的真实路径
[root@centos7 ~]$ readlink /etc/redhat-releasecentos-release
文章作者: Escape
文章链接: https://www.escapelife.site/posts/1b853b12.html
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !
电脑