空洞文件(Sparse File)是一种在磁盘上并非完全分配存储空间的文件。它包含了一些逻辑上存在但物理上并未存储的数据。 空洞文件在多线程共同操作文件时具有极大的优势。...空洞文件在实际应用中有两个典型场景: 1、在使用迅雷下载文件时,尚未完全下载时文件已经占据整个文件大小的空间,这就是空洞文件的应用。...通过空洞文件,可以避免一开始就分配过多的资源,节约了存储空间的浪费。 在 Linux 中,可以通过使用 lseek 和 write 系统调用来创建空洞文件。...由于文件指针跳过的区域并未实际写入数据,因此在磁盘上创建了一个空洞。 可以使用 du 命令查看文件占用的磁盘空间,以验证是否为稀疏文件。...在文件系统中,读取空洞文件时,操作系统会将空洞部分的数据补充为0,使得读取的文件内容包含完整的文件大小。
空洞的概念 linux 上普通文件的大小与占用空间是两个概念,前者表示文件中数据的长度,后者表示数据占用的磁盘空间,通常后者大于前者,因为需要一些额外的空间用来记录文件的某些统计信息或附加信息、以及切分为块的数据信息...Linux 所有的类 Unix 系统都差不多,方法比较简单,满足以下两点即可: 设置文件的偏移量 (lseek) 超过文件尾端 并写了某些数据后 (write) 此时原文件末尾到新文件末尾之间将标记为空洞...从另一个侧面说明读取空洞时,系统是返回了 0 的。 Windows 与类 Unix 系统不同,windows 使用稀疏文件 (sparse) 来表示含有空洞的文件。...不光是概念上有区别,实现上也有差别,例如使用类似 linux 的超出文件末尾写策略,并不能生成一个稀疏文件。...最终结论就是,文件空洞并没有内存空洞那么有用,如果你遇到过它的应用场景,欢迎在评论区拍砖斧正~~ 参考 [1]. lseek函数与文件空洞 [2]. windows稀疏文件
空洞文件(hole file) 我们知道 lseek()系统调用,使用 lseek 可以修改文件的当前读写位置偏移量,此函数不但可以改变位置偏移量,并且还允许文件偏移量超出文件长度,这是什么意思呢?...,所以形成了空洞,这部分区域就被称为文件空洞,那么相应的该文件也被称为空洞文件。...文件空洞部分实际上并不会占用任何物理空间,直到在某个时刻对空洞部分进行写入数据时才会为它分配对应的空间,但是空洞文件形成时,逻辑上该文件的大小是包含了空洞部分的大小的,这点需要注意。...空洞文件有什么用呢?...来看一下实际中空洞文件的两个应用场景: ⚫ 在使用迅雷下载文件时,还未下载完成,就发现该文件已经占据了全部文件大小的空间,这也是空洞文件;下载时如果没有空洞文件,多线程下载时文件就只能从一个地方写入,这就不能发挥多线程的作用了
1. cp: $ cp --sparse=always file file.sparse cp缺省使用--sparse=auto,会自动探测源文件中是否有空洞,以决定目标文件是否为稀疏文件;使用-...2. cpio: $ find file |cpio -pdmuv --sparse /tmp 如果不加--sparse参数,稀疏文件中的空洞将被填满。...3. tar: $ tar cSf - file | (cd /tmp/tt; tar xpSf -) 如果不加 -S --sparse参数,稀疏文件中的空洞将被填满。...文件稀疏化(sparsify)效率比较 下面我们创建一个500M的稀疏文件,比较一下几种文件稀疏化方法的效率。...参数 这个参数与EXT2/EXT3是否支持Sparse文件无关;当打开该参数时,文件系统将使用更少的超级块(Super block)备份,以节省空间。
新功能:共享文件,也就是远程储存.而远程储存的应用就是"稀疏文件".而且目前它的应用也非常广泛,常见的下载软件:flashget, BT,还有游戏免CD的镜像文件(一般都是几K) 等都利用"稀疏文件"...1019 NTFS稀疏文件的概念如下: NTFS 5对稀疏数据(即存在较大连续0数位区域的数据)的处理是通过创建无需为每一字节(而这些字节又是文件最终将包含的)而实际占用磁盘空间的大文件来节省磁盘空间并提高磁盘性能的...例如,如果一个42GB大小文件已被标记为稀疏文件,则其数据将只被写入该文件的前64KB和后64KB中,这样,NTFS只占用了128KB的磁盘空间,尽管从另一方面来看,该文件仍象一个42GB大小的文件那样发挥着作用...以新的用户控制文件系统属性来指示的文件利用了这一特性。NTFS剥离稀疏数据流,在分配时仅维护有意义的数据。 在文件访问中,文件系统分配实际的数据,剥离零数据。...API允许应用程序开发者不必进行文件扩展并直接读取分配值域。这就使应用程序不必处理由文件系统产生的大量零数据流,并能够使用稀疏数据流以高效方式复制或移动大文件。
文件基本属性 基本属性 在Linux中,每个文件都有一组基本属性。可以使用ls -l命令来查看文件的详细属性。...更改文件属性 要更改Linux文件的属性,可以使用chmod命令。该命令允许您更改文件的权限,包括读、写和执行权限。...chmod 777 text.txt 创建文件 单个创建 在Linux操作系统中,创建文件可以通过以下几种方式: 使用touch命令创建空文件,例如:touch filename.txt...一次创建多个文件 在Linux中,可以使用一些命令来一次创建多个文件,例如: 1.touch命令:可以创建空文件,可以同时创建多个文件,例如: touch file1 file2 file3 2.echo...创建文件夹 单个创建 在 Linux 系统中,可以使用 mkdir 命令来创建文件夹。
文件时间 任何一个操作系统都有时间的概念,时间的概念主要用于对文件和系统中发生的时间进行记录,在Linux 中,可以使用stat查看Linux系统中文件的时间 stat 用于显示文件时间和 inode...,这个时间就会发生改变 Linux文件运行的时候查看文件又频繁数量又大,如果每次atime发生变化的时候都记入硬 盘,或造成很大的压力。...,这个时间就会发生改变 Change:改变时间,也叫ctime 当文件状态被改变的时候,这个时间就会发生修改 文件类型 Linux系统和Windows系统有很大的区别,Windows系统查看文件的后缀名就可以知道这个是什么类型...Linux系统就根本不看文件的后缀名,你认为这个是什么文件,你就使用什么工具打开这个文件,如果打 开错误,就会报错,看下面的案例 [root@localhost ~]# cat file cat: file...文件查找 在windows中可以在文件管理器中很方便的输入文件名查找文件,然而Linux的文件查找功能更加的方 便,并且功能更加的强大,现在就介绍三个用于查找文件的命令。
我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。 在开始本教程前我们需要先知道什么是绝对路径与相对路径。...rm(英文全拼:remove): 删除文件或目录 mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称 你可以使用 man [命令] 来查看各个命令的使用文档,如 :man...ls (列出目录) 在Linux系统当中, ls 命令可能是最常被运行的。...的文件) 一起列出来(常用) -d :仅列出目录本身,而不是列出目录内的文件数据(常用) -l :长数据串列出,包含文件的属性与权限等等数据;(常用) 将家目录下的所有文件列出来(含属性与隐藏档) [root...将刚刚的目录名称更名为 mvtest2 [root@www tmp]# mv mvtest mvtest2 ---- Linux 文件内容查看 Linux系统中使用以下命令来查看文件的内容: cat
压缩工具的介绍 说到文件管理,就不得不说到tar,因为tar可以压缩和解压缩linux文件,所以要先了解一下压缩和解压缩。...依然有用,只不过现在我们使用压缩工具的目的,更多的是便于存储和传输,在linux系统中压缩工具有很多,不同的工具压缩后的后缀名和大小都有差异,从远古时代说起,linux都出现了以下这些格式的压缩文件 *...已经不支持了,linux下的压缩工具还是以gzip和bzip2以及后加入的xz作为主力,但是由于这些工具,最早不能压缩目录,只能针对单一文件进行压缩,所以在日常使用中,他们都是配合着tar这个打包工具,...-1 ..-9 同gzip相同 bzip2的使用与gzip相同,两种工具的区别就是压缩算法不同,bzip2的压缩比更好一些,bzip的包查看的时候使用的是bzcat,bzmore,bzless...下文件与文件夹的压缩与解压的基本使用我们就介绍到这里,那么你学会linux下对文件或文件夹压缩和解压缩了吗!
在使用容量有限的介质传输大文件时(比如U盘、光盘容量小于文件大小),这时候就需要把大文件切割后,再多次传递,最后再合并成原始文件 文件切割 ➜ split -b 4G CentOS-7-aarch64...-Everything-2009.iso 生成的文件是xaa和xab 文件合并 ➜ cat xaa xab > CentOS-7-merge.iso ➜ shasum CentOS-7-aarch64-...-merge.iso fb2d5f8b47d985b11ad532519aef3a92ece3361e CentOS-7-aarch64-Everything-2009.iso 可以看出来,合并后的文件跟原始文件是一样的...,sha散列值一样 常用选项 -b byte_count[K|k|M|m|G|g] 一个文件多少字节,一般用在二进制文件 -l line_count 一个文件多少行,一般用在文本文件 参考 Linux中的...split命令,文件切割
在 Linux 系统中,每个文件都有归属的所有者和所属组,并且规定了文件的所有者、所属组以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。...在 Linux 系统中一切都是文件,但是不同的文件由于作用不同,因此类型也不尽相同(有一点像 Windows 系统的后缀名)。...常见的文件类型包括: 普通文件(-)、 目录文件(d) 链接文件(l) 管道文件(p) 块设备文件(b) 字符设备文件(c) 普通文件的范围特别广泛,比如纯文本信息、服务配置信息、日志信息以及 Shell...几乎在每个目录下都能看到普通文件(-)和目录文件(d)的身影。块设备文件(b)和字符设备文件(c)一般是指硬件设备,比如鼠标、键盘、光驱、硬盘等,在/dev/目录中最为常见。...权限与归属修改 文件权限修改 chmod 命令用于设置文件的一般权限及特殊权限,英文全称为“change mode”,语法格式为“ chmod [参数] 文件名 ”。
,文件参数在后 mv test1.txt test2.txt 移动或者重命名文件 命令:rm rm: Remove file 删除文件 -r 删除文件夹.../ more less 和 more 都是文件查看工具,但是 less 功能更多一些,在 windows 系统下打开一个 10G的文件比较困难,但是在 Linux 下非常方便,less...,行数小于一个屏幕,最多不要超过两个屏幕,否则会刷屏; cat的另一个作用是合并多个文件,一般配合重定向合并为一个新文件或者将一个文件内容追加到另一个文件结尾。...a1.txt a2.txt >all.txt 3 数据流方向 Linux 有三种数据流的方向,标准输入(或>>)向用于重新控制输出方向...-a 显示全部文件系统 -h 文件大小友好地显示 -l 只显示本地文件系统 -i 显示 inode 信息 -T 显示文件系统类型 df -
5、/dev 这里主要存放与设备有关的文件( unix 和 linux 系统均把设备当成文件)。 访问该目录下某个文件,相当于访问某个设备。 举个例子:想连线打印机吗?...11、/media 有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。 12、/boot 放置linux系统启动时用到的一些文件。.../boot/vmlinuz 为 linux 的内核文件,以及 /boot/gurb。...2、目录文件 包括文件名、子目录名及其指针。它是 Linux 储存文件名的唯一地方,可用ls列出目录文件。 3、链接文件 是指向同一索引节点的那些目录条目。...4、特殊文件 Linux 的一些设备如 磁盘 、终端、打印机 等都在文件系统中表示出来,这一类文件就是特殊文件,常放在/dev目录内。
3.2 Linux文件 目录与权限 3.2.1 文件的种类 普通文件:纯文本文件、二进制文件、数据格式文件 目录 连接文件 设备与设备文件 套接字:数据接口文件,通常被用在网络上的数据连接。...(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。...如果你的系统上有 /var/run 目录,应该让它指向 run 3.2.3 Linux文件属性 用root用户登录linux后,执行 ls -al 命令显示当前目录下的所有文件及文件夹包括隐藏的.和…...文件与目录的关系 目录的主要内容是记录文件名列表,文件名与目录有强烈的关联。...新建新的文件和目录 删除已存在的文件与目录 将已存在的文件或目录重新命名 转移该目录内的文件、目录位置 x(execute):目录的x权限代表用户是否能进入该目录成为工作目录的用途。
我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。 在开始本教程前我们需要先知道什么是绝对路径与相对路径。...rm(英文全拼:remove): 删除文件或目录 mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称 你可以使用 man [命令] 来查看各个命令的使用文档,如 :man...ls (列出目录) 在Linux系统当中, ls 命令可能是最常被运行的。...的文件) 一起列出来(常用) -d :仅列出目录本身,而不是列出目录内的文件数据(常用) -l :长数据串列出,包含文件的属性与权限等等数据;(常用) 将家目录下的所有文件列出来(含属性与隐藏档) [root...语法: mkdir [-mp] 目录名称 选项与参数: -m :配置文件的权限喔!
我们可以使用Windows上的一些编辑器先编辑好代码,然后再传到Linux下进行编译即可。那么,怎么实现Windows与Linux的文件互传呢?可以使用samba,也可以使用一些工具。...本篇笔记分享的是一个可以实现Windows与Linux文件互传的工具:WinSCP。 2、WinSCP工具 ? WinSCP是是一款开源的SFTP客户端,运行于系统下,遵照GPL发布。...与Linux互传文件的前提是要保证Windows要能ping通Linux。...可以看到,左边是我们的Windows目录,右边是我们的Linux目录,然后就可以使用拖拽的方式传输文件了,例如我们把WindowsToLinux.txt这个文件从Windows传到Linux下: ?...Linux往Windows传文件也是类似的。以上就是关于Windows与Linux互传的笔记,如有错误,欢迎指出!
在Linux系统中,通常采用“文件锁”的方式,当某个进程独占资源的时候,该资源被锁定,其他进程无法访问,这样就解决了共享资源的竞争问题。 文件锁包括建议性锁(又名“协同锁”)和强制性锁两种。...建议性锁要求每个相关进程访问文件的时候检查是否已经有锁存在并尊重当前的锁。一般情况下不建议使用建议性锁,因为无法保证每个进程都能自动检测是否有锁,Linux内核与系统总体上都坚持不使用建议性锁。...在Linux内核提供的系统调用中,实现文件上锁的函数有lockf()和fcntl(),其中lockf()用于对文件加建议性锁,这里不再讲解。fcntl()函数既可以加建议性锁,也可以加强制性锁。...需要事先设置,与第二个参数连用 函数返回值:成功:0 失败:-1 第二个参数cmd表示该操作对文件的命令,若该命令是对文件检测锁或施加锁,则需要第三个参数: F_GETLK:检测文件锁状态...,与l_whence的值共同决定加锁区域的起始位置 l_len:加锁区域的长度,若为0则表示直至文件结尾EOF l_pid:具有阻塞当前进程的锁,其持有的进程号会存放在l_pid中,仅由F_GETLK
SparseArrToMapdata { public static void main(String[] args) throws IOException { /*** * 一、稀疏数组转为文件...map.data 为了验证正确性,请用记事本打开此文件 */ //稀疏数组的给定,那简单的:1代表黑子,2代表蓝子 int sparseArr[][]...map.data转换为稀疏数组 */ //1.创建源 File src = new File("d:\\map.data"); //2...int row =0;//用于创建要创建的二维稀疏数组的大小确定 String line; //一行数据 //逐行读取,并将每个数组放入到数组中 while...,需要进行流的“重启”再次定位到文件第一行,进行遍历,即数据的读取
今天学习一些常用的文件夹与文件管理命令!学会到处转转,看看有什么文件,建立、删除、重命名文件!...切换到上层目录,相对路径cd / 切换到根目录cd /teach/ 切换到根目录下面的teach,绝对路径cd - 返回上一次的工作目录cd ~ 返回到用户家目录cd 回到用户家目录相对路径与绝对路径相对路径...touch只能生成一个空文件,不常用touch file6 mv:move 移动或者重命名mv 待移动的文件 移动到哪个目录mv 待重命名的文件 重命名后的文件名区分什么时候是移动文件,什么时候是重命名文件夹...归档文件(创建压缩文件)x:从已有tar归档文件中提取文件(解压缩)f:输出结果到文件或设备(放在最后)v:在处理文件时显示文件(显示处理进度)常见用法:解压:tar 参数 zxvf压缩:tar 参数...打包:将一大堆文件或目录变成一个总的文件压缩:将一个大的文件通过一些压缩算法变成一个小文件Linux中很多压缩程序只能针对一个文件进行压缩,首先需要将一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩
领取专属 10元无门槛券
手把手带您无忧上云