首页 > 系统相关 >Linux的链接文件

Linux的链接文件

时间:2023-12-20 20:44:39浏览次数:24  
标签:文件 rw christine file Linux data 链接

如需要在Linux系统上维护同一文件的两份或多份副本,除了保存多份单独的物理文件副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方法。这种虚拟的副本就称为链接。链接是目录中指向文件真实位置的占位符。在Linux中有两种不同类型的文件链接:
 符号链接
 硬链接
符号链接就是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件。这两个通过符号链接在一起的文件,彼此的内容并不相同。
要为一个文件创建符号链接,原始文件必须事先存在。然后可以使用 ln 命令以及 -s 选项来创建符号链接。

$ ls -l data_file 
-rw-rw-r-- 1 christine christine 1092 May 21 17:27 data_file 
$ 
$ ln -s data_file  sl_data_file 
$ 
$ ls -l *data_file 
-rw-rw-r-- 1 christine christine 1092 May 21 17:27 data_file 
lrwxrwxrwx 1 christine christine    9 May 21 17:29 sl_data_file -> data_file 
$  

在上面的例子中,注意符号链接的名字sl_data_file位于 ln 命令中的第二个参数位置上。显示在长列表中符号文件名后的 -> 符号表明该文件是链接到文件data_file上的一个符号链接。
另外还要注意的是,符号链接的文件大小与数据文件的文件大小。符号链接sl_data_file只有9个字节,而data_file有1092个字节。这是因为sl_data_file仅仅只是指向data_file而已。它们的内容并不相同,是两个完全不同的文件。
另一种证明链接文件是独立文件的方法是查看inode编号。文件或目录的inode编号是一个用于标识的唯一数字,这个数字由内核分配给文件系统中的每一个对象。要查看文件或目录的inode编号,可以给 ls 命令加入 -i 参数。

$ ls -i *data_file 
296890 data_file  296891 sl_data_file 
$  

从这个例子中可以看出数据文件的inode编号是296890,而sl_data_file的inode编号则是
296891。所以说它们是不同的文件。
硬链接会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但是它们从根本上而言是同一个文件。引用硬链接文件等同于引用了源文件。要创建硬链接,原始文件也必须事先存在,只不过这次使用ln 命令时不再需要加入额外的参数了。

$ ls -l code_file 
-rw-rw-r-- 1 christine christine 189 May 21 17:56 code_file 
$ 
$ ln code_file  hl_code_file 
$ 
$ ls -li *code_file 
296892 -rw-rw-r-- 2 christine christine 189 May 21 17:56  
code_file 
296892 -rw-rw-r-- 2 christine christine 189 May 21 17:56  
hl_code_file 
$ 

在上面的例子中,我们使用 ls -li 命令显示了 * code_files的inode编号以及长列表。注意,
带有硬链接的文件共享inode编号。这是因为它们终归是同一个文件。还要注意的是,链接计数
(列表中第三项)显示这两个文件都有两个链接。另外,它们的文件大小也一模一样。

说明 只能对处于同一存储媒体的文件创建硬链接。要想在不同存储媒体的文件之间创建链接,
只能使用符号链接。

标签:文件,rw,christine,file,Linux,data,链接
From: https://www.cnblogs.com/conpi/p/17917527.html

相关文章

  • 实验7 文件应用编程
    实验任务4:文件简单应用程序源码1#include<stdio.h>23intmain(){4FILE*fp;5longsize;6intc;7intcount=0;8fp=fopen("C:\\data\\data4.txt","rb");9while((c=fgetc(fp))!=EOF){10......
  • 软件测试/测试开发|Ubuntu系统常用文件管理命令详解
    前言Ubuntu是一种广泛使用的Linux操作系统,提供了丰富而强大的文件管理命令,使用户能够通过命令行轻松管理文件和目录。本文将介绍一些常用的Ubuntu文件管理命令,帮助用户更好地理解和利用系统资源。ls-列出目录内容ls[选项][目录]ls命令用于列出目录中的文件和子目录。一些常用选......
  • vue3 静态配置文件
    前言有时候我们负责做的只是一个大平台系统下的某个子系统,有时候我们需要调用这个大平台系统下别的子系统的接口。如果直接把别的接口地址,直接写在代码里,那么如果别的子系统的接口调整了,会影响到我们的系统,我们还要重新打包,部署,会很繁琐。解决思路我们的想法是这样:敲代码的......
  • 关于C#文件的上传和下载,文件流相关
    文件的上传和下载控制器:///<summary>///上传web文件///</summary>///<paramname="files"></param>///<paramname="wellName">井名</param>///<paramname="userName&quo......
  • beanshell导入java文件
    beanshell导入java文件beanshell可以读取class格式的文件步骤:    a、添加BeanShell预处理程序    b、请求调用   beanshell可以读取java格式的文件步骤:    a、添加BeanShell预处理程序    b、请求调用  ......
  • uniapp app安卓、ios文件选择 (上传pdf word video img )等
    1、hybrid 必须放在项目根目录下,不然会调用失效:如图 2、建立nvue 子窗体  代码:1<template>2<viewclass="nvue">3<textclass="popup-item"@click="clickfun">选择文件</text>4<textclass="ddddd......
  • 实验7 文件应用编程
    task4源代码1#include<stdio.h>2#include<stdlib.h>34intmain(){5FILE*fp;6charch;7intcnt=0;89fp=fopen("d:\\date\\data4.txt","r");10if(fp==NULL){11printf("......
  • 实验7 文件应用编程
    一,实验目的二,实验准备三,实验内容1,实验任务1task1_1.c1//将图书信息写入文本文件data1.txt23#include<stdio.h>45#defineN8067typedefstruct{8charname[N];//书名9charauthor[N];//作者10}Book;1112intmain(){......
  • Vue使用vue-simple-uploader上传文件夹
    Vue使用vue-simple-uploader上传文件夹先睹为快1点击上传“上传文件夹”按钮 2选择文件夹 3确定上传 4上传进度 引入控件installnpminstallvue-simple-uploader--savemain.js配置importuploaderfrom'vue-simple-uploader'Vue.use(uploader)vue......
  • JS获取 URL 链接参数
    方法一源码:functionGetQueryString(name){varreg=newRegExp("(^|&)"+name+"=([^&]*)(&|$)");varr=window.location.search.substr(1).match(reg);if(r!=null)returnunescape(r[2]);returnnull;}使用:consol......