linux 软链接 硬链接

发布时间 2023-07-10 11:45:40作者: 小黑狐狸1001


对比

下面是一个展示Linux中软链接和硬链接之间区别的表格:(From chatGPT)

软链接(Symbolic Link) 硬链接(Hard Link)
创建方式 ln -s 源文件 目标文件 ln 源文件 目标文件
文件属性 拥有自己的inode和文件权限 共享相同的inode和文件权限
大小 独立的文件,大小仅占用几个字节 共享相同的实际磁盘空间
跨文件系统 可以跨文件系统创建软链接 只能在同一文件系统内创建硬链接
对目录的链接 可以链接到目录 不能链接到目录
更新影响 当源文件被删除或移动时,软链接失效,称为“死链接” 源文件和所有硬链接之间是共享的,其中一个被删除并不影响其他链接
链接数量 不会增加源文件的链接数量 增加源文件的链接数量
跨卷移动 可以通过软链接轻松地将文件或目录移动到其他卷中 无法通过硬链接轻松地将文件或目录移动到其他卷中

这个表格展示了软链接和硬链接之间的一些关键区别,包括创建方式、文件属性、大小、跨文件系统、对目录的链接、更新影响、链接数量和跨卷移动等方面的差异。

拷贝

要拷贝软链接的源文件,可以使用cp命令的-L选项。该选项告诉cp命令在拷贝软链接时追踪链接的目标文件并拷贝目标文件本身,而不是拷贝软链接。

以下是使用cp -L命令来拷贝软链接的源文件的示例:

cp -L 软链接的源文件 目标目录/目标文件名

请将上述命令中的软链接的源文件替换为你要拷贝的软链接文件的路径,将目标目录/目标文件名替换为你希望将源文件拷贝到的目标目录和文件名。

这样,cp -L命令将会复制软链接的源文件到指定的目标位置,而不是复制软链接本身。

删除

软链接又叫符号链接,这个文件包含了另一个文件的路径名。其实就是Windows中的快捷方式。

通过软链接无法直接删除软链接的源文件。软链接只是一个指向源文件的引用,删除软链接并不会影响源文件本身。

如果你想要删除软链接的源文件,你需要直接删除源文件。删除源文件后,软链接将指向一个不存在的文件,也就是一个"死链接"。如果你试图访问这个软链接,它将不再指向有效的文件。

硬链接:多个文件名指向同一索引节点

作用:允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。

其实一个硬链接就是一个文件的一个别名,只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

防止误删除

硬链接

如果你想要防止误删某个路径下所有的文件,使用硬链接可能是更安全的选择。由于硬链接与源文件共享相同的inode和文件权限,删除一个硬链接并不会影响其他硬链接或源文件本身。

当你使用硬链接时,即使删除了一个硬链接,源文件仍然存在于磁盘上,只有当所有的硬链接都被删除时,才会真正删除源文件。这可以提供一层保护,防止误删所有链接指向的文件。

请注意,硬链接只能在同一文件系统内创建,不能链接到目录。如果你需要跨文件系统或链接目录,软链接可能是更合适的选择,但需要更加谨慎地避免误删源文件。

无论你选择使用硬链接还是软链接,请在操作之前进行必要的备份,并小心操作以避免意外删除或修改文件。

软链接

要实现防止误删除的最佳实践,你可以考虑使用符号链接(软链接)与权限设置结合的方式。以下是一个可能的实现方法:

  1. 创建一个专门用于存放软链接的目录,例如protected_links
  2. 将需要进行保护的文件或目录复制到protected_links目录下。
  3. 在原始路径下创建软链接,指向protected_links目录中对应的文件或目录。

这样,即使在原始路径下删除软链接,实际的文件或目录仍然存在于protected_links目录中,不会被误删除。

以下是一个示例操作步骤:

  1. 假设需要保护的文件为/path/to/file
  2. 创建protected_links目录:mkdir protected_links
  3. /path/to/file复制到protected_links目录:cp -r /path/to/file protected_links/
  4. 在原始路径下创建软链接:ln -s protected_links/file /path/to/file

现在,如果你在原始路径下误删除软链接/path/to/file,实际的文件仍然存在于protected_links目录下,可以防止误删除。

请注意,这种方法仅适用于单个文件或目录的保护。如果有多个文件或目录需要保护,你需要在protected_links目录下创建相应的结构,并创建软链接指向对应的文件或目录。

另外,对于任何重要的文件和目录,始终建议定期进行备份,并采取适当的安全措施,以防止数据丢失或误删除。

参考

https://blog.51cto.com/u_10566176/1713275