ln命令来自英文单词“link”的缩写,中文译为“链接”,其功能是用于为某个文件在另外一个位置建立同步的链接。Linux系统中的链接文件有两种形式,一种是硬链接(hard link),另一种是软链接(symbolic link)。软链接相当于Windows系统中的快捷方式文件,原始文件被移动或删除后,软链接文件也将无法使用,而硬链接则是通过将文件的inode属性块进行了复制 ,因此把原始文件移动或删除后,硬链接文件依然可以使用。
常用参数
-b:为已存在的目标文件创建备份
-d:允许管理员创建目录的硬链接
-f:强制创建链接而不询问
-i:若目标文件已存在,则需要用户二次确认
-L:若目标文件为软链接时,找到其对应文件
-n:将指向目录的软链接视为普通文件
-P:若目标文件为软链接时,直接链接它自身
-r:创建相对于文件位置的软链接
-s:对源文件创建软链接
-S:设置备份文件的后缀
-t:设置链接文件存放于哪个目录
-v:显示执行过程详细信息
--backup:备份已存在的文件
--help:显示帮助信息
--version:显示版本信息
软连接
symbolic link,源文件删除,链接文件失效,普通文件和目录都可以创建软链接,支持跨分区
语法格式
ln -s /路径/源数据 /路径/快捷方式的名称
参考示例
01. 创建文件信息
]# touch /data/oldboy
02. 创建软链接
]# ln -s /data/oldboy /data/oldboy.txt_soft
03. 检查创建信息
]# ls -l oldboy*
]# ln -s /etc/sysconfig/network-scripts/ /ns
]# ls -l /ns #查看快捷方式的信息
]# readlink /dev/cdrom
sr0
硬链接
hard link,在一个分区中,inode号码相同互为硬链接文件,源文件删除,链接文件依旧有效,目录无法创建硬链接 。
语法格式
ln [参数] /路径/源数据 /路径/快捷方式的名称
优缺点
优点:源数据消失,快捷方式仍然有效
缺点:只能针对文件制作快捷方式,不支持支持跨分区,可以对文件创建硬链接(硬链接文件和源文件必须在同一分区中)
参考示例
01. 创建文件信息
# touch /data/oldboy
02. 创建硬链接
# ln /data/oldboy /data/oldboy.txt_hard
03. 检查创建信息
# ls -lhi oldboy*
readlink命令:查看软链接文件本身的内容,存放的是源文件的路径
软硬链接区别
链接后的文件大小不一致、文件类型和权限不一致(颜色不一致)
链接后的文件和源文件inode信息有出入,硬链接inode号码一致,软链接inode号码不一样
源文件被删除之后,硬链接文件依然有效,软链接文件失效,软硬链接创建过程不一致
实用排查
1.如何真正删除一个文件
文件硬链接数为0时,表示数据真正删除了
文件信息没有被进程调用的时候,进程调用数为0
查看文件是否被进程调用:lsof |grep "secure"
2.避免文件丢失方法
利用硬链接的方式
利用cp备份命令
企业案例
磁盘空间报警了,需要删除清空没用数据
第一个历程: 确认磁盘空间是否真的满了
# df -h 查看block空间是否不够了
# df -i 查看inode空间是否不够了
第二个历程: 确认哪个数据占用磁盘空间比较多
# du -sh /
# du -sh /etc
第三个历程: 利用rm -rf命令进行删除
第四个历程: 需要重启服务释放空间