Linux命令——ln命令创建和删除软、硬链接(6/29)
1) -s 软链接(符号链接)
2) -v 显示详细的处理过程
3) -d 允许超级用户制作目录的硬链接
用法:
#ln --help
用法:ln [选项]... 目标 [链接名]
或:ln [选项]... 目标... 目录
或:ln [选项]... --target-directory=目录 目标...
创建连至指定<目标>的链接,并可选择性指定<链接名>。
如果没有指定<链接名>,会在目前的目录中创建一个和<目标>名称一样的链接。
当使用第二种格式而<目标>多於一个时,最后的参数必须是目录;这样会在指定的
<目录>中分别创建连至每个<目标>的链接。默认会创建硬链接,若
使用 --symbolic 选项则创建符号链接。当创建硬链接时,每个<目标>都必须存
在。
长选项必须用的参数在使用短选项时也是必须的。
      --backup[=CONTROL]      make a backup of each existing destination file
-b                          like --backup but does not accept an argument
-d, -F, --directory         allow the superuser to attempt to hard link
                                directories (note: will probably fail due to
                                system restrictions, even for the superuser)
-f, --force                 remove existing destination files
-n, --no-dereference        如果目的地是一个链接至某目录的符号链接,会将
                              该符号链接当作一般文件处理,先将该已存在的
                              链接备份或删除
-i, --interactive           确认是否删除目的地文件
-s, --symbolic              创建符号链接而不是硬链接
-S, --suffix=后缀           自行指定备份文件的<后缀>
      --target-directory=目录 在指定<目录>中创建链接
-v, --verbose               链接前先印出每个文件的名称
      --help     显示此帮助信息并离开
      --version 显示版本信息并离开
备份文件的后缀为‘~’,除非以 --suffix 选项或是 SIMPLE_BACKUP_SUFFIX
环境变量指定。版本控制的方式可透过 --backup 选项或 VERSION_CONTROL 环境
变量来选择。以下是可用的变量值:
none, off       不会进行备份 (即使使用了 --backup 选项)
numbered, t     备份文件会加上数字
existing, nil   若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
simple, never   永远使用普通方式备份
删除链接时,直接用rm命令
例:
添加
ln -s /usr/jboss4.0.5.GA/ jboss
删除
rm jboss
-f 建立时,将同档案名删除.
-i 删除前进行询问.
ln -s abc cde 建立abc 的软连接
ln abc cde 建立abc的硬连接,
ln -s findDir finDir_link 为目录创建软连接 当源文件失效后,链接文件将失效。
2)[root@localhost Documents]# ln newFile newLink 给文件创建硬链接

[root@localhost Documents]# ll
总用量 0
drwxr-xr-x. 2 root root 51 5月 21 07:10 NoPdir
drwxr-xr-x. 2 root root 51 5月 21 07:09 Pdir
[root@localhost Documents]# touch newFile //创建文件
[root@localhost Documents]# ln -s newFile newLink_s //创建文件符号链接
[root@localhost Documents]# ln newFile newLink //创建文件硬链接
[root@localhost Documents]# ln -s Pdir PdirLink_s //创建目录符号链接
[root@localhost Documents]# ln Pdir PdirLink //不允许创建目录硬链接
ln: "Pdir": 不允许将硬链接指向目录
[root@localhost Documents]# ll
总用量 0
-rw-r--r--. 2 root root 0 5月 27 06:18 newFile
-rw-r--r--. 2 root root 0 5月 27 06:18 newLink
lrwxrwxrwx. 1 root root 7 5月 27 06:19 newLink_s -> newFile
drwxr-xr-x. 2 root root 51 5月 21 07:10 NoPdir
drwxr-xr-x. 2 root root 51 5月 21 07:09 Pdir
lrwxrwxrwx. 1 root root 4 5月 27 06:19 PdirLink_s -> Pdir

创建的文件硬链接newLink与源文件newFile具有相同的权限,并且没有箭头。而文件软链接newLink_s的权限要多得多,而且有指向符号。
3)综合实例,比较硬链接与符号链接的差别

[root@localhost Documents]# cat >newFile <<EOF
> This is original file!
>
> I'm test the hard link and the symbol link!
> EOF //到这里新建一个文件
总用量 4
[root@localhost Documents]# ln -s newFile newFile_link_s
[root@localhost Documents]# ln newFile newFile_link
[root@localhost Documents]# rm newFile //删除源文件
rm:是否删除普通文件 "newFile"?y
[root@localhost Documents]# ll
总用量 4
-rw-r--r--. 1 root root 68 5月 27 06:30 newFile_link
lrwxrwxrwx. 1 root root 7 5月 27 06:31 newFile_link_s -> newFile
drwxr-xr-x. 2 root root 51 5月 21 07:10 NoPdir
drwxr-xr-x. 2 root root 51 5月 21 07:09 Pdir
[root@localhost Documents]# cat newFile_link //查看硬链接,完全不受影响,但符号链接已经失效
This is original file! I'm test the hard link and the symbol link!
[root@localhost Documents]# cat >newFile <<EOF 再新建一个文件newFile
> The Second Test!
>
> EOF
[root@localhost Documents]# ll
总用量 8
-rw-r--r--. 1 root root 18 5月 27 06:33 newFile
-rw-r--r--. 1 root root 68 5月 27 06:30 newFile_link
lrwxrwxrwx. 1 root root 7 5月 27 06:31 newFile_link_s -> newFile //符号链接已经恢复
drwxr-xr-x. 2 root root 51 5月 21 07:10 NoPdir
drwxr-xr-x. 2 root root 51 5月 21 07:09 Pdir
[root@localhost Documents]# cat newFile_link //分别查看符号链接和硬链接发现硬链接内容不变,符号链接内容变为新建的文件内容了。
This is original file! I'm test the hard link and the symbol link!
[root@localhost Documents]# cat newFile_link_s
The Second Test!

4)[root@localhost Documents]# ln newFile ln_dir 在另一个目录创建同名硬链接

[root@localhost Documents]# mkdir ln_dir
[root@localhost Documents]# ln newFile ln_dir
[root@localhost Documents]# cd ln_dir
[root@localhost ln_dir]# ll
总用量 4
-rw-r--r--. 2 root root 18 5月 27 06:33 newFile

修改newFile硬链接目录文件,也会导致源文件被修改。
5)[root@localhost Documents]# ln -sv a.c ./Pdir 在指定目录创建链接

[root@localhost Documents]# touch a.c
[root@localhost Documents]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月 27 07:03 a.c
lrwxrwxrwx. 1 root root 6 5月 27 06:58 No_link -> NoPdir
drwxr-xr-x. 2 root root 51 5月 21 07:10 NoPdir
drwxr-xr-x. 2 root root 51 5月 21 07:09 Pdir
[root@localhost Documents]# ln -sv a.c ./Pdir
"./Pdir/a.c" -> "a.c"
[root@localhost Documents]# ln -sv a.c ./Pdir/b.c
"./Pdir/b.c" -> "a.c"
[root@localhost Documents]# ln -v a.c ./Pdir/c.c
"./Pdir/c.c" => "a.c"
[root@localhost Documents]# ls -l Pdir
总用量 8
lrwxrwxrwx. 1 root root 3 5月 27 07:04 a.c -> a.c
lrwxrwxrwx. 1 root root 3 5月 27 07:04 b.c -> a.c
-rw-r--r--. 2 root root 0 5月 27 07:03 c.c
-r--r--r--. 1 root root 0 5月 19 04:16 find
-rw-r--r--. 1 root root 85 5月 19 04:25 t3.txt
--w-------. 1 root root 0 5月 15 18:34 uText
-rw-r--r--. 1 root root 105 5月 21 06:35 vf

(5)其他:
扩展知识:
Linux具有为一个文件起多个名字的功能,称为链接。被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份。另外,被链接的文件也可以有相同的文件名,但是存放在不同的目录下,这样只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名链接文件的修改。对于某个文件的各链接文件,我们可以给它们指定不同的存取权限,以控制对信息的共享和增强安全性。 文件链接有两种形式,即硬链接和符号链接。
      硬链接:
建立硬链接时,在另外的目录或本目录中增加目标文件的一个目录项,这样,一个文件就登记在多个目录中。
创建硬链接后,己经存在的文件的I节点号(Inode)会被多个目录文件项使用。一个文件的硬链接数可以在目录的长列表格式的第二列中看到,无额外链接的文件的链接数为l。 在默认情况下,ln命令创建硬链接。ln命令会增加链接数,rm命令会减少链接数。一个文件除非链接数为0,否则不会从文件系统中被物理地删除。
对硬链接有如下限制:
1.不能对目录文件做硬链接。
2.不能在不同的文件系统之间做硬链接。就是说,链接文件和被链接文件必须位于同一个文件系统中。
      软链接:
符号链接也称为软链接,是将一个路径名链接到一个文件。这些文件是一种特别类型的文件。事实上,它只是一个文本文件,其中包含它提供链接的另一个文件的路径名,如图中虚线箭头所示。另一个文件是实际包含所有数据的文件。所有读、写文件内容的命令被用于符号链接时,将沿着链接方向前进来访问实际的文件。
与硬链接不同的是,符号链接确实是一个新文件,当然它具有不同的I节点号;而硬链接并没有建立新文件。 符号链接没有硬链接的限制,可以对目录文件做符号链接,也可以在不同文件系统之间做符号链接。
      用ln -s命令建立符号链接时,源文件最好用绝对路径名。这样可以在任何工作目录下进行符号链接。而当源文件用相对路径时,如果当前的工作路径与要创建的符号链接文件所在路径不同,就不能进行链接。 符号链接保持了链接与源文件或目录之间的区别: 删除源文件或目录,只删除了数据,不会删除链接。一旦以同样文件名创建了源文件,链接将继续指向该文件的新数据。 在目录长列表中,符号链接作为一种特殊的文件类型显示出来,其第一个字母是l。 符号链接的大小是其链接文件的路径名中的字节数。
硬链接可认为是一个文件拥有两个文件名; 而软链接则是系统新建一个链接文件,此文件指向其所要指的文件
此外,软链接可对文件和文件夹。。而硬链接仅针对文件。
3. 软链接与硬链接的区别(讲解):
Linux 软连接与硬连接
连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)又叫符号连接。符号连接相当于Windows下的快捷方式。
不可以对文件夹建立硬连接的,我们通常用的还是软连接比较多。
eg:
ln -s source dist # 建立软连接
ln source dist # 建立硬连接
软链接实际上只是一段文字,里面包含着它所指向的文件的名字,系统看到软链接后自动跳到对应的文件位置处进行处理;相反,硬联接为文件开设一个新的目录 项,硬链接与文件原有的名字是平权的,在Linux看来它们是等价的。由于这个原因,硬链接不能连接两个不同文件系统上的文件。
(1)软连接可以 跨文件系统 ,硬连接不可以 。实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 bb,cc . ln -s aa.txt /root/bb 连接成功 。ln aa.txt /root/bb 失败 。
(3)软连接可以对一个不存在的文件名进行连接 。
(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.文件的时间截.
Linux命令——ln命令创建和删除软、硬链接(6/29)的更多相关文章
- linux命令 - ln - 创建和删除软、硬链接
		
linux命令 - ln - 创建和删除软.硬链接 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件 ...
 - linux下创建和删除软、硬链接
		
linux下创建和删除软.硬链接 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制 ...
 - linux 下ln命令--笔记
		
linux 下ln命令 ln命令用来为文件创建连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接.如果要创建符号连接必须使用"-s"选项.注意:符号链接文件不是一个独立 ...
 - linux 软/硬链接详解
		
SYNOPSIS ln [OPTION]... [-T] TARGET LINK_NAME (1st form) ln [OPTION]... TARGET (2nd form) ln [OPTION ...
 - Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接
		
作业一:1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group > /1.txt2) 将用户信息数据库文件和用户 ...
 - Linux创建连接命令 ln -s创建软连接
		
ln -s 是linux中一个非常重要命令,一定要熟悉.它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s, 具体用法是:ln -s 源文件 目标文件. 当 我们需要在 ...
 - Linux上ln命令详细说明及软链接和硬链接的区别
		
硬链接(hard link) UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,我们称这种机制为链接.它可以使得单个程序对同一文件使用不同的名字.这样的好处是文件系 统只存在一个文件的副本, ...
 - 【转】linux之ln命令
		
转自:http://www.cnblogs.com/peida/archive/2012/12/11/2812294.html ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位 ...
 - linux上ln命令详细说明
		
ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件. 当我们需要在不同的目录,用到相同的 ...
 
随机推荐
- Sql server 打不开了,无法识别的配置节 system.serviceModel 解决方案
			
异常描述: System.Configuration.ConfigurationErrorsException: 配置系统未能初始化 ---> System.Configuration.Conf ...
 - Extjs5 app.js缓冲设置
			
在6月2日Extjs5正式版公布后.粗略研究了一下,sencha推荐使用project编译来公布应用.开发过程中用sencha app watch命令就可以生成服务.每建立一个js类,就须要Ctrl+ ...
 - Java序列化(转载)
			
引用自:http://developer.51cto.com/art/201506/479979_all.htm 关于 Java 对象序列化您不知道的 5 件事 数年前,当和一个软件团队一起用 Jav ...
 - 高并发分布式系统如何做到唯一Id
			
又一个多月没冒泡了,其实最近学了些东西,但是没有安排时间整理成博文,后续再奉上.最近还写了一个发邮件的组件以及性能测试请看 <NET开发邮件发送功能的全面教程(含邮件组件源码)> ,还弄了 ...
 - C++ 检查Windows服务运行状态
			
检查Windows服务运行状态 C++ Code 1234567891011121314151617181920212223242526272829303132333435363738394041 ...
 - linux软件的安装和卸载
			
http://blog.chinaunix.net/uid-25572546-id-1995028.html
 - iOS-setNeedsLayout等布局方法
			
列举下iOS layout的相关方法: layoutSubviews layoutIfNeeded setNeedsLayout setNeedsDisplay drawRect sizeThatFi ...
 - AndroidManifest.xml文件详解(activity)(五)
			
android:taskAffinity 这个属性用于跟Activity有亲缘关系的任务.带有相同亲缘关系的Activity,在概念上是属于相同任务的(从用户的角度看,它们是属于同一应用程序的).任务 ...
 - 自己根据java的LinkedList源码编写的一个简单的LinkedList实现
			
自己实现了一个简单的LinkedList /** * Create by andy on 2018-07-03 11:44 * 根据 {@link java.util.LinkedList}源码 写了 ...
 - JavaServlet实现下载功能
			
我们在项目中经常会用到下载功能,所以今天我们先说下下载功能实现的思路,然后通过一个案例代码来具体体现. 1.下载的思路: ①首先要获取我们要操作的文件对象的路径 ②然后使用获取的文件对象路径构 ...