- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
在学习linux的过程中,我经常把软硬链接,所以今天专门查了一些资料,然后整合在自己的博客中,方便以后复习,查看。
一方面也是因为看了vamei的linux的概念与体系系列文章,感觉不全的做些补充。
简而言之:
软链接相当于windows中的快捷方式
硬链接相当于一个灾备系统,数据存放在两处,与复制不同的是两处之间存在同步机制,一处数据的改变会实时同步到另一处,另外一处数据如果被删除了,不会影响到另一处的数据.
下面是详细的介绍:
存在两种不同类型的链接,软链接和硬链接。修改其中一个,硬连接指向的是节点(inode),而软连接指向的是路径(path)
软链接文件
软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。和win下的快捷方式差不多。 链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。
命令格式:
代码: ln [-s] source_path target_path 硬链接文件
info ln 命令告诉您,硬链接是已存在文件的另一个名字,硬连接的命令是:
代码: ln -d existfile newfile //如果不加任何参数,默认情况下是硬链接.
硬链接文件
硬链接文件有两个限制:
1、不允许给目录创建硬链接;
2、只有在同一文件系统中的文件之间才能创建链接。
对硬链接文件进行读写和删除操作时候,得到的得到的结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了原有的内容。这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。修改其中一个,与其连接的文件同时被修
改.
代码:
$ cp /etc/httpd/conf/httpd.conf /usr/sam
$ ln httpd.conf httpd1.conf (硬链接)
$ ln -s httpd.conf httpd2.conf (软链接)
第一条为硬链接,第二条为软链接
代码:
$ ls -li //查看一个文件或目录的inode,要通过ls 命令的的 -i参数,inode值相同的文件,他们的关系是互为硬链接的关系
代码:
总用量 80
1077669 -rw-r--r-- 2 sam adm 34890 10月 31 00:57 httpd1.conf (连接数变为2)
1077668 lrwxrwxrwx 1 sam adm 10 10月 31 00:58 httpd2.conf -> httpd.conf (类似于Win快捷方式)
1077669 -rw-r--r-- 2 sam adm 34890 10月 31 00:57 httpd.conf (连接数变为2)
可以看到,使用ls -li,软连接只产生了10字节的快捷而已,硬连接却实实在在的的拷贝。最前面的inode硬链接和源文件是一样的
,而软链接不一样.对http1.conf进行编辑,可以发现httpd.conf也发生了一样的变化.
代码:
$ rm httpd.conf
现在删除链接的源文件,来比较不同之处
代码:
$ ls -l
总用量 44
drw-r--r-- 2 sam adm 4096 10月 30 20:14 file6
-rw-r--r-- 1 sam adm 34890 10月 31 00:57 httpd1.conf
lrwxrwxrwx 1 sam adm 10 10月 31 00:58 httpd2.conf -> httpd.conf
发现,httpd2.conf实际已经不存在了,是断链,而httpd1.conf变也了普通文件.
详细示例分析(截图):
查看硬链接ln关联的所有文件及路径
ls -i myInfo.txt
3814056 myInfo.txt
find / -inum 3814056
/home/homer/me/myInfo.txt
/home/homer/me/.me/myInfo.txt_ln
/home/homer/bin/myInfo.txt
一 链接文件
链接有两种方式,软链接和硬链接。
1 软链接文件
软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。
用ln -s 命令可以生成一个软连接,如下:
[root@linux236 test]# ln -s source_file softlink_file
在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。
2 硬链接文件
info ln 命令告诉您,硬链接是已存在文件的另一个名字(A "hard link" is another name for an existing file),这多少有些令人困惑。硬连接的命令是
ln -d existfile newfile
硬链接文件有两个限制
1)、不允许给目录创建硬链接;
2)、只有在同一文件系统中的文件之间才能创建链接。
对硬链接文件进行读写和删除操作时候,得到的得到的结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。
这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。
二 两者之间的区别
硬连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。
在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。
软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。
而硬链接就没有上面的缺陷,你想怎么移就怎么移
软链接相当于windows中的快捷方式。硬链接相当于一个灾备系统,数据存放在两处,与复制不同的是两处之间存在同步机制,一处数据的改变会实时同步到另一处,另外,一处数据如果被删除了,不会影响到另一处的数据.
详细的介绍:
硬连接指向的是节点(inode),是已存在文件的另一个名字,修改其中一个,与其连接的文件同时被修改;对硬链接文件进行读写和删除操作时候,效果和软链接相同。但如果我们删除硬链接文件的源文件, 硬链接文件仍然存在,而且保留了原有的内容。这时,系统就“忘记”了它曾经是硬链接文件,而把他当成一个普通文件。 硬链接文件有两个限制: 1、不允许给目录创建硬链接; 2、只有在同一文件系统中的文件之间才能创建链接。
软链接指向的是路径,又叫符号链接,这个文件包含了另一个文件的路径名可以是任意文件或目录,还可以链接不同文件系统的文件,和win下的快捷方式差不多。软链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己,类似于编程语言中的递归。
示例
:
ln exitfile newfile
ln -s exitfile newfile
这里的newfile为创建的链接名字,第一个没有参数,默认是硬链接,第二个 -s 表示是软链接。
ls -il 可以查看文件的inode号等属性,例如:
[root@server tmp]# touch file
[root@server tmp]# ln file file1
[root@server tmp]# ln -s file file2
[root@server tmp]# ls -il
total 0
27127 -rw-r--r--. 2 root root 0 Nov 20 10:40 file
27127 -rw-r--r--. 2 root root 0 Nov 20 10:40 file1
27132 lrwxrwxrwx. 1 root root 4 Nov 20 10:40 file2 -> file
在 /tmp 目录下,创建名为file的文件,先后创建硬链接file1,软链接file2.观察ls -il的输出
file 和 file1 的inode是一样的,所以可以说硬链接是指针指向同一个inode,系统并不为他重新分配inode。file2指向file,说明file2是软链接,inode号也发生变化,
若删除原始文件file,硬链接继续使用,但软链接就失效了。这点与win下的快捷方式类似。
这里需要强调的是,ls -l 命令输出中的第3个字段内容,此为inode链接数,只要不为0,对于硬链接来说,文件就一直存在,不管你删的是源文件还是之前生成的硬链接。
算力时代,视频云需要怎样的 CPU? 在数据爆发式增长及算法日益精进的大背景下,属于「算力」的时代俨然到来。随着视频成为互联网流量的主角,日趋饱和的音视频场景渗透率、人类对“感官之限”的追
我正在使用 keras 开发深度网络。有一个激活“硬 sigmoid”。它的数学定义是什么? 我知道什么是 Sigmoid。有人在Quora上问了类似的问题:https://www.quora.com
我有一个不寻常的 SQL 问题,我不太确定如何最好地解释,所以请耐心等待。我有三张表,一张是志愿者组织的表,一张是用户的表,一张是用户详细信息的表。 #Table 1# ## Name Preside
我正在尝试使用名为 bigText 的 jquery 插件。一个很棒的用于创建 block 头的插件。如果您想将其与自定义字体一起使用,它会声明您需要 google webfont loader,这样
假设我有一张 table date,personid 1/1/2001 1 1/2/2001 3 1/3/2001 2 1/4/2001 2 1/5/2001 5 1/6/2001 5 1/7/200
下面是我要执行的 SQL。我想避免为此执行多个请求,我很确定这是可能的…… First table : products_categories (category_id, category_infos
我在 android studio 中重新设置了一些提交,并选择了硬重置类型。我失去了一个星期的工作。是否有希望撤销此操作?我正在使用 android studio,它有内置的 GUI 选项来执行所有
当我使用我的交叉工具链编译 C 代码时,链接器会打印出警告页面,说明我的可执行文件使用了硬 float ,但我的 libc 使用了软 float 。有什么区别? 最佳答案 硬浮点使用片上浮点单元。软
linux系统有arm64,arm架构armv8-a。如何知道 debian 是运行硬浮点还是软浮点? 最佳答案 符合 AAPCS64, GNU GCC for armv8 仅提供硬浮点 aarch6
我正在开发 cortex-m3 的微内核。我创建了一个故意导致错误的小型测试应用程序。 现在我不确定如何从故障中返回。我知道堆栈可能需要使用不同函数的地址进行更新。我也知道在某些情况下从错误返回可能是
硬/软 限制是什么意思? 核心文件大小的差异例如: ulimit -Sc 1024 与 ulimit -Hc 1024 我通常在运行二进制文件之前将脚本放入 ulimit -c unlimited。
我想在 Java 中加载一个 MSCAPI keystore 并检查 MY 存储中的可用证书。但是,这些证书的一些 key 驻留在硬件 token 上,并且弹出窗口会在加载期间询问 token 。 有
是的,这是一个有点棘手的问题; 一个数组(没有副本),而不是任何奇数数组。让我解释一下,让我们从这里开始; $a = array ( 'one' => 1, 'two' => 2, 'three' =
我需要在运行 Ubuntu 12.04 的 BeagleBoard xM rev C 上运行一个使用 ftd2xx 的程序。我正在尝试使用提供的 ARM 库 libftd2xx.so here . l
我是一名优秀的程序员,十分优秀!