linux ln命令

  • Hard Links:node


刚刚说过,当系统要读取某一个档案的时候,就会先去读inode table ,而后再根据 inode 的信息到 block area 去将数据取出来利用!而hard link 就是直接再创建一个 inode 连结到档案放置的 block 区块。也就是说,进行hard link 的时候,实际上,你的档案内容不会改变,只是你在查询的时候,利用原来的inode 与后来的 inode 都可被指定到该档案放置的地点,所以两个档案的内容会是同样的!因此读取任何一个inode 的结果都是存取在同一个档案的内容就是了。不过,这样一来就有个问题啦,由于inode 是会连结到 block 区域去的,而『目录』自己仅消耗 inode 而已,那么一来的话,hard link 不就不能 link 目录啦?对的!没错! Hard link 有两个最大的限制:
  1. 不能跨 filesystem ,由于不一样的 filesystem 有不一样的inode table 嘛!linux

  2. 不能 link 目录!安全


  • Symbolic Linksless


相对于 hard link , Symbolic link 可就好理解多了,基本上,他就是在创建一个独立的档案,而这个档案会让数据读取指向他link 的那个档案内容!因为只是利用档案来作为指向的动做,因此,当来源档被删除以后,symboliclink 的档案会『开不了』,会一直说『没法开启某档案!』


因此,看样子,彷佛 hard link 比较安全,由于即便某一个inode 被杀掉了,只要有任何一个 inode 存在,那么该档案就不会不见!不过,不幸的是,因为Hard Link 的限制太多了,包括没法作『目录』的 link ,因此在用途上面是比较受限的!反而是Symbolic Link 的使用方向较广喔!好了,说的天花乱坠,看您也差很少快要昏倒了!不要紧,实做一下就知道怎么回事了!

特别留意,底下的案例中,咱们是将系统的设定文件copy 到 /root/test 底下进行测试用的,请不要在 /etc/ 底下作,将来咱们的工做目录都会在/root/test 底下进行,这有个好处,是可让您清楚的知道,这是用来 test 用的啦!
语法:[root @test/root ]# ln [-s] [来源档] [目的档]
参数说明:
-s  :提供连结档的连结!若是直接以 ln 不加任何参数的话,那么就属于 hard link啰!
范例:
[root @test/root]# mkdir test
[root @test/root]# cd test
[root @test/test]# cp /usr/bin/passwd .

0. 本来的信息:
[root @test/test]# ll
-rw-r--r--1root     root       13476 Jun 26 11:31 passwd
[root @test/test]# du -k<==查看该目录下的占用硬盘空间
20ide

1. Hard Link信息:
[root @test/test]# ln passwd passwd-hard
[root @test/test]# ll
total 32
-rw-r--r--2root     root       13476 Jun 26 11:31 passwd
-rw-r--r--2root     root       13476 Jun 26 11:31 passwd-hard
注意看,上面那个数字变成2 啰!这就是占用掉 inodes 啰!
[root @test/test]# du -k
20  <==注意看,容量并无变大!由于是link 档案呀!测试

2. SymbolicLink 信息:
[root @test/test]# ln -s passwd passwd-soft; ll
-rw-r--r--   2 root     root       13476 Jun 26 11:31 passwd
-rw-r--r--   2 root     root       13476 Jun 26 11:31 passwd-hard
lrwxrwxrwx   1 root     root           6 Jun 26 11:37 passwd-sofe -> passwd
注意啰!该Symbolic Link 的档案是有容量的呦!
注意啰, passwd-soft会指到另一个档案去,并且,最前面属性显示 l ,
此外,他是一个独立的档案!先杀掉passwd 后,咱们分别 more 一下内容:rem

3. 用 more 来试试看是怎样?!
[root @testtest]# rm passwd
rm: removeregular file `passwd'? y
[root @testtest]# more passwd-hard
………(正常显示)
[root @testtest]# more passwd-soft
passwd-soft:No such file or directory同步

说明:
要注意啰!若是不加任何参数的话,那么就是 Hard Link 啰!如同上面的状况,增长了hard link 以后,能够发现 link 那一栏属性增长了!而若是这个时候砍掉 passwd会发生什么事情呢?呵呵! passwd-hard 的内容仍是会跟原来 passwd 相同,可是passwd-soft 就会找不到该档案啦!就是这样!了解了吗?!还有,跟 cp 也不同呦!由于虽然Hard Link 的档案看起来是有容量的,可是基本上仍是指向原来的档案,因此啰,总体容量是没有增大的啦!

而若是使用 -s 的参数时,就作成差很少是 Windows 底下的『快捷方式』的意思(SymbolicLink,较经常使用!)不过,须要特别注意的是, Linux 的 link 与 Windows 的快捷方式是不同的东西!举个例子说,当你在Windows 创建一个快捷方式时,你能够在这个快捷方式内修改任何数据,而你的原始数据并不会跟着变!不过,当你修改Linux 下的 link 档案时,则更动的实际上是『原始档』,呵呵,因此不论你的这个原始档被连结到哪里去,只要你修改了连结档,呵呵!原始档就跟着变啰!以上面为例,因为你使用-s 的参数创建一个名为 passwd-soft 的档案,则你修改 passwd-soft 时,其内容与passwd 彻底相同,而且,当你按下储存以后,被改变的将是 passwd 这个档案!

此外,若是你作了底下这样的连结:
ln –s /bin /root/bin
那么若是你进入 /root/bin 这个目录下,『请注意呦!该目录实际上是 /bin 这个目录,由于你作了连结档了!』因此,若是你进入/root/bin 这个刚刚创建的连结目录,而且将其中的数据杀掉时,嗯! /bin 里面的数据就统统不见了!这点请千万注意!并非/root 底下的资料都是 root 的!还须要注意一下该属性才行!

基本上, Symbolic link 的用途比较广,因此您要特别留意 symbolic link的用法呢!将来必定还会经常用到的啦!


lnlinux中又一个很是重要 命令,它的功能是为某一个文件在另一个位置创建一个同不的连接,这个 命令最经常使用的参数是-s,具体用法是: ln –s 源文件 目标文件。
  当咱们须要在不一样的目录,用到相同的文件时,咱们不须要在每个须要的目录下都放一个必须相同的文件,咱们只要在某个固定的目录,放上该文件,而后在其它的目录下用 ln 命令连接(link)它就能够,没必要重复的占用磁盘空间。例如: ln –s /bin/less/usr/local/bin/less
  -s 是代号(symbolic)的意思。
  这里有两点要注意:第一, ln 命令会保持每一处连接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;第二, ln的连接又软连接和硬连接两种,软连接就是 ln –s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬连接 ln ****,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,不管是软连接仍是硬连接,文件都保持同步变化。
  若是你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用 ln 命令生成的文件,用ls –l 命令去察看,就能够看到显示的link的路径了。
  指令详细说明
  指令名称 : ln
  使用权限 : 全部使用者
  使用方式 : ln [options] source dist,其中 option 的格式为 :
  [-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
  [--help] [--version] [--]
  说明 : Linux/Unix 档案系统中,有所谓的连结(link),咱们能够将其视为档案的别名,而连结又可分为两种 : 硬连结(hardlink)与软连结(symboliclink),硬连结的意思是一个档案能够有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另外一个档案的位置。硬连结是存在同一个档案系统中,而软连结却能够跨越不一样的档案系统。
ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。
  不管是硬连结或软链结都不会将本来的档案复制一份,只会占用很是少许的磁碟空间。
  -f : 链结时先将与 dist 同档名的档案删除
  -d : 容许系统管理者硬链结本身的目录
  -i : 在删除与 dist 同档名的档案时先进行询问
  -n : 在进行软连结时,将 dist 视为通常的档案
  -s : 进行软链结(symbolic link)
  -v : 在连结以前显示其档名
  -b : 将在链结时会被覆写或删除的档案进行备份
  -S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
  -V METHOD : 指定备份的方式
  --help : 显示辅助说明
  --version : 显示版本
  范例 :
  将档案 yy 产生一个 symbolic link : zz
ln -s yy zz
  将档案 yy 产生一个 hard link : zz
ln yy xx
相关文章
相关标签/搜索