每天一个Linux命令(32):ln

来源:互联网 发布:凤台县残疾人数据 编辑:程序博客网 时间:2024/06/06 00:25

ln的功能是为某个文件在另外一个位置建立一个同步链接。当在不同的目录要用到相同的文件时,我们不需要在每个目录下都放一个相同的文件,我们只要在某个固定的目录,放上文件,然后在其它的目录下用ln命令链接(link)到它就可以,不必重复的占用磁盘空间。

1. 命令格式

ln [参数] [源文件或目录] [目标文件或目录]

2. 命令功能

我们可以将链接(link)视为文件的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link)。硬链接就是一个文件可以有多个名称,而软链接则是产生一个特殊的文件,指向另一个文件的位置;硬链接可存在于同一个文件系统中,而软链接可以跨越不同的文件系统。

软链接

  • 软链接以路径的形式存在,类似于Windows系统中的快捷方式

  • 软链接可以跨多个文件系统 ,硬链接却不可以

  • 软链接可以对一个不存在的文件名进行链接

  • 软链接可以对目录进行链接

硬链接

  • 硬链接以文件副本的形式存在,但不占用实际空间。

  • 不要给目录创建硬链接

  • 只有在同一个文件系统中才能创建硬链接

这里有两点要注意:

第一,ln命令会保持每一个链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;

第二,ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。

3. 命令参数

3.1 必要参数

-b,删除或覆盖以前建立的链接

-d,允许超级用户制作目录的硬链接

-f,强制执行

-i,交互模式,提示用户是否覆盖已存在的文件

-n,把符号链接视为一般目录

-s,软链接(符号链接)

-v,显示详细过程

3.2 选择参数

-S,“-S <字尾备份字符串> ” 或 “–suffix=<字尾备份字符串>”

-V,“-V <备份方式>” 或 “ –version-control=<备份方式>”

–help,显示帮助信息

–version,显示版本信息

4. 使用实例

例一:为文件创建软链接

命令:ln -s log2013.log link2013

说明:为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效。

# ll-rw-r--r-- 1 root bin   61 11-13 06:03 log2013.log# ln -s log2013.log link2013# lllrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log


例二:为文件创建硬链接

命令:ln log2013.log ln2013
说明:为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同

# lllrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log# ln log2013.log ln2013# lllrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log-rw-r--r-- 2 root bin      61 11-13 06:03 ln2013-rw-r--r-- 2 root bin      61 11-13 06:03 log2013.log# cat ln2013 hostnamebaidu=baidu.comhostnamesina=sina.comhostnames=true


例三:链接完毕后,删除和重建原文件

# lllrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log-rw-r--r-- 2 root bin 61 11-13 06:03 ln2013-rw-r--r-- 2 root bin 61 11-13 06:03 log2013.log# rm -rf log2013.log # lllrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log-rw-r--r-- 1 root bin 61 11-13 06:03 ln2013# touch log2013.log# lllrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log-rw-r--r-- 1 root bin 61 11-13 06:03 ln2013-rw-r--r-- 1 root root 0 12-07 16:19 log2013.log# less > log2013.log<<EOF    >2013-01>2013-02>2013-03>2013-04>2013-05>2013-06>2013-07>2013-08>2013-09>2013-10>2013-11>2013-12>EOF# lllrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log-rw-r--r-- 1 root bin 61 11-13 06:03 ln2013-rw-r--r-- 1 root root 96 12-07 16:21 log2013.log# cat link2013 2013-012013-022013-032013-042013-052013-062013-072013-082013-092013-102013-112013-12# cat ln2013       hostnamebaidu=baidu.comhostnamesina=sina.comhostnames=true

说明:

  • 删除源文件后,并没有影响到硬链接;软链接文件在centos系统下不断的闪烁,提示源文件已经不存在。

  • 重建源文件后,软链接不再闪烁,说明软链接已经成功,找到了链接文件系统;重建后,硬链接并没有受到源文件影响,其内容还是保留了源文件删除前的内容,说明硬链接已经失效。

例四:将文件链接为另一个目录下的相同名字

命令:ln log2013.log ./test3/

# ln log2013.log ./test3/# cd ./test3/# ll-rw-r--r-- 2 root root 96 12-07 16:21 log2013.log# less > log2013.log <<EOF>2013-01>2013-02>2013-03>2013-04>2013-05>2013-06>2013-07>2013-08>2013-09>2013-10>EOF# ll-rw-r--r-- 2 root root 80 12-07 16:36 log2013.log# cd ..# lllrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log-rw-r--r-- 1 root bin      61 11-13 06:03 ln2013-rw-r--r-- 2 root root     80 12-07 16:36 log2013.log# more log2013.log 2013-012013-022013-032013-042013-052013-062013-072013-082013-092013-10

说明:在test3目录中创建log2013.log的同名链接,修改test3目录中的log2013.log文件,同时也会同步到源目录的文件。

例五:给目录创建一个软链接

命令:ln -sv /opt/soft/test/test3 /opt/soft/test/test5

# lldrwxr-xr-x 2 root root   4096 12-07 16:36 test3drwxr-xr-x 2 root root   4096 12-07 16:57 test5## ln -sv test3 test5//test3是源文件目录,test5是链接目录# cd test5# lllrwxrwxrwx 1 root root 5 12-07 16:57 test3 -> test3# cd test3-bash: cd: test3: 符号连接的层数过多# rm -rf test3# ll# ln -sv /opt/soft/test/test3 /opt/soft/test/test5创建指向“/opt/soft/test/test3”的符号链接“/opt/soft/test/test5/test3”# lllrwxrwxrwx 1 root root 20 12-07 16:59 test3 -> /opt/soft/test/test3# cd test3# ll总计 4-rw-r--r-- 2 root root 80 12-07 16:36 log2013.log# touch log2014.log# ll总计 4-rw-r--r-- 2 root root 80 12-07 16:36 log2013.log-rw-r--r-- 1 root root  0 12-07 17:05 log2014.log


说明:

  • 只能创建目录的软链接。

  • 创建目录的软链接必须用绝对路径,使用相对路径会不成功,提示:符号连接的层数过多。

  • 在链接目录中修改文件,会在源文件目录中同步变化。

0 0
原创粉丝点击