link命令linux link命令代码意思

linux 系统中软连接的创建,修改,删除

【软连接】

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、网页空间、营销软件、网站建设、永平网站维护、网站推广。

软连接是linux中一个常用命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接。相当于window系统中的快捷方式

具体用法是:ln -s 源文件 目标文件 或者 ln -s 源目录 目标目录

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在其它的 目录下用ln命令链接(link)就可以,不必重复的占用磁盘空间。

例如:ln -s /home/test1 /data/test1

这样我们就对/home/test1目录创建了软连接 ,在/data/test1中打开看到的就是/home/test1目录下的文件

使用方式

创建软链接

ln -s [源文件或目录] [目标文件或目录]

例:当前路径创建test 引向/var/www/test 文件夹

ln –s /var/www/test ./test (此处建议一定要写绝对路径,最好写到根目录,而且当前目录中药删除test)

例:创建/var/test 引向/var/www/test 文件夹

ln –s /var/www/test /var/test

修改软链接

这将会修改原有的链接地址为新的地址

ln –snf [新的源文件或目录] [目标文件或目录]

例如:

创建一个软链接

ln –s /var/www/test /var/test

修改指向的新路径

ln –snf /var/www/test1 /var/test

删除软链接

和删除普通的文件是一样的,删除都是使用rm来进行操作,

例:删除test

rm –rf test

正确的删除方式(删除软链接,但不删除实际数据)

rm -rf ./test

错误的删除方式

rm -rf ./test/ (这样就会把原来test下,源文件的内容也删除)

建议使用rm test 待显示删除确认提示的时候

页面出现 rm: remove symbolic link test yes等字样 说明你正在操作的是软连接,而不是目录。

一定要注意啊。乱用rm 还删除目录下的全部文件,还循环,后果很严重,要再三确认

ln常用参数:

-f : 链结时先将与 dist 同档名的档案删除

-d : 允许系统管理者硬链结自己的目录

-i : 在删除与 dist 同档名的档案时先进行询问

-n : 在进行软连结时,将 dist 视为一般的档案

-s : 进行软链结(symbolic link)

-v : 在连结之前显示其档名

-b : 将在链结时会被覆写或删除的档案进行备份

-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾

-V METHOD : 指定备份的方式

--help : 显示辅助说明

--version : 显示版本

【硬连接】

硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

link的linux中link函数

头文件

#include unistd.h

函数原型

int link (const char * oldpath,const char * newpath);

说明

link()以参数newpath指定的名称来建立一个新的连接(硬连接)到参数oldpath所指定的已存在文件。如果参数newpath指定的名称为一已存在的文件则不会建立连接。函数在执行成功时则返回0,失败时则返回-1,错误原因存于errno。 link()所建立的硬连接无法跨越不同文件系统,如果需要请改用symlink()。

errno错误代码:

EXDEV 参数oldpath与newpath不是建立在同一文件系统。

EPERM 参数oldpath与newpath所指的文件系统不支持硬连接

EROFS 文件存在于只读文件系统内

EFAULT 参数oldpath或newpath 指针超出可存取内存空间。

ENAMETOLLONG 参数oldpath或newpath太长

ENOMEM 核心内存不足

EEXIST 参数newpath所指的文件名已存在。

EMLINK 参数oldpath所指的文件已达最大连接数目。

ELOOP 参数pathname有过多符号连接问题

ENOSPC 文件系统的剩余空间不足。

EIO I/O 存取错误。

范例

/* 建立/etc/passwd 的硬连接为pass */ #includeunistd.hmain(){link(/etc/passwd,pass);}

Linux软链接和硬链接的区别之ln命令详解

1. 先来了解一下Linux数据是如何保存和查询的

对操作系统来说,数据分为两种:1. 用户数据 (user data) 2.元数据 (metadata)。用户数据就是保存和记录文件的内容。比如一个1M的ppt文件,500K的txt文件。这都属于用户数据。这个文件总有属性吧,比如大小、修改时间、访问时间、创建时间、存储的位置(文件所在的inode)、文件创建者等等信息。这些属性信息或者理解为汇总信息,我们称它为元数据。一句话,用户数据是文件的真实内容,而元数据则是汇总信息。

在 Linux 中,元数据中的 inode 号(inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。

2. 查看文件对应的inode号

134474678 latest.tar.gz

linux查看文件对应的inode号

可以看出latest.tar.gz这个文件, inode 号是134474678,Linux查找读写该文件时,以为个inode号码为标识,而不是文件名。文件名类似于网站域名,仅仅是方便人类记忆。

也就是说, inode134474678有一个硬链接,它就是latest.tar.gz。

3. 根据inode号查找对应的文件

那么,问题来了,系统上有没有第二个文件,它的inode号码也是13447467。

使用find查找一下:

查找结果如下:

/root/latest.tar.gz

/root/latest2.tar.gz

linux根据inode号查找对应的文件

硬盘上真的有第二个文件它的inode号码也是134474678,像这种情况,我们认为inode134474678有两个硬链接。当然,这是本文作者提前准备好的。

为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。

4. 确认硬链接的数量

查看一下文件latest.tar.gz

输出结果如下:

-rwxr-xr-x. 2 root root 8743850 Oct 11 15:00 latest.tar.gz

请留意输出的结果中的数字2,表示该文件存在2个硬链接。

正常情况下,一个inode只有一个链接,如下例

输出结果:

-rw-r--r--. 1 root root 9 Nov 21 11:39 abc.txt

请留意输出的结果中的数字1,表示该文件只存在1个硬链接,默认情况下,文件都是只有一个硬链接的。

5. 查看软链接

再来看一个文件

lrwxrwxrwx. 1 root root 15 Sep 26 15:57 /dev/stdout - /proc/self/fd/1

linux查看软链接

我们发现,/dev/stdout实际上指向另一个文件/proc/self/fd/1,这就是软链接。类似于Windows系统上的快捷方式。

6. 软链接与硬链接的区别

6.1 软链接特点

6.2 硬链接特点

ln链接符原理如下:

Linux ln链接符原理图

7. 创建文件的链接

Linux ln命令是一个非常重要而且常用命令,它用于为文件或者目录创建链接。

7.1 创建软链接

创建一个文件,用于演示软链接。

创建软链接示例:

检查结果:

输出文件属性

lrwxrwxrwx. 1 root root 8 Nov 26 17:48 soft123.txt - soft.txt

linux创建软链接

可以看出这个文件指向当前目录soft.txt,配置成功。7.2 创建硬链接

创建一个文件,用于演示硬链接。

创建硬链接,没有使用选项

检查结果:

输出文件属性:

-rw-r--r--. 2 root root 0 Nov 26 17:47 hard123.txt

linux创建硬链接

留意以上输出数字2,表明该文件有2个副本。

8. 总结

ln命令可以创建文件的副本,也可以创建软链接。

linux创建连接命令ln -s软链接

这是linux中一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln

-s

源文件

目标文件。

我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的

目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln

-s

/bin/less

/usr/local/bin/less-s

是代号(symbolic)的意思。

里有两点要注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;第二,ln的链接又软链接

和硬链接两种,软链接就是ln

-s

**

**,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln

**

**,没有参数-s,

它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls

-l命令去察看,就可以看到显示的link的路径了。摘自

ComeOnTom的专栏


文章标题:link命令linux link命令代码意思
链接地址:http://ybzwz.com/article/hgcchg.html