`

[转] linux文件链接

阅读更多

链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。

 

Linux中包括两种链接:硬链接(Hard Link)软链接(Soft Link),软链接又称为符号链接(Symbolic link)。

 

我们首先来了解一下几个名词

 

索引节点(inode)

 

要了解链接,我们首先得了解一个概念,叫索引节点(inode)。在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号,我们可以将inode简单理解成一个指针,它永远指向本文件的具体存储位置。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。系统是通过索引节点(而不是文件名)来定位每一个文件。

 

硬链接(Hard Link)

 

硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。可以用:ln命令来建立硬链接。

 

引用

 

ln [options] existingfile newfile

 

ln [options] existingfile-list directory

 

 

 

用法:

 

第一种为”existingfile”创建硬链接,文件名为”newfile”

 

第二种在”directory”目录中,为” existingfile-list”中包含的所有文件创建一个同名的硬链接。

 

常用可选[options]-f 无论”newfile”存在与否,都创建链接。-n 如果”newfile”已存在,就不创建链接。

 

软链接(Soft Link)

 

软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。win下的快捷方式差不多

 

可以用:ln -s 命令来建立软链接。

 

引用

 

ln -s existingfile newfile

 

ln -s existingfile-list directory

 

 

 

下面我们用一个实例来说明硬链接和软链接。

 

现在目录下有两个文件,一个名为file1,一个名为file2

 

引用

 

$ ls –il

 

1052671 -rw-r--r-- 1 Leanx Leanx 0 2010-03-29 13:46 file1

 

1052670 -rw-r--r-- 1 Leanx Leanx 0 2007-03-29 13:46 file2

 

 

 

首先先做一个file1的硬链接。

 

引用

 

$ ln file1 file1hard

 

$ls –il

 

1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:46 file1

 

1052670 -rw-r--r-- 1 Leanx Leanx 0 2010-03-29 13:46 file12

 

1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:46 file1hard

 

 

 

这里我们注意在创建链接前,file1显示的链接数目为1,创建链接后

 

1.file1file1hard的链接数目都变为2

 

2.file1file1inode号是一样的,都是1052671

 

3.file1file1hard显示的文件大小也是一样,都是0B

 

可见进行了ln命令的操作结果:file1file1hard是同一个文件的两个名字,它们具有同样的索引节点号和文件属性,建立文件file1的硬链接,就是为 file1的文件索引节点在当前目录上建立一个新指针。你可以删除其中任何一个,如rm file1,每次只会删除一个指针,链接数同时减一,只有将所有指向文件内容的指针,也即链接数减为0时,内核才会把文件内容从磁盘上删除。

 

尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一些不足之处:

 

1.不允许给目录创建硬链接。

 

2.不可以在不同文件系统的文件间建立链接。

 

接着我们做一个指向file2的软链接,软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。

 

引用

 

$ ln -s file2 file2soft

 

$ ls –il

 

总用量 0

 

1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:34 file1

 

1052670 -rw-r--r-- 1 Leanx Leanx 0 2010-03-29 13:35 file2

 

1053313 lrwxrwxrwx 1 Leanx Leanx 5 2010-03-29 13:45 file2soft -> file2

 

1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:34 file1hard

 

 

 

从上面链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是完全不同的。

 

区别:

 

 1.硬链接原文件/链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件;

 

 2.在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;

 

 3.链接数目是不一样的,软链接的链接数目不会增加;

 

 4.文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的。而这里软链接显示的大小与原文件就不同了,file2大小是0B,而file2soft5B

 

    总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。

    当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬 链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

 

From: http://blog.chinaunix.net/uid-23544029-id-311348.html

分享到:
评论

相关推荐

    Linux操作系统文件链接问题

    在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号。在Linux中多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。与硬连接相对应,Lnux系统中还存在另一种...

    linux镜像文件链接

    有centos、RHEL以及RHEL服务器版。都是百度云链接,永久有效的。

    Linux的文件链接和ln命令

    Linux强大的文件链接可以让我们轻松做到以下几点: 1、多用户之间的文件共有、数据共享; 2、不同版本的程序环境或数据源之间的切换; 3、为空间渐少的文件系统“扩容”; 目录: 1、Linux的文件系统 2、文件链接的...

    Linux操作系统的硬链接与软链接讲解

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

    Linux文件权限防护设置方法详细介绍

    可以分为5种不同的类型:普通文件、目录文件、链接文件、设备文件和管道文件。 所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。Linux 是一个多用户操作系统,它允许多个用户同时登录和工作...

    linux镜像文件iso下载官网下载链接.txt

    linux镜像文件iso下载官网

    Linux文件和目录读写执行权限解析

    Linux文件和目录读写执行权限解析 本文对linux系统下各种权限的文件和目录的新建、复制和删除等进行了测试和分析总结!

    Linux服务器配置与管理:linux文件类型.pptx

    熟悉: Linux文件类型 【能力目标】 能分辨文件的种类 【思政目标】 培养学生职业素养和工匠精神。 1.Linux文件类型 Linux的文件类型大致可分为: 普通文件:用于存放数据、程序等信息的文件。 目录文件:是由文件...

    MATLAB2021ALinux版本下载链接

    里面带有MATLAB2021ALinux版本的百度网盘下载链接,安装步骤博文链接,安装过程中遇到的问题及解决方法的博文链接

    bat脚本实现上传文件至Linux服务器

    bat脚本实现将Windows文件上传至Linux服务器 不同选项实现具体功能、检查资源存在 、 确认上传

    如何设置Linux系统下的文件权限

    可以分为5种不同的类型:普通文件、目录文件、链接文件、设备文件和管道文件。 所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。 Linux 是一个多用户操作系统,它允许多个用户同时登录和...

    linux文件传输程序

    服务器端程序能够同时接受多个客户端的链接请求,并把客户端指定的文件传输给客户端,或者接受客户端的文件存储到服务器端。 客户端要实现以下几个命令:put, get, cd, ls, pwd, lcd, lls, lpwd, quit。 put命令:...

    超详细!可用!java(jcraft,SFTP)访问linux目录并下载共享目录文件

    java访问linux;通过linux主机ip,端口,用户名,密码,获取linux链接,输入文件路径可批量的下载linux文件,mian函数为测试代码

    Linux操作系统文件链接.docx

    Linux操作系统文件链接.docx

    linux下Rsync+sersync实现文件数据实时同步

    linux下Rsync+sersync实现文件数据实时同步

    模拟linux文件系统

    模拟Linux文件系统。在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的 模拟Linux文件系统 在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。 2. 编写一管理程序对此空间进行管理,以...

    linux动态链接库

    通过shared和fPIC编译参数生产so动态链接库文件。程序在调用库函数时,只需要连接上这个库即可。例如下面实现一个简单的整数四则运输的动态链接库,定义的caculate.h和caculate.c两个文件,生产libcac.so动态链接库...

    SSH连接Linux系统的文件便捷移动工具

    SSH连接Linux系统的文件便捷移动工具,连接上Linux系统后可以直接将文件移动到服务器上,无需任何脚本

    linux下socket文件传输

    linux 系统下文件传输,使用的基于socket的tcp链接,可以在linux pc上使用,也可以在嵌入式linux终端中使用

    Linux动态链接库.so文件的创建与使用

    Linux动态链接库.so文件的创建与使用

Global site tag (gtag.js) - Google Analytics