为什么80%的码农都做不了架构师?>>>   

在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。

链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft  Link),软链接又称为符号链接(Symbolic link)。符号连接相当于Windows下的快捷方式。

一、硬链接

硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。可以用:ln命令来建立硬链接。
语法:
ln [options]  existingfile newfile(sexistingfile 待建立链接文件的文件,newfile是新创建的链接文件)
ln [options]  existingfile-list directory

-f 建立时,将同档案名删除.
-i 删除前进行询问.

ln -s abc cde 建立abc 的软连接
ln abc cde 建立abc的硬连接,

用法:
第一种:为”existingfile”创建硬链接,文件名为”newfile”。
第二种:在”directory”目录中,为”existingfile-list”中包含的所有文件创建一个同名的硬链接。
常用可选[options]  –f 无论”newfile”存在与否,都创建链接。-n 如果”newfile”已存在,就不创建链接。

下面举一些例子:

[root@rekfan.com test]# ls -il
总计  0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2  root root 0 07-14 14:17 file2
[root@rekfan.com test]# ln file2  file2hand
[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root  root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17  file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17  file2hand
[root@rekfan.com test]#

注意在创建链接前,file1显示的链接数目为1,创建链接后file1和file1hard的链接数目都变为2;file1和file1hard在inode号是一样的file1和file1hard显示的文件大小也是一样。可见进行了ln命令的操作结果:file1和file1hard是同一个文件的两个名字,它们具有同样的索引节点号和文件属性,建立文件file1的硬链接,就是为file1的文件索引节点在当前目录上建立一个新指针。你可以删除其中任何一个,如rm file2 ,每次只会删除一个指针,链接数同时减一,当链接数减为0时,内核才会把文件内容从磁盘上删除。

还可以在不同目录,但同一文件系统中建立文件的硬链接。设file1、file2在目录/home/root/dir1中,下面的命令,在/home/root中建立file2的硬链接。

ln file2 /home/root/file2hard
下面的程序,是将dir1目录中所有文件,在目录dir2中建立硬链接
#mkdir  dir2
#ln /home/root/dir1/* /home/root/dir2

如果使用了 ln –f existingfile  newfile,如果newfile已经存在,则无论原来newfile是什么文件,只用当前用户对它有写权限,newfile就成为exisitngfile的硬链接文件。

尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一下不足之处:
(1)不可以在不同文件系统的文件间建立链接
(2)只有超级用户才可以为目录创建硬链接。

二、软链接(符号链接)

软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
建立软链接,只要在ln后面加上选项  –s,下面举个例子

[root@rekfan.com test]# ls -il
总计  0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2  root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17  file2hand

[root@rekfan.com test]# ln -s file1  file1soft    (第一个参数是目录,第二个参数是软链接名;备注:可以使用绝对路径,如: ln -s /home/test/123 /root/abc)
[root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root  root 48 07-14 14:17 file1
1491140 lrwxrwxrwx 1 root root 5 07-14 14:24  file1soft -> file1  (file1soft 软链接名)
1491139 -rw-r–r– 2 root root 0 07-14 14:17  file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

从上面链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是不同的。区别:硬链接原文件&链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;链接数目是不一样的,软链接的链接数目不会增加;文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,这用强调,因为是等同的嘛,而这里软链接显示的大小与原文件就不同了,file1大小是48B,而file1soft是5B,这里面的5实际上就是“file1”的大小。

总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。
在不同系统之间建立软链接、对目录建立链接,这里就不举例了,读者可以自己去尝试,我也是在不断实践中学习的。
当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了~~,而
硬链接就没有这个缺陷,你想怎么移就怎么移(呵呵);还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

补充一下:可以通过symlink来查看链接文件,可以用 man symlink来学习。

三、删除链接

有创建就有删除

rm -rf  symbolic_name 注意不是rm -rf symbolic_name/

[root@rekfan.com test]# ls -il
总计  0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491140 lrwxrwxrwx 1  root root 5 07-14 14:24 file1soft -> file1
1491139 -rw-r–r– 2 root root 0  07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17  file2hand
[root@rekfan.com test]# rm -rf file1soft
[root@rekfan.com test]#  ls -il
总计 0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491139  -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14  14:17 file2hand
[root@rekfan.com test]#

————————————
linux 软连接和硬链接的区别:
————————————

4点不同 :
(1)软连接可以 跨文件系统 ,硬连接不可以 。
实践的方法就是用共享文件把windows下的  aa.txt文本文档连接到linux下/root目录 下 bb,cc . ln -s aa.txt
/root/bb 连接成功 。ln aa.txt  /root/bb 失败 。

(2)关于 I节点的问题 。硬连接不管有多少个,都指向的是同一个I节点,会把 结点连接数增加 ,只要结点的连接数不是 0,文件就一直存在  ,不管你删除的是源文件还是 连接的文件 。只要有一个存在 ,文件就 存在 (其实也不分什么 源文件连接文件的 ,因为他们指向都是同一个 I节点)。  当你修改源文件或者连接文件任何一个的时候 ,其他的 文件都会做同步的修改 。软链接不直接使用i节点号作为文件指针,而是使用文件路径名作为指针。所以 删除连接文件  对源文件无影响,但是 删除 源文件,连接文件就会找不到要指向的文件 。软链接有自己的inode,并在磁盘上有一小片空间存放路径名.

(3)软连接可以对一个不存在的文件名进行连接 。

(4)软连接可以对目录进行连接。

备注:I节点 :它是UNIX内部用于描述文件特性的数据结构.我们通常称I节点为文件索引结点(信息结点).i节点 含有关于文件的大部分的重要信  息,包括文件数据块在

磁盘上的地址.每一个I节点有它自己的标志号,我们称为文件顺序号.I节点包含的信息 1.文件类型 2.文件属主关系 3.文件的访问权限  4.文件的时间截。

转载于:https://my.oschina.net/junn/blog/128913

Linux下创建和删除软、硬链接(ln)相关推荐

  1. linux下创建和删除软、硬链接

     在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速 ...

  2. linux如何删除硬链接,linux下创建和删除软、硬链接

    在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号. 文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问 ...

  3. ln创建、删除软/硬链接

    待整理.... 转载于:https://www.cnblogs.com/wangcp-2014/p/6657016.html

  4. Linux下创建和删除用户

    Linux下创建和删除用户 目录 Linux下创建和删除用户 1 创建新用户 2 配置新用户 3 进入新用户 4 删除用户 1 创建新用户 在普通root用户下可能没有权限操作,因此直接在root下操 ...

  5. linux 下生成docx,linux下创建、删除文件和文件夹命令.docx

    linux下创建.删除文件和文件夹命令.docx 还剩 6页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 学习 Linux 二(创建.删除文件和文件夹 ...

  6. linux 下创建和删除软连接

    linux环境下创建和删除软链接 ln -s /home/zhenwx/htccode-v1/    /home/zhenwx/htccode       建立/home/zhenwx/htccode ...

  7. linux目录创立文件硬链接,在Linux中创建文件目录软链接、硬链接的方法

    1. 使用方式:ln [option] source_file dist_file -f 建立时,将同档案名删除 -i 删除前进行询问 -s 软链接,否则默认为硬链接 n -s abc cde 建立a ...

  8. 在Linux中创建文件目录软链接、硬链接的方法

    1. 使用方式:ln [option] source_file dist_file -f 建立时,将同档案名删除              -i 删除前进行询问               -s 软链 ...

  9. linux下创建、删除文件夹

    1.在 Linux 下,我们可以使用 mkdir 命令创建目录,mkdir 是"make directory" 的缩写词. 运行 mkdir 命令 默认情况下,不带任何参数运行 m ...

  10. Linux下创建、删除软链接

    创建软链接: lbzeng@lbzeng-ubuntu:~$ sudo ln -s ~/pbrt-v3/build/* /usr/bin/ 删除软链接: 接下来,要做的事情是删除上面指令创建的软链接. ...

最新文章

  1. 外网访问arm嵌入式linux_嵌入式Linux系统编程——文件读写访问、属性、描述符、API
  2. 往事并不如烟@武汉 --- 和同事们一起'诈金花’
  3. 新手入门深度学习 | 4-4:保存模型的N种方法
  4. 分支定界法上下界_分支定界(Branch-and-Cut)方法的逻辑
  5. 你离黑客的距离,就差这20个神器了
  6. 06列表的常用基本操作
  7. 自动取款机如何使用无卡取款_云南铝管自动抛光机如何使用_利琦抛光机械
  8. 构建之法第11、12章
  9. instring java_Decode a string in Java
  10. java阻塞锁_java – 阻止锁与非阻塞锁
  11. 20、自动装配-@Autowired@Qualifier@Primary
  12. Python查找字符串中的所有汉字
  13. 微软的补丁服务器,Microsoft 安全公告 MS17-010 - 严重
  14. 碳足迹 carbon footprint
  15. 压缩包伪装-阿里网盘禁止分享解决方案\更新日志
  16. 兼容chrome、firebox、IE阻止冒泡问题
  17. 错误提示 - Procmon.exe - 无法找到入口(InitializeSRWLock)
  18. arm服务器计算性能,【干货分享】ARM/x86服务器的ceph性能对比报告
  19. Python:urllib与urllib2错误解析
  20. wipe、root、底包、rsd是什么意思?小白入门释义

热门文章

  1. 二叉树的简单应用--表达式树
  2. 数据结构:实验三 二叉树操作实现
  3. JS学习总结(14)——Events事件
  4. JS学习总结(5)——循环语句
  5. 【ArcGIS|空间分析|网络分析】3 使用网络数据集查找最佳路径
  6. classdefnotfound本地不报错_四种解决Nginx出现403 forbidden 报错的方法
  7. C++基础语法-02-运算符重载
  8. java课时,java学习笔记_课时一
  9. IDEA 卡成球了 !咋优化 ?
  10. 金三银四,Android高级开发面试题目,帮你助力