@myecho
2019-04-04T09:19:46.000000Z
字数 1114
阅读 811
linux内核笔记
普通的cp应该是直接连数据都拷贝的。
摘要:symlinks(符号链接)引用文件名,hardlinks(硬链接)引用meta-data(元数据),而reflinks(引用链接)则直接引用数据。
linux上这三种不同的的链接文件类型分别指向文件的三个不同组成部分。即文件名(存储在目录中)、元数据(存储在inode中)以及数据块(数据本身)。下面显示了,文件以及各个类型链接文件的关系。
name2 – symlink –> name1 – hardlink –> inode1 – reflink —> data
name3 – hardlink -/ /
name4 – hardlink –> inode2 —reflink -/
闲话不多说,接下来用实际应用解析一下各种链接类型以及它们的使用方法。首先我们创建一个文件。linux中有N中创建命令,例如echo > file ^_^。
一、符号链接
cp –symbolic-link name1 name2
符号链接类似于windows下的快捷方式,一个别名而已。
二、硬链接
cp –link name1 name3
其实linux下所有的普通文件都会硬链接到某个inode。也就是说每多创建一个硬链接就会多一个文件指向同一个inode。其实,这对系统备份是很有作用的^_^。
三、引用链接
cp –reflink name1 name4
XFS上支持reflink特性 https://www.zhihu.com/question/24413471 现在看到ubuntu上的ext4也有这个特性
reflinks are supported by BTRFS and OCFS2 and support transparent copy
on write which is especially useful for snapshotting. Note that since
separate inodes are used, one can have different permissions to access
the same data. Reflinks have the same use as hardlinks, but are more
space efficient and generally handle all subsequent operations on a
file, not just unlink().
软硬链接的原理及使用注意事项:
https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html
http://www.pixelbeat.org/docs/unix_links.html
主要其中hard link不能够跨文件系统使用