精华内容
下载资源
问答
  • 2018-03-21 23:42:49

    引言:上期回顾(想要学习的童鞋可以点击看看)

        前几章我们所说的命令都是针对文件和文件夹,和一些常用操作。今天我们来学习特殊一点的文件"链接文件",这一章节会告诉大家什么是链接文件,以及链接文件有几种类型,有什么区别,在什么地方使用到。链接文件之前在第一章就有提到过,查看一个文件的详细信息会有一个"drwxr-xr-x"之类信息,第1个字母为"l"的为链接文件,这个是链接文件的特点之一,赶紧来学习链接文件吧!

    一、链接文件分类

        在Linux中链接文件分为"软链接文件"、"硬链接文件"

        那怎么创建链接文件呢?使用ln命令来创建链接文件,如果加上-s的选项则表示创建软链接文件,不加则创建硬链接文件。ln原英文含义是link,链接的意思很好理解。在这里我在/tmp目录下创建了两个链接文件,issue.bost为软链接,issue.herd为硬链接文件。大家可以创建试试,然后显示出详细信息查看有什么区别。

        

    更多相关内容
  • Linux下的链接文件详解

    千次阅读 2021-05-09 08:37:29
    几个基本概念Linux下的链接文件可以分为硬链接(hard link)与软链接(soft link)。要理解它们,必须先要理解几个基本概念。inode文件除了纯数据本身之外,还必须包含有对这些纯数据的管理信息,如文件名、访问权限、...

    几个基本概念

    Linux下的链接文件可以分为硬链接(hard link)与软链接(soft link)。要理解它们,必须先要理解几个基本概念。

    inode

    文件除了纯数据本身之外,还必须包含有对这些纯数据的管理信息,如文件名、访问权限、文件的属主以及该文件的数据所对应的磁盘块等等,这些管理信息称之为元数据(mata data),保存在文件的inode节点之中。我们可以通过stat命令查看一个文件的inode信息:

    $ stat /etc/passwd

    File: "/etc/passwd"

    Size: 936 Blocks: 8 IO Block: 4096 普通文件

    Device: fd00h/64768d Inode: 137143 Links: 1

    Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

    Access: 2016-08-05 23:01:39.905999995 +0800

    Modify: 2016-07-15 16:36:12.802999997 +0800

    Change: 2016-07-15 16:36:12.809000014 +0800

    $ ls -l /etc/passwd

    -rw-r--r-- 1 root root 936 7月 15 16:36 /etc/passwd

    这里我们查看了/etc/passwd文件的元数据信息。ls -l命令也会列出一些文件的元数据信息(由左至右分别为:权限、硬链接数、属主、属组、文件大小、最近更改时间、文件名),但相比之下,stat命令输出的信息更加完整。我们注意到,stat输出的信息中,文件有三个时间戳:最近访问、最近更改和最近改动,对应于英文分别为Access、Modify和Change。 Access time比较好理解,当每次访问这个文件的数据(注意,不是元数据),这个时间就会更新。比如用cat或者more命令读取文件内容时,会更新access time,而用ls或者stat命令,由于只是访问了文件的inode,所以不会更新access time值。Modify time是文件数据最后一次被修改时间,比如用vim编辑文件后保存文件,此时就会更新该文件modify time。Change time是文件元数据(即inode)最后一次被修改的时间,比如用chown命令修改文件的属主,此时就会更新文件的change time。

    其实最初当我们创建分区并用mkfs.ext4等命令创建文系统的时候,就已经在文件系统的固定区域保留了inode节点区。我们可以通过df -i命令查看某文件系统inode节点区域的大小及使用情况:

    # df -ih /dev/mapper/pdc_bcfaffjfaj2

    文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点

    /dev/mapper/pdc_bcfaffjfaj2 18M 127K 18M 1% /home

    可以看到,在笔者的Linux Mint17.3系统中,分区/dev/mapper/pdc_bcfaffjfaj2共保留了18M的inode区域,这个区域目前已经使用了127K。有没有可能出现某分区尚有空间而inode区域已用完的情况呢?有的。当小文件特别多的时候就会出现这种情况!这个时候即使文件系统还有空间可用,但我们仍然无法继续在这个文件系统内创建新的文件了。那假如在我的应用环境中真的小文件非常多该怎么办?其实我们在建立ext4文件系统时候是可以手动指定inode区域所占的比例大小的,可以man mkfs.ext4查看相关的参数和选项,这里不再详述。

    刚才用stat查看文件的inode信息时,我们看到输出的信息中有一行Inode: 137143,这个是/etc/passwd文件的inode号。每个inode都有一个全文件系统唯一的inode号,操作系统内核正是通过inode号而非文件名来识别不同的文件。文件名仅仅是为了方便用户使用而已,内核是通过文件名找到inode,然后通过inode访问实际文件数据的。有没有可能有多个文件名对应于同一个inode呢?有的,这样就产生了所谓硬链接文件。

    dentry

    虽然每个文件对应了唯一的inode号,但inode号是杂乱而毫无意义的,不方面用户记忆和使用,我们希望对每个文件取一个有意义的文件名。现代文件系统提供的一个基本功能是按名存取,所以我们还需要建立文件名到inode号的对应,这就引出了目录项(directory entry即dentry)的概念。在Linux文件系统中有一类特殊的文件称为“目录”,目录就保存了该目录下所有文件的文件名到inode号的对应关系,这里的每个对应关系就称为一个dentry。而Linux把所有的文件和目录构建成了一个倒立的树状结构,这样,我们只要确定了根目录的inode号,就可以对整个文件系统进行按名存取了。

    hard link

    硬链接的实质是现有文件在目录树中的另一个入口。也就是说,硬链接与原文件是分居于不同或相同目录下的的dentry而已,它们指向同一个inode,对应于相同的磁盘数据块(data block),具有相同的访问权限、属性等。简而言之,硬链接其实就是给现有的文件起了一个别名。如果把文件系统比喻成一本书的话,硬链接就是在书本的目录中,有两个目录项指向了同一页码的同一章节。

    硬链接的优点是几乎不占磁盘空间(因为仅仅是增加了一个目录项而已),但是这一优点相对于软链接其实并不明显(因为软链接占用的磁盘空间也很少)。另外,硬链接有以下一些局限:1、不能跨文件系统创建硬链接。原因很简单,inode号只有在一个文件系统内才能保证是唯一的,如果跨越文件系统则inode号就可能重复。2、不能对目录创建硬链接。原因我在稍后解释。正因为硬链接的这些局限,加之软链接更加易于管理,所以软链接更加常用。这一点在本文中举的例子也可以看出,几乎都是软链接的例子。

    soft link

    软链接又称为符号链接(symbolic link),简写为“symlink”。与硬链接仅仅是一个目录项不同,软连接本身也是文件,不过这个文件的内容是另一个文件名的指针。当Linux访问软链接时,它会循着指针找出含有实际数据的目标文件。我们还以书本来打比方,软链接是书本里的某一章节,不过这一章节什么内容都没有,只有一行字“转某某章某某页”。

    软链接可以跨越文件系统指向另一个分区的文件,甚至可以跨越主机指向远程主机的一个文件,也可以指向目录。在ls -l输出的文件列表中,第一个字段有“l”字样者表示该文件是符号链接。

    $ ls -l

    total 0

    lrwxrwxrwx 1 wjm wjm 11 Aug 10 00:51 hh -> /etc/passwd

    我们看到,软链接的权限为777,即所有权限都是开放的,实际上你也无法使用chmod命令修改其权限,但是实际文件的保护权限仍然起作用。

    另外,符号链接可以指向不存在的文件(可能是原来指向的文件被删除了,或者指向的文件系统尚未挂载,或者最初建立该符号链接的时候就指向了一个不存在的文件等等),我们称这种状态为“断裂”(broken)。与之相对的是,硬链接是不能指向一个不存在的文件的。

    使用链接有何好处?

    我们在此总结使用链接文件的以下几个的好处:

    保持软件的兼容性

    例如,在RHEL6中我们看下面这条命令的输出:

    $ ls -l /bin/sh

    lrwxrwxrwx. 1 root root 4 Jul 15 11:41 /bin/sh -> bash

    我们看到,/bin/sh文件其实是一个指向/bin/bash的符号链接。为什么要这样设计?因为几乎所有的shell script的第一行都是下面这样:

    #!/bin/sh

    “#!”符号表示该行指定该脚本所用的解释器。#!/bin/sh表示使用Bourne Shell作为解释器,这是一个早期的Shell。在现代的Linux发行版中通常采用Bourne Again Shell即bash,bash是对sh的改进和增强,而早期的Bourne Shell在系统的中根本不存在。为了能够顺利的运行脚本而不必修改shell script,我们只需要创建一个软链接/bin/sh让其指向/bin/bash。如此一来,就可以让bash来解释原本针对Bourne Shell编写的脚本了。

    方便软件的使用

    比如我们安装了一个大型软件Matlab,它可能默认安装在/usr/opt/Matlab目录下,它的可执行文件位置在/usr/opt/Matlab/bin目录下,除非你在这个路径加入到PATH环境变量里,否则每次运行这个软件你都需要输入一长串的路径很不方便。你还可以这样做:

    $ ln -s /usr/opt/Matlab/bin/matlab ~/bin/matlab

    通过在你的~/bin下创建一个符号链接(~/bin系统默认已经包含在PATH环境变量里的),今后在命令行下无需输入完整路径,只需输入matlab即可。

    维持旧的操作习惯

    比如在SuSE中,启动脚本的位置是放在/etc/init.d目录下,而在RedHat的发行版中,是放在/etc/init.d/rc.d目录下。为了避免因为从SuSE转换到RedHat系统而导致管理员找不到位置的情况,我们可以创建一个符号链接/etc/init.d使其指向/etc/init.d/rc.d即可。事实上,RedHat发行版也正是这样做的:

    $ ls -ld /etc/init.d/

    lrwxrwxrwx. 1 root root 11 Jul 15 11:41 init.d -> rc.d/init.d

    方便系统管理最让人印象深刻的一个例子应该是/etc/rc.d/rcX.d目录下的符号链接了(X为0~7数字)。

    $ ls -l /etc/rc.d/

    total 60

    drwxr-xr-x. 2 root root 4096 Jul 15 16:36 init.d

    -rwxr-xr-x. 1 root root 2617 Nov 23 2013 rc

    drwxr-xr-x. 2 root root 4096 Jul 15 16:36 rc0.d

    drwxr-xr-x. 2 root root 4096 Jul 15 16:36 rc1.d

    drwxr-xr-x. 2 root root 4096 Jul 15 16:36 rc2.d

    drwxr-xr-x. 2 root root 4096 Jul 15 16:36 rc3.d

    drwxr-xr-x. 2 root root 4096 Jul 15 16:36 rc4.d

    drwxr-xr-x. 2 root root 4096 Jul 15 16:36 rc5.d

    drwxr-xr-x. 2 root root 4096 Jul 15 16:36 rc6.d

    -rwxr-xr-x. 1 root root 220 Nov 23 2013 rc.local

    -rwxr-xr-x. 1 root root 19688 Nov 23 2013 rc.sysinit

    在init.d/目录下有许多用于启动、停止系统服务的脚本,如sshd、crond等。这些脚本可以接受一个参数,代表要启动(start)或停止(stop)服务。为了决定在某个运行级别运行哪些脚本及传递给这些脚本哪些参数,RedHat设计了一个额外的目录机制,即rc0.d到rc6.d的7个目录,每个目录对应一个运行级别。如果在某运行级别下需要启动某服务或者需要停止某服务,就在对应的rcX.d目录下建立一个符号链接,指向init.d/目录下的脚本。如:

    $ ls -l /etc/rc.d/rc3.d

    total 0

    lrwxrwxrwx. 1 root root 19 Jul 15 11:42 K10saslauthd -> ../init.d/saslauthd

    lrwxrwxrwx. 1 root root 20 Jul 15 11:42 K50netconsole -> ../init.d/netconsole

    lrwxrwxrwx. 1 root root 21 Jul 15 11:42 K87restorecond -> ../init.d/restorecond

    lrwxrwxrwx. 1 root root 15 Jul 15 11:42 K89rdisc -> ../init.d/rdisc

    lrwxrwxrwx. 1 root root 22 Jul 15 11:44 S02lvm2-monitor -> ../init.d/lvm2-monitor

    lrwxrwxrwx. 1 root root 19 Jul 15 11:42 S08ip6tables -> ../init.d/ip6tables

    lrwxrwxrwx. 1 root root 18 Jul 15 11:42 S08iptables -> ../init.d/iptables

    lrwxrwxrwx. 1 root root 17 Jul 15 11:42 S10network -> ../init.d/network

    lrwxrwxrwx. 1 root root 16 Jul 15 11:44 S11auditd -> ../init.d/auditd

    lrwxrwxrwx. 1 root root 17 Jul 15 11:42 S12rsyslog -> ../init.d/rsyslog

    ... ....

    这里列出了在运行级3下需要运行的服务脚本及对应的参数,其中符号链接的第一个字母S和K分别表示传递参数start和stop,后面跟着的两位数字表示脚本运行的先后顺序。这样一来,只要在rcX.d目录下新增或者移除链接,就可以控制各个runlevel需要运行哪些服务脚本;而如果需要修改某个服务脚本,只需要编辑init.d/目录下的文件(“本尊”),而它可以影响所有rcX.d目录下的软链接(“分身”)。这是多么简洁而巧妙的设计!

    ln命令

    我们用ln命令创建硬链接或者软链接。其语法为:

    ln [options] file link

    此命令的第一种形式会创建一个指向file的新的链接,其中options选项,我们只记住一个就行,-s表示创建软链接,而默认会创建硬链接。例如:

    # ln -s /usr/src/linux-2.6.32 /usr/src/linux

    这里,我们创建了一个符号链接/usr/src/linux,指向真实的Linux源代码目录/usr/src/linux-2.6.32。

    我们再举一个例子,演示一下软链接与硬链接的区别,我们创建一个myfile文件,然后再创建一个指向该文件的软链接myslink和硬链接myhlink:

    $ $ echo "an example." > myfile

    $ ln -s myfile myslink

    $ ls myfile myhlink

    使用stat检查前述文件:

    $ stat my*

    File: `myfile'

    Size: 12 Blocks: 8 IO Block: 4096 regular file

    Device: fd00h/64768d Inode: 11552 Links: 2

    Access: (0664/-rw-rw-r--) Uid: ( 500/ wjm) Gid: ( 500/ wjm)

    Access: 2016-08-10 03:59:54.421017669 +0800

    Modify: 2016-08-10 03:59:54.421017669 +0800

    Change: 2016-08-10 04:00:08.689000105 +0800

    File: `myhlink'

    Size: 12 Blocks: 8 IO Block: 4096 regular file

    Device: fd00h/64768d Inode: 11552 Links: 2

    Access: (0664/-rw-rw-r--) Uid: ( 500/ wjm) Gid: ( 500/ wjm)

    Access: 2016-08-10 03:59:54.421017669 +0800

    Modify: 2016-08-10 03:59:54.421017669 +0800

    Change: 2016-08-10 04:00:08.689000105 +0800

    File: `myslink' -> `myfile'

    Size: 6 Blocks: 0 IO Block: 4096 symbolic link

    Device: fd00h/64768d Inode: 11553 Links: 1

    Access: (0777/lrwxrwxrwx) Uid: ( 500/ wjm) Gid: ( 500/ wjm)

    Access: 2016-08-10 04:00:03.784997923 +0800

    Modify: 2016-08-10 04:00:03.784997923 +0800

    Change: 2016-08-10 04:00:03.784997923 +0800

    仔细观察myfile和myhlink,发现它们指向同一个inode(inode号同为11552)。硬链接数(Links字段)同为2,这表示有两个目录项指向该inode,每增加一个硬链接Links字段值就会增加1。而myslink文件,我们发现它的inode号与前两个不同,其访问权限为0777。我们删除myhlink这个硬链接,看看会出现什么变化?这次我们用ls -il命令来查看:

    $ rm myfile

    $ ll -li

    total 4

    11552 -rw-rw-r-- 1 wjm wjm 12 Aug 10 03:59 myhlink

    11553 lrwxrwxrwx 1 wjm wjm 6 Aug 10 04:00 myslink -> myfile

    $ cat myhlink

    an example.

    $ cat myslink

    cat: myslink: No such file or directory

    ls命令的-i选项也可以输出文件的inode号。输出信息的第三列为硬链接数,我们发现删除了myfile文件后,myhlink的硬链接数已经由2变为1了,但是原myfile文件的数据依然可以通过myhlink这个硬链接访问,因为硬链接是通过文件的inode号来访问文件数据的。然而通过myslink软链接却无法再访问原myfile文件的数据了,因为软链接实质上是一个指向目标文件的全路径,这个路径中任何一个环节断裂,都会使这个软链接失效。

    追随链接

    自从了软连接,当你要备份、复制或者移动目录或者文件时候,会出现是否要“追随链接”的问题。如果是,则会复制链接所指向的对象;如果不是,则仅仅操作链接本身。

    通常如tar或cp之类的命令工具会给出是否追随链接的选项。如cp,你可以使用-L选项表示追随链接(复制链接所指向的目标),或者用-P表示不追随链接(复制链接本身)。如下例:

    $ mkdir dir1

    $ ln -s /tmp/a.txt dir1/slink

    $ cp -rL dir1 dir2

    $ ls -l dir2

    total 0

    -rw-rw-r-- 1 wjm wjm 0 Aug 6 17:02 slink

    这里我们在dir1目录下创建了一个软链接,当用-L选项将其复制到dir2目录下时,我们看到dir2目录下的slink现在成为一个普通文件。如果使用-P选项(保存链接)复制,则复制后的文件依然是一个软链接:

    $ cp -rP dir1 dir3

    $ ls -l dir3

    total 0

    lrwxrwxrwx 1 wjm wjm 10 Aug 6 17:07 slink -> /tmp/a.txt

    假如没有明确指定-L或者-P选项,则cp的默认行为将随版本而定。

    目录的硬链接

    前文提到过,无法对一个目录创建硬链接。但其实目录是存在硬链接的,只是这个硬链接是系统自动创建的,而我们不能手动创建。当我们用mkdir创建一个空目录时,会发现这个目录的硬链接数为2,例如:

    $ ls -dl ~

    drwx------. 6 wjm wjm 4096 Aug 10 04:25 /home/wjm

    $ cd ~

    $ mkdir mydir

    $ ls -dli ~

    8605 drwx------. 7 wjm wjm 4096 Aug 10 04:25 /home/wjm

    $ ls -dli mydir

    11556 drwxrwxr-x 2 wjm wjm 4096 Aug 10 04:25 mydir

    原先/home/wjm目录的硬链接数量为6,当在/home/wjm下创建了一个空目录mydir后,它的硬链接数量变成了7,而这个空目录mydir的硬链接数为2。这是为什么呢?原因是任何一个目录下,都有两个隐藏的硬链接:

    ls -ali mydir

    total 8

    11556 drwxrwxr-x 2 wjm wjm 4096 Aug 10 04:25 .

    8605 drwx------. 7 wjm wjm 4096 Aug 10 04:25 ..

    我们看到mydir目录下有两个隐藏的硬链接,使用ls的-a选项才能使其列出来。其中一个硬链接是“.”,指向的inode号为11556,就是mydir这个目录本身的inode号;另一个是“..”,通过inode号我们发现它指向了其父目录/home/wjm。因此,当创建了空目录mydir后,mydir的硬链接数为2,而其父目录的硬链接数加1。所以一个目录的硬链接数=其子目录数+2。

    这种硬链接是系统自动为我们创建的,而当你试图手动创建一个指向目录的硬链接时,系统一定会报错阻止你这样做。为什么呢?

    其实在UNIX操作系统的历史上,对目录创建硬链接曾经是允许的。但人们发现,这样做会出现很多问题,尤其是一些对目录树进行遍历操作的如fsck、find等命令无法正确执行。在《Unix高级环境编程》中提到作者Steven在自己的系统上做过实验,结果是:创建目录硬链接后,文件系统变得错误百出。因为这样做会破坏文件系统的树形结构,可能会使目录之间出现环。例如:

    $ ln ~ ~/mydir/myhdir_link

    ln: `/home/wjm': hard link not allowed for directory

    $ ln -s ~ ~/mydir/myhdir_link

    这里第一条命令我们试图在mydir目录下创建一个硬链接指向其父目录,然而失败了。因为这使得/home/wjm和/home/wjm/mydir两个目录之间形成一个环,我们无法再区分这两者谁是父目录谁是子目录了。然而第二条命令创建一个指向其父目录的软链接却可以成功,难道这样不是同样形成了一个环吗?

    为什么软链接可以指向目录而硬链接不行呢?根本原因在于软链接实质上是一个文件,而硬链接实质上是一个目录项(dentry)。在linux系统中,每个文件(目录也是文件,软链接也是文件)都对应着一个inode结构,其中inode数据结构中包含了文件类型(目录,普通文件,符号连接文件等等)的信息,也就是说操作系统在遍历目录时可以判断出符号连接。既然可以判断出符号连接当然就可以采取一些措施来防范进入死循环了,系统在连续遇到8个符号连接后就停止遍历,这就是为什么对目录符号连接不会进入死循环的原因了。而“硬链接”本质上是“目录项”的同义词。当一个目标第一次被创建,就会为它创建一个目录项,这其实就是硬链接。大多数人常常把“硬链接”联想成为一个已有的对象创建一个额外的目录项,但其实是原来的目录项没有任何特殊,所有的硬链接都是平等的,所以Linux内核没有方法能识别出哪个是“原文件”哪个是“硬链接”。这样对于由于目录硬链接而形成的环就无法进行合适的处理。

    但是根目录是一个特例。我们观察:

    $ ls -dli /

    2 dr-xr-xr-x. 22 root root 4096 Aug 10 00:50 /

    $ ls -ali /

    total 102

    2 dr-xr-xr-x. 22 root root 4096 Aug 10 00:50 .

    2 dr-xr-xr-x. 22 root root 4096 Aug 10 00:50 ..

    ... ...

    可见这里根目录的inode号为2,而且根目录下的指向其父目录的隐藏硬链接(..)也指向了自身。

    展开全文
  • linux文件目录和文件链接

    千次阅读 2018-05-17 10:13:05
    linux的文件目录管理 / /home /root /dev /usr /etc /boot /lib /var /tmp /proc /bin /sbin / 通常称为根分区。所有的文件和目录的起始点。只有root用户对此目录拥有写权限。 /etc 配置文件 包含所有应用程序的...

    linux目录结构
    linux的文件目录管理
    / /home /root /dev /usr /etc /boot /lib /var /tmp /proc /bin /sbin
    / 通常称为根分区。所有的文件和目录的起始点。只有root用户对此目录拥有写权限。
    /etc 配置文件 包含所有应用程序的配置文件,也包含启动、关闭某个特定程序的脚本
    /boot 存放Linux系统启动时需要加载的文件。 Kernel、grub等文件都存放在此。
    /var 是一个可增长的目录,包含很经常变的文件。
    例如,/var/log(系统日志)、/var/lib (包文件)
    /root 管理员所有数据。 root用户的家目录
    /tmp 临时文件存储位置 不能存放重要的数据
    /usr usr表示的是unix software source /usr/src 源代码目录
    /bin 命令 此目录包含二进制可执行文件。
    /sbin 系统命令 ,此目录中的命令主要供系统管理员使用,以进行系统维护。
    例reboot、fdisk等。

    /mnt - 挂载目录 挂载点,系统管理员可用于临时挂载文件系统。
    /dev 包含设备文件。
    在Linux中,一切都被看做文件。终端设备、磁盘等等都被看做文件.
    如/dev/sda。
    /home 普通用户所有数据存放在这个目录下
    /proc
      这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    查看咱们的内存信息,CPU信息
    cat /proc/meminfo | grep “Mem”
    /lib 存放系统的库文件
    lib库包括动态运行库和静态库。
    lib***.a是静态库
    lib***.so是动态库
    静态库在编译时被加载到二进制文件中
    动态库在运行时加载到进程的内存空间中
    简单的说,这些库就是为了让你的程序能够正常编译运行的。
    其作用类似于Windows里的.dll文件。几乎所有的应用程序都须要用到这些共享库。

      • 本地管理员大多数情况下将额外的软件安装在/usr/local目录下,并符号连接在/usr/local/bin下的主执行程序。
     •系统的所有设置在/etc目录下。
    • 不要修改根目录(“/”)或/usr目录下的任何内容,
    目录最好和LINUX发布时保持一致。
    • 大多数工具和应用程序安装在目录:/bin, /usr/sbin, /sbin
    • 所有的文件在单一的目录树下。没有所谓的“驱动符”。

    硬连接和软连接
    单纯的说硬链接和软链接都是通过inode号来识别的,硬链接是通过不同的文件名指向同一个indoe号,不能够跨区操作,软链接相当于windows下的快捷方式,删除源文件软链接会失效,可以跨分区操作。除了移动和重命名不改变inode号以外,其他操作都会改变inode号。
    建立硬链接:ln 源文件 目标文件
    建立软链接:ln -s 源文件 目标文件。

    展开全文
  • ed2k链接文件,最快下载方式

    万次阅读 2021-12-30 20:04:41
    今天要下载 ed2k://|file|ZRMPSEL_CN.iso|402690048|00D1BDA0F057EDB8DA0B29CF5E188788|/文件,搞了一圈,发现迅雷能下载,怎么个备忘。 分享如下:

    今天要下载

    ed2k://|file|ZRMPSEL_CN.iso|402690048|00D1BDA0F057EDB8DA0B29CF5E188788|/文件,搞了一圈,发现迅雷能下载,怎么做个备忘。
    分享如下:

    展开全文
  • 网页链接怎么转换成文件

    千次阅读 2021-06-18 10:29:27
    以搜狗浏览器为例,网页链接转换成文件的方法如下:1、打开一个网页后点击浏览器最上方的三根小横线。2、点击网页另存为后的文件选项。3、在弹出来的“另存为”窗口中, “保存类型”中选择“网页,全部”格式。4、...
  • linux 建立链接文件命令

    千次阅读 2021-06-22 14:46:35
    链接:类似于 Windows 系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,此链接方式同样适用于目录。 硬链接:我们知道,文件的基本信息都存储在 inode 中,而硬链接指的就是给一个文
  • * 根据文件链接下载文件 * @param urlString 视频链接 * @param filename C:\Users\708154a.mp4 * @param timeout 连接时长 默认null * @return */ public static boolean downByFileLink(String urlString...
  • 展开全部1、下图是bai我们会遇du到的情况:编辑zhi数据时会弹出提示dao"链接的回文件不可用答"。2、如果PPT链接的Excel文件(图表所在文件)失去关联,我们就需要进行重新连接,文件选项卡找到信息。3、更改源文件>...
  • 链接文件

    千次阅读 2018-08-16 10:19:53
    1、链接文件分为软链接和硬链接 2、软链接 bin 就是...3、一个软链接文件, test.java 这个test.java 的真实地址是 /tomcat/test.java ,软链接到 /root/test.java  命令 ln -s 真实文件 软链接文件...
  • Linux系统中的链接文件

    万次阅读 多人点赞 2019-06-06 20:14:09
    日志文件系统ext xfs里 1.节点区域 记录的都是文件属性,ls -l file ,文件的元数据inode tables 2.数据区域 放的时cat file看到的一切,数据块 cat 找的是数据区域 一个文件对应一个节点号,一个节点号对应一个...
  • 链接器lds文件简介

    千次阅读 2020-02-11 18:35:45
    lds后缀的文件是一个linker script,是一个链接器脚本文件。它用来描述链接器要如何链接生成一个目标执行文件,一般我们在编译C语言程序时,都不会创建lds文件,那是因为libc中已经暗含了链接文件。如果我们编译一个...
  • 若该文为原创文章,转载请注明原文出处 ...长期持续带来更多项目与技术分享,咨询请加QQ:21497936、微信:yangsir198808 红胖子(红模仿)的博文大全:开发技术集合(包含...  cp复制的时候tar在板子上无法创建软链接(已
  • 如何链接外部JavaScript文件

    万次阅读 2020-05-24 14:02:04
    在本教程中,我们向您展示如何将外部JavaScript文件文件扩展名以.js结尾)链接到网页。 注意 在HTML中,您可以将JavaScript嵌入网页或外部JavaScript文件中,也可以同时实现两种方式。 1.外部JavaScript文件 ...
  • 【MarkDown】md文件插入链接的方式

    千次阅读 2021-07-13 20:34:29
    方式一 语法 [文本](URL地址) 示例 [CSDN](https://www.csdn.net) 真实场景演示 CSDN 方式二 语法 <URL地址>
  • 文章目录0.思维导图1.基于索引结点的共享方式(硬链接)2.基于符号链的共享方式(软链接) 0.思维导图 1.基于索引结点的共享方式(硬链接) ...共享的文件不存在时 参考:《王道操作系统》 ...
  • 当两个项目需要公用一个公共文件或文件夹时,我们需要将相同的文件夹进行共享(链接)。 1、获取共享文件/文件夹(被链接)的路径 2、在目标文件夹下添加共享(链接)  注意:此处设置在本地目录,而不是svn...
  • 1.ext4 文件系统 如果要想说清楚 ln 命令,则必须先解释下 ext 文件系统是如何工作的。分区的格式化就是写入文件系统,而我们的 Linux 目前使用的是 ext4 文件系统。如果用一张示意图来描述 ext4 文件系统,则可以...
  • 根据网络文件的下载链接地址,获取文件的大小直接上代码(记住要关闭相关的流) /** * 根据地址获得数据的字节流并转换成大小 * @param strUrl 网络连接地址 * @return */ public static String ...
  • python根据url链接下载文件

    千次阅读 2021-03-04 14:28:39
    一个execl文件中包含很多视频的url链接,希望批量地将这些视频下载到本地。 方法 def get_video_url(excel_path): import xlrd url_list = [] wb = xlrd.open_workbook(excel_path) # xlrd版本的原因可能这里会...
  • 如果要想说清楚 ln 命令,则必须先解释下 ext 文件系统(Linux 文件系统)是如何工作的。我们在前面讲解了分区的格式化就是写入文件系统,而我们的 Linux 目前使用的是 ext4 文件系统。如果用一张示意图来描述 ext4 ...
  • 创建硬链接的函数: 相关函数:symlink, unlink 头文件:#include &...函数说明:link函数中oldpath指定已经存在文件,newpath指定的名称建立一个新的连接(硬链接),若是newpath指定的文件已存在则不会...
  • gcc 链接文件

    万次阅读 2018-04-15 12:03:06
    gcc 链接文件 生成静态库 gcc -c add.c minus.c ar rcv libtest1.a add.o minus.o 链接静态库 方法一: gcc -o test test.c libtest1.a 方法二: gcc -o test test.c -L. -ltest1 生成动态库 gcc -c...
  • linux下的符号链接文件

    千次阅读 2018-07-20 10:40:20
    ln 源文件 目标文件 (注意:不能为目录创建硬链接) 2.关于inode  inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘 … … )被格式化为文件系统后,应...
  • Ubuntu创建文件或文件夹链接

    万次阅读 2018-03-01 10:31:58
    分享知识 传递快乐硬链接:与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块软链接:保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径。所谓的软链接和Windows...
  • Win10 中的文件链接

    千次阅读 2017-09-15 13:56:42
    在 linux 系统里,通常可以用 ln 指令创建文件链接。而在windows中,其实也是有类似的指令,可以实现文件链接。 说明一下,我自己的电脑操作系统是win10,虽然理论上mklink能够在win7上使用,但是以下结论并没有在...
  • 在linux系统中有一种文件叫做链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)。 一、基本概念 1、硬链接 开始之前,...
  • Windows文件链接的四种方式

    千次阅读 2016-09-21 13:22:35
    在网上看了几篇Windows下软链接、硬链接、符号链接、快捷方式之间区别的文章,感觉有实用的地方,便总结如下: 方式 有文件链接路径 局限性 ... 这是无文件的相对链接方式 方便本地移动 ...
  • 【Linux】文件链接

    千次阅读 多人点赞 2016-12-30 10:37:48
    重点内容: 文件链接Linux下文件链接分为两种: 软连接 和 硬链接;在Linudx下使用 ls -l 命令即可看到文件的很多信息,其中第一列的第一个字符代表的就是文件的类型;而下面紧跟的数字代表文件的连接数;比如: ...
  • 它有很多的ts链接,可以下载对应的ts文件视频,在通过别的方法去合并成一个完整的长视频。 前两天,爬虫出了bug,网站是:https://www.xxxx.com 然后,后面几天我就崩溃了。 下面是XHR响应: 第一个是个m3u8...
  • Linux快速创建文件链接

    万次阅读 2019-01-25 15:11:45
    创建文件链接:ln -s 源文件 链接文件,注意:源文件最好使用绝对路径 创建文件链接:ln 源文件 链接文件 注意:软链接不占存储空间,硬链接类似python变量引用,一个变量可有多个引用,当所有引用被删除后文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,741,685
精华内容 1,096,674
关键字:

如何做文件链接