ln命令
Linux ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
在Linux系统中存在两种链接文件方式:
- 软连接
- 硬链接
如果文件被删除,则软链接文件失去指向,变为不可用
如果文件被删除,由于硬链接文件直接指向内容,因此不受影响
创建硬链接
ln [源文件/目录] [目标软链接]
创建软连接
ln -s [源文件/目录] [目标软链接]
[root@asd test]# mkdir data-directory-test1
[root@asd test]# touch data-file-test2
[root@asd test]# ln -s data-directory-test1/ test1
[root@asd test]# ln -s data-file-test2 test2[root@node02 test]# ll
total 4
drwxr-xr-x 2 root root 4096 Nov 10 16:24 data-directory-test1
-rw-r--r-- 1 root root 0 Nov 10 16:26 data-file-test2
lrwxrwxrwx 1 root root 21 Nov 10 16:27 test1 -> data-directory-test1/
lrwxrwxrwx 1 root root 15 Nov 10 16:28 test2 -> data-file-test2
删除软连接
删除软链接和删除文件/目录操作一样,使用rm命令。但是需要特别注意的是,如果只是删除软链接,不想误删除软链接目录真实文件数据,在rm目录时路径末尾一定不能带"/“。如果带了”/",会将链接到的路径下的文件全部删除。
[root@node02 test]# ll
total 4
drwxr-xr-x 2 root root 4096 Nov 10 16:46 data-directory-test1
lrwxrwxrwx 1 root root 20 Nov 10 16:46 test1-1 -> data-directory-test1
lrwxrwxrwx 1 root root 20 Nov 10 16:46 test1-2 -> data-directory-test1
[root@node02 test]# ll data-directory-test1/
total 0
-rw-r--r-- 1 root root 0 Nov 10 16:47 file1
-rw-r--r-- 1 root root 0 Nov 10 16:47 file2#末尾不带"/"删除,删除软链接,不删除目录下数据
[root@node02 test]# rm -rf test1-1
[root@node02 test]# ll
total 4
drwxr-xr-x 2 root root 4096 Nov 10 16:47 data-directory-test1
lrwxrwxrwx 1 root root 20 Nov 10 16:46 test1-2 -> data-directory-test1
[root@node02 test]# ll data-directory-test1/
total 0
-rw-r--r-- 1 root root 0 Nov 10 16:47 file1
-rw-r--r-- 1 root root 0 Nov 10 16:47 file2#末尾带"/"删除,删除目录下数据,但不删除软链接
[root@node02 test]# rm -rf test1-2/
[root@node02 test]# ll
total 4
drwxr-xr-x 2 root root 4096 Nov 10 16:48 data-directory-test1
lrwxrwxrwx 1 root root 20 Nov 10 16:46 test1-2 -> data-directory-test1
[root@node02 test]# ll data-directory-test1/
total 0
修改软连接
ln -snf [新源文件/目录] [目标软链接]
[root@node02 test]# ll
total 8
drwxr-xr-x 2 root root 4096 Nov 10 16:48 data-directory-test1
drwxr-xr-x 2 root root 4096 Nov 10 16:51 data-directory-test2
lrwxrwxrwx 1 root root 20 Nov 10 16:51 test-link -> data-directory-test1[root@node02 test]# ln -snf data-directory-test2 test-link
[root@node02 test]# ll
total 8
drwxr-xr-x 2 root root 4096 Nov 10 16:52 data-directory-test1
drwxr-xr-x 2 root root 4096 Nov 10 16:52 data-directory-test2
lrwxrwxrwx 1 root root 20 Nov 10 16:52 test-link -> data-directory-test2