Linux文件/文件夹建立软硬链接

建立软连接:

sudo ln -s /home/spike/Downloads/redis/src/redis-server /usr/local/bin/redis-server        
// 源文件  链接到   目标文件   ,这两个文件目录都必须是全路径,不能包含相对路径

建立硬链接:

sudo ln /home/spike/Downloads/redis/src/redis-server /usr/local/bin/redis-server        
// 源文件  链接到   目标文件   ,这两个文件目录都必须是全路径,不能包含相对路径

参数用法:

	ln [选项]… [-T]源文件 链接名 (第一种格式)
	或:ln [选项]… 源文件 (第二种格式)
	或:ln [选项]… 源文件 … 目录 (第三种格式)
	或:ln [选项]… -t 源文件夹 链接名… (第四种格式)
	 	在第一种格式中,创建指定名称的链接且指向指定的源文件。
	  在第二种格式中,在当前目录创建指向源文件的链接。
	  在第三、四种格式中,在指定目录中创建指向源文件的链接。
	  默认创建硬链接,当使用–symbolic 时创建符号链接。
	  当创建硬链接时文件必须在同一个文件系统,并且不能对目录进行硬链接。符号链接		

可以指向任意的位置,选项说明:

–backup[=CONTROL] 为每个已存在的目标文件创建备份文件
-b 类似–backup,但不接受任何参数
-d, -F, –directory 创建指向目录的硬链接(只适用于超级用户,而且有不可预知的风险,慎用哦)
-f, –force 强行删除任何已存在的目标文件
-n, –no-dereference 如果目的地是一个已存在的链接至某目录的符号链接,会将该符号链接当作普通文件处理,先将该已存在的链接备份或删除
-i, –interactive 询问是否删除目的地文件
-s, –symbolic 创建符号链接而不是硬链接
-t, –target-directory=目录 在指定目录中创建链接
-T, –no-target-directory 将链接名当作普通文件(在对目录进行符号链接时要用到此选项)

举例:

1.对某个文件创建一个连接
  ln -s /tmp/abc.txt ~/
  此命令表示在家目录下创建与源文件同名的链接到/tmp/abc.txt符号连接
  ln -s /tmp/abc.txt ~/abc
  此命令表示在家目录下建立链接到/tmp/abc.txt 并且名字为abc的符号连接(前提是在家目录下没有abc这个目录)

2.对某个目录创建符号连接
  ln -sT /tmp ~/abc
  此命令表示在家目录下创建一个链接到/tmp目录的名字为abc的符号连接。
  ln -sT /tmp ~/
  此命令表示在家目录下创建一个与源文件夹同名的符号连接
 
3.对某个文件创建一个硬连接
  ln /tmp/abc.txt ~/
  此命令表示在家目录下创建与源文件同名的链接到/tmp/abc.txt硬链接
  ln /tmp/abc.txt ~/abc
  此命令表示在家目录下建立链接到/tmp/abc.txt 并且名字为abc的硬链接(前提是在家目录下没有abc这个目录)

附注:硬链接和符号链接

简而言之,符号链接相当于windows中的快捷方式,硬链接相当于一个灾备系统,数据存放在两处,与复制不同的是两处之间存在同步机制,一处数据的改变会实时同步到另一处,另外,一处数据如果被删除了,不会影响到另一处的数据.

下面是详细的介绍:
	硬连接指向的是节点(inode),是已存在文件的另一个名字,修改其中一个,与其连接的文件同时被修改;对硬链接文件进行读写和删除操作时候,效果和符号链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了原有的内容。这时,系统就“忘记”了它曾经是硬链接文件,而把他当成一个普通文件。

硬链接文件有两个限制:
	1、不允许给目录创建硬链接;
	2、只有在同一文件系统中的文件之间才能创建链接。

你可能感兴趣的:(Linux,linux,服务器,java)