硬链接就是同一个文件使用了多个别名(他们有共同的inode编号)。
硬链接可由命令link或in创建,如
link existing-file new-link
ln existing-file new-link
由于硬链接有着相同的inode编号,因此,删除一个硬链接文件并不影响其他有相同inode号的文件。
硬链接不能对目录进行创建,只可对文件进行创建
硬链接只有在同一文件系统中的文件之间才能建立
ls -l后中的1,2代表文件的硬链接数目
➜ ls -l
total 120
-rw-rw-r-- 1 cherry staff 6517 9 8 2015 BPMDetect.h
-rw-rw-r-- 2 cherry staff 7507 9 8 2015 FIFOSampleBuffer.h
ls -i 显示文件对应的inode编号,可以看到Makefile.am和Makefile.am.link的文件inode编号相同。
➜ ls -i
3739963 BPMDetect.h 3739962 FIFOSamplePipe.h 3739961 Makefile.am.link 3739960 SoundTouch.h
3739957 FIFOSampleBuffer.h 3739961 Makefile.am 3739959 STTypes.h 3739958 soundtouch_config.h.in
软链接(soft link)(也叫符号链接(symbolic link))与硬链接不同,文件用户数据块中存放的内容是另一文件路径名的指向。软链接就是一个普通文件,只是数据块内容有点特殊。
用户对符号文件进行读与写操作的时候,系统会自动把该操作转换为对原文件的操作,但是删除符号链接文件时,系统仅仅删除符号链接,而不删除源文件本身。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软链接就变成了死链接。
符号链接的一个很大的优势是它可以指向不存在的文件。此优势使得可以为某个间断性被删除和创建的文件建立链接。符号链接可保持对已删除文件的指向,即使已经创建了一个新文件,而符号链接总是指向新创建的文件,而不干涉旧文件的删除。例如:符号链接可以指向一个需要在源代码控制系统下进行登记和检验的文件,或者指向一个每运行一次make由c编译器重新创建的.o文件,或者指向一个周期性存档的日志文件。
软链接可对文件或目录创建。
ln -s old.file soft.link
ln -s old.dir soft.link.dir
加-s选项代表创建的是软链接。
ls -l 软链接的属性:
➜ include ln -s Makefile.am m
➜ include ls
m Makefile.am
➜ include ls -l
total 128
lrwxr-xr-x 1 cherry staff 11 4 12 13:46 m -> Makefile.am
-rw-rw-r-- 1 cherry staff 1202 9 8 2015 Makefile.am
cp与ln
cp创建了文件的副本,ln命令没有创建文件的副本,修改其中一个文件的内容在其他链接文件中均可看到。