linuxlink文件
① linux命令:搜索系统中的所有链接文件,并复制到主目录中的link目录中。
find
/
-type
l
-print
>>out.txt这是查看所有的链接文件的,运行上面的命令后,可以查看#cat
out.txt,就知道那些是链接文件了,也可以用#ls
-l
加out.txt链接名来测试一下,至于如何复制到主目录中的link目录中,我就不太清楚了,不过你可以试试这个#find
/
-type
l
-print
-ok
cp
{}
\;
/link
我回去试试看,再说!!
② 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 */ #include<unistd.h>main(){link(/etc/passwd,pass);}
③ linux怎么将一个文件夹链接到另一个文件夹上
ln -s bbb的文件目录 ccc的文件目录
In的功能是为某一个文件在另外一个位置建立一个同步的链接,命令最常用的参数是-s,具体用法是:
ln -s 源文件 目标文件
-s 是 symbolic的意思。
ln的链接有软链接和硬链接两种。
软链接就是ln -s ** **,只会在选定的位置上生成一个文件的镜像,不会占用磁盘空间。
硬链接ln
** **,没有参数-s,在选定的位置上生成一个和源文件大小相同的文件。
无论是软链接还是硬链接,文件都保持同步变化。软链接是可以跨分区的,但是硬链接只能在同一分区内。
(3)linuxlink文件扩展阅读:
1、目录不能建立硬链接,但可以建立软链接。
ln-s
test_chk test_chk_ln
2、正确的删除方式(删除软链接,但不删除实际数据):
rm -rf ./test_chk_ln
3、错误的删除方式:
rm -rf ./test_chk_ln/ (这样就会把原来test_chk下的内容删除)
4、用ls查看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件。用ls
-l命令去查看,就可以看到显示的link的路径。
④ linux的rm命令详解
Linux rm,英文全拼:remove,该命令用于删除一个文件或者目录。
Linux
rm命令是一个非常强大的删除命令,它可以永久性地删除文件系统中指定的文件或目录。在使用rm命令删除文件或目录时,系统不会产生任何提示信息。
语法
rm [options] name...
参数
-i 删除前逐一询问确认
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认
-r 将目录及以下之档案亦逐一删除
注意:rm命令是一个具有破坏性的命令,因为rm命令会永久性删除文件或目录,这就意味着,如果没有对文件或目录进行备份,一旦使用rm命令将其删除,将无法恢复。因此,尤其在使用rm命令删除目录时,要非常非常谨慎。
⑤ linux 链接文件有几种那些用户能建立
连接文件分两种:
1、硬连接:ln file link-file
2、软连接(符号连接):ln -s file link-file
⑥ Linux里面怎么查看link文件的全路径
传给函数的路径是/root/file,如果这是函数的第一个参数,那么函数中可以用 $1 获龋 得到文件名file1和file2后,echo "$1/file1" 就输出/root/file/file1,echo "$1/file2" 输出/root/file/file2。
⑦ linux ln 连接命令怎么用
1、首先有一个目录dir, 执行ln -s dir dir_link 创建目录的软链接。
⑧ linux下,如何自动link目录
#!/bin/bash
#new一开始就是个symboliclink,不能是空目录
#这个脚本在“同文件夹”下执行,可以放在后台执行
#符号链接名:new
target=new
whiletrue
do
#每秒钟检查一次
sleep1
#如果符号链接不存在,就什么都不做
[!-h$target]&&continue
#找一个最新目录
newdir=$(find.-typed-newer$target|tail-1)
#如果找到,更新符号链接
[-d"$newdir"]&&ln-nsf$newdir$target
done
⑨ LINUX 怎么删除 文件link
每一个文件,都可以通过一个struct stat的结构体来获得文件信息,其中一个成员st_nlink代表文件的链接数。
当通过shell的touch命令或者在程序中open一个带有O_CREAT的不存在的文件时,文件的链接数为1。
通常open一个已存在的文件不会影响文件的链接数。open的作用只是使调用进程与文件之间建立一种访问关系,即open之后返回fd,调用进程可以通过fd来read 、write 、 ftruncate等等一系列对文件的操作。
close()就是消除这种调用进程与文件之间的访问关系。自然,不会影响文件的链接数。在调用close时,内核会检查打开该文件的进程数,如果此数为0,进一步检查文件的链接数,如果这个数也为0,那么就删除文件内容。
link函数创建一个新目录项,并且增加一个链接数。
unlink函数删除目录项,并且减少一个链接数。如果链接数达到0并且没有任何进程打开该文件,该文件内容才被真正删除。如果在unlilnk之前没有close,那么依旧可以访问文件内容。
综上所诉,真正影响链接数的操作是link、unlink以及open的创建。
删除文件内容的真正含义是文件的链接数为0,而这个操作的本质完成者是unlink。close能够实施删除文件内容的操作,必定是因为在close之前有一个unlink操作。
举个例子简单说明:通过shell touch test.txt
1、stat("test.txt",&buf);
printf("1.link=%d\n",buf.st_nlink);//未打开文件之前测试链接数
2、fd=open("test.txt",O_RDONLY);//打开已存在文件test.txt
stat("test.txt",&buf);
printf("2.link=%d\n",buf.st_nlink);//测试链接数
3、close(fd);//关闭文件test.txt
stat("test.txt",&buf);
printf("3.link=%d\n",buf.st_nlink);//测试链接数
4、link("test.txt","test2.txt");//创建硬链接test2.txt
stat("test.txt",&buf);
printf("4.link=%d\n",buf.st_nlink);//测试链接数
5、unlink("test2.txt");//删除test2.txt
stat("test.txt",&buf);
printf("5.link=%d\n",buf.st_nlink);//测试链接数
6、重复步骤2 //重新打开test.txt
7、unlink("test.txt");//删除test.txt
fstat(fd,&buf);
printf("7.link=%d\n",buf.st_nlink);//测试链接数
8、close(fd);//此步骤可以不显示写出,因为进程结束时,打开的文件自动被关闭。
顺次执行以上8个步骤,结果如下:
1.link=1
2.link=1 //open不影响链接数
3.link=1 //close不影响链接数
4.link=2 //link之后链接数加1
5.link=1 //unlink后链接数减1
2.link=1 //重新打开 链接数不变
7.link=0 //unlink之后再减1,此处我们改用fstat函数而非stat,因为unlilnk已经删除文件名,所以不可以通过 文件名访问,但是fd仍然是打开着的,文件内容还没有被真正删除,依旧可以使用fd获得文件信息。
执行步骤8,文件内容被删除。。。。
⑩ linux系统中链接文件什么意思
链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。
Linux中包括两种链接:硬链接(Hard
Link)和软链接(Soft
Link),软链接又称为符号链接(Symbolic
link)。
我们首先来了解一下几个名词:
索引节点(inode)
要了解链接,我们首先得了解一个概念,叫索引节点(inode)。在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号,我们可以将inode简单理解成一个指针,它永远指向本文件的具体存储位置。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。系统是通过索引节点(而不是文件名)来定位每一个文件。
硬链接(Hard
Link)
硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。可以用:ln命令来建立硬链接。
引用
ln
[options]
existingfile
newfile
ln
[options]
existingfile-list
directory
用法:
第一种为”existingfile”创建硬链接,文件名为”newfile”。
第二种在”directory”目录中,为”
existingfile-list”中包含的所有文件创建一个同名的硬链接。
常用可选[options]:-f
无论”newfile”存在与否,都创建链接。-n
如果”newfile”已存在,就不创建链接。
软链接(Soft
Link)
软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。和win下的快捷方式差不多。
可以用:ln
-s
命令来建立软链接。
引用
ln
-s
existingfile
newfile
ln
-s
existingfile-list
directory
下面我们用一个实例来说明硬链接和软链接。
现在目录下有两个文件,一个名为file1,一个名为file2。
引用
$
ls
–il
1052671
-rw-r--r--
1
Leanx
Leanx
0
2010-03-29
13:46
file1
1052670
-rw-r--r--
1
Leanx
Leanx
0
2007-03-29
13:46
file2
首先先做一个file1的硬链接。
引用
$
ln
file1
file1hard
$ls
–il
1052671
-rw-r--r--
2
Leanx
Leanx
0
2010-03-29
13:46
file1
1052670
-rw-r--r--
1
Leanx
Leanx
0
2010-03-29
13:46
file12
1052671
-rw-r--r--
2
Leanx
Leanx
0
2010-03-29
13:46
file1hard
这里我们注意在创建链接前,file1显示的链接数目为1,创建链接后
1.file1和file1hard的链接数目都变为2。
2.file1和file1的inode号是一样的,都是1052671。
3.file1和file1hard显示的文件大小也是一样,都是0B。
可见进行了ln命令的操作结果:file1和file1hard是同一个文件的两个名字,它们具有同样的索引节点号和文件属性,建立文件file1的硬链接,就是为
file1的文件索引节点在当前目录上建立一个新指针。你可以删除其中任何一个,如rm
file1,每次只会删除一个指针,链接数同时减一,只有将所有指向文件内容的指针,也即链接数减为0时,内核才会把文件内容从磁盘上删除。
尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一些不足之处:
1.不允许给目录创建硬链接。
2.不可以在不同文件系统的文件间建立链接。
接着我们做一个指向file2的软链接,软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
引用
$
ln
-s
file2
file2soft
$
ls
–il
总用量
0
1052671
-rw-r--r--
2
Leanx
Leanx
0
2010-03-29
13:34
file1
1052670
-rw-r--r--
1
Leanx
Leanx
0
2010-03-29
13:35
file2
1053313
lrwxrwxrwx
1
Leanx
Leanx
5
2010-03-29
13:45
file2soft
->
file2
1052671
-rw-r--r--
2
Leanx
Leanx
0
2010-03-29
13:34
file1hard
从上面链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是完全不同的。
区别:
1.硬链接原文件/链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件;
2.在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;
3.链接数目是不一样的,软链接的链接数目不会增加;
4.文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的。而这里软链接显示的大小与原文件就不同了,file2大小是0B,而file2soft是5B。
总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。
当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。