Hard link - 把链接文件与目标文件的inode关联。inode只在一个文件系统内可见,所以hard link不能跨文件系统。
Symbolic link - 把链接文件与目标文件的文件名关联。symblic link可以跨文件系统。
#mount
/dev/vx/dsk/sfsdg/fs1 on /vx/fs1
/dev/vx/dsk/sfsdg/fs2 on /vx/fs2
# ll -ai /vx/fs1
16384 -rw-r--r-- 2 root root 0 Aug 12 17:05 file1
# ll -ai /vx/fs2
4 -rw-r--r-- 1 root root 0 Aug 12 17:06 file2
1. 创建硬链接时,目标文件和链接文件必须在同一个文件系统中。两个文件指向同一个inode。2表示inode 16384与两个文件名关联。
# ln /vx/fs1/file1 /vx/fs1/hard_link
# ll -ai
16384 -rw-r--r-- 2 root root 0 Aug 12 17:05 file1
16384 -rw-r--r-- 2 root root 0 Aug 12 17:05 hard_link
2. 跨文件系统,不能创建硬链接。
# ln /vx/fs2/file2 /vx/fs1/hard_linkfs2
ln: creating hard link `/vx/fs1/hard_linkfs2' => `/vx/fs2/file2': Invalid cross-device link
3. 创建符号链接时,目标文件和链接文件可以在不同的文件系统中。两个文件指向不同的inode。
# ln -s /vx/fs2/file2 /vx/fs1/soft_link
# ll -ai /vx/fs2
4 -rw-r--r-- 1 root root 0 Aug 12 17:06 file2
# ll -ai
16384 -rw-r--r-- 2 root root 0 Aug 12 17:05 file1
16385 lrwxrwxrwx 1 root root 13 Aug 12 17:15 soft_link -> /vx/fs2/file2
4. 对于硬链接文件,删除目标文件以后,inode还会存在。删除file1以后,inode 16384只与一个文件名关联。
# ll -ai
16384 -rw-r--r-- 2 root root 0 Aug 12 17:05 file1
16384 -rw-r--r-- 2 root root 0 Aug 12 17:05 hard_link
# rm file1
# ll -ai
16384 -rw-r--r-- 1 root root 0 Aug 12 17:05 hard_link