今天加班,看到部署线上环境的时候他们使用了ln命令,有点想法,觉得还不错,之前一直认为这东西没啥用,发现在线上部署的时候,使用一个软连接,就不需要修改过多的文件或配置文件,同时保证线上程序出问题的时候回归也方便通过直接修改软连接进行回滚。
PS:注意 假如有一个软连接 ==>softlink->/user/root/local/xxx 那么在rm的时候如果 rm sotflink/会删除目录下的东西 而不是这个单纯的软连
1语法
ln (选项)(参数)2使用
ln [-sf] 源文件 【目标文件】
源文件最好是绝对路径,要不就是相对目标路径的相对路径.
无参数标识硬链接
ln 源文件 这样会在当前目录下生成一个与源文件同名的硬链接
ln 源文件 目标文件 会在指定目录生成源文件的硬链接
ln -f 目标存在则删除目标在创建
-s symbolic符号链接
ln -s 源文件 【目标文件 】(行为同上 )
~类别
ln有2中,1中是类似Windows快捷方式功能的文件的软连接;另一种是使用iNode连接产生新的文件硬链接。
前提:
文件目录的inode (文件目录)
文件的inode(文件本身)
它们是2个东西,只是看起来像一个而已。
硬链接:
~1.每个文件占用一个inode,文件内容有inode的记录来指向。(inode可以记录文件权限属性读写日期,使用li -li 可以看到文件的inode)
~2.文件值与目录有关,,内容与inode有关,硬链接是多个文件对应到同一个inode,也就是说在某个目录下一个文件名连接到某个inode号码的关键记录。(文件系统本身也是通过inode进行记录的)
~3.好处安全,删除任意一个硬链接,还可以通过另外的文件名进行访问,同样无论通过那个文件名访问的都是同一个文件
~4.硬连接只能硬链接到文件,而不能连接到文件夹,软连接可以
~5.硬连接不会消耗磁盘的空间与inode的数目,至是在某个目录下的block中多写了一个关联数据而已。
硬链接的限制:
~1.不能夸文件系统。
~2.不能连接目录。
软连接:
快捷方式。。。软连接指向的是文件目录的inode,通过文件目录的inode记录找到文件的inode
另外如果用ln -fs 一个已经存在的软连接就会在这个软连接下创建你将要创建的软连接而不是删掉这个软连接在单独创建软连接。
瞎猜:基本可以通过文件inode可以得知,文件删除只是修改了文件目录的inode指向的某个block中的数据,文件真实数据其实是存在的,而硬链接删除一个另一个还可以访问的主要原因就在于,有多个文件记录指向了这个文件的inode,只要inode文件完整的,那么block就是完整的,文件也是完整的