首页
学习
活动
专区
工具
TVP
发布

文件中的空洞

空洞的概念 linux 上普通文件的大小与占用空间是两个概念,前者表示文件中数据的长度,后者表示数据占用的磁盘空间,通常后者大于前者,因为需要一些额外的空间用来记录文件的某些统计信息或附加信息、以及切分为块的数据信息...Linux 所有的类 Unix 系统都差不多,方法比较简单,满足以下两点即可: 设置文件的偏移量 (lseek) 超过文件尾端 并写了某些数据后 (write) 此时原文件末尾到新文件末尾之间将标记为空洞...不光是概念上有区别,实现上也有差别,例如使用类似 linux 的超出文件末尾写策略,并不能生成一个稀疏文件。...,例如一个 2GB 的文件,如果害怕因下载时间太长导致后面磁盘空间不足而失败的情况,可以预先将文件扩展到 2GB,再分别填充其中的数据。...从这个角度看,windows 确实有一定的优势,因为在 linux 上占用 2GB 空间还真不是几个调用就可以搞定的。 还能想到的一个场景就是分块下载,这个和文件空洞确实可以产生一些化学反应。

80830

什么是空洞文件

空洞文件(hole file) 我们知道 lseek()系统调用,使用 lseek 可以修改文件的当前读写位置偏移量,此函数不但可以改变位置偏移量,并且还允许文件偏移量超出文件长度,这是什么意思呢?...,所以形成了空洞,这部分区域就被称为文件空洞,那么相应的该文件也被称为空洞文件。...文件空洞部分实际上并不会占用任何物理空间,直到在某个时刻对空洞部分进行写入数据时才会为它分配对应的空间,但是空洞文件形成时,逻辑上该文件的大小是包含了空洞部分的大小的,这点需要注意。...空洞文件有什么用呢?...来看一下实际中空洞文件的两个应用场景: ⚫ 在使用迅雷下载文件时,还未下载完成,就发现该文件已经占据了全部文件大小的空间,这也是空洞文件;下载时如果没有空洞文件,多线程下载时文件就只能从一个地方写入,这就不能发挥多线程的作用了

1.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

LinuxLinux文件

Linux文件操作 Linux中,一切皆文件(网络设备除外)。 硬件设备也“是”文件,通过文件来使用设备。 目录(文件夹)也是一种文件。...boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件和镜像文件。...deb:deb是Device(设备)的缩写,该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。...tmp:用来存放一些临时文件 media:Linux系统会自动识别一些设备,例如U盘、光驱等,当识别后,Linux会把识别的设备挂载到这个目录下。...mnt:临时挂载其他文件。 proc:包含了进程的相关信息。 ---- Linux文件的操作方式 文件描述符fd fd是一个大于等于0的整数。

38.5K30

linux 移动 文件,linux移动文件命令

linux移动文件命令 mv命令 功能:为文件或目录改名或将文件由一个目录移入另一个目录中。该命令如同DOS下的ren和move的组合。...语法:mv [选项] 源文件或目录 目标文件或目录 说明: 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。...当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。...当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。...例2:将文件wch.txt重命名为wjz.doc$ mv wch.txt wjz.doc 相关视频教程推荐:《Linux教程》 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

20.7K40

LinuxLinux文件IO

例如: fwrite、fread、fopen、fclose、fseek、fflush ---- 文件系统接口 文件系统——一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问...文件系统缓存 主存(通常是DRAM)的一块区域用来缓存文件系统的内容,包含各种数据和元数据。...---- O_SYNC 缓存同步 为了保证磁盘系统与缓冲区内容一致,Linux系统提供了sync,fsync,fdatasync三个函数。...fsync——将fd对应文件的块缓冲区立即写入磁盘,并等待实际写磁盘操作结束返回。 fdatasync——类似fsync,但只影响文件的数据部分。而除数据外,fsync还会同步更新文件属性。...---- Linux文件IO流程图 内核中会有一个线程,不断地将高速页缓冲区中的数据写入到物理磁盘中。

28K30

Linux文件文件

对于文件的操作而言,“锁定”操作是对文件(尤其是对共享文件)的一种高级的文件操作。...当某进程在更新文件内数据时,期望某种机制能防止多个进程同时更新文件从而导致数据丢失,或者防止文件内容在未更新完毕时被读取并引发后续问题,这种机制就是“文件锁”。...在Linux系统中,通常采用“文件锁”的方式,当某个进程独占资源的时候,该资源被锁定,其他进程无法访问,这样就解决了共享资源的竞争问题。 文件锁包括建议性锁(又名“协同锁”)和强制性锁两种。...建议性锁要求每个相关进程访问文件的时候检查是否已经有锁存在并尊重当前的锁。一般情况下不建议使用建议性锁,因为无法保证每个进程都能自动检测是否有锁,Linux内核与系统总体上都坚持不使用建议性锁。...在Linux内核提供的系统调用中,实现文件上锁的函数有lockf()和fcntl(),其中lockf()用于对文件加建议性锁,这里不再讲解。fcntl()函数既可以加建议性锁,也可以加强制性锁。

9K20

Linux文件

Linux下,一切皆文件。这是我们嵌入式Linux开发与应用这门课的老师经常挂在嘴边的一句话。足以体现出在Linux操作系统中,对于一切资源的管理都是对文件的操作。...Linux系统中每一个分区都是一个文件系统,都有自己的目录层次。Linux会将这些在不同分区的,单独的文件系统按一定的方式形成一个系统的总目录层次结构。...目录在Linux下也是文件,称为目录文件。目录文件的内容是该目录的目录项,目录项是该目录下的文件和目录相关的信息。...Linux采用的是标准的目录结构——树形结构(B树家族) Linux既然采用了树形结构的目录形式,整个OS只有一棵文件树,这样方便OS对文件进行统一管理。...Linux文件分类: 普通文件:用户和OS的数据,程序等信息文件 目录文件Linux文件系统将文件索引节点号和文件名同时保存在目录中,所以目录就是一张表。

6.6K20

音视频开发之旅(50)-边缓存边播放之缓存分片-物理文件空洞方案

目前是最优的解决方案 引用自: 头条都在用的边下边播方案 能够想到有如下两种方式: 物理文件空洞的方式,进行缓存分片,无数据的部分被填充为0,有数据的部分记录start和end点 填充数据。...逻辑文件空洞的方式,进行缓存分片,把缓存文件分片成N个文件,如果某些文件没有数据就不创建,有数据的记录开始和结束点,如果相邻的两个文件start和end能够对接上,进行merge合并。...其中MP4的缓存采用了物理文件空洞的方式;而M3U8采用的是逻辑文件空洞的方式。...这一篇我们来分析该开源项目针对MP4的物理文件空洞缓存分片的方案,下一篇我们再分析针对M3U8逻辑文件空洞缓存分片的方案。...,有数据的进行填充

92840

Linux文件文件IO

Linux系统中每一个分区都是一个文件系统,都有自己的目录层次。Linux会将这些在不同分区的,单独的文件系统按一定的方式形成一个系统的总目录层次结构。...Linux采用的是标准的目录结构——树形结构(B树家族) Linux既然采用了树形结构的目录形式,整个OS只有一棵文件树,这样方便OS对文件进行统一管理。...Linux文件分类: 普通文件:用户和OS的数据,程序等信息文件 目录文件Linux文件系统将文件索引节点号和文件名同时保存在目录中,所以目录就是一张表。...Linux文件描述符 在Linux下当一个进程打开文件的时候,OS会返回相应的文件描述符,程序为了处理该文件必须使用这个文件描述符。文件描述符是一个正整数。...另外lseek的文件偏移量的大小可以大于当前文件的长度,在这种情形下,对该文件的下一次写将加长该文件,并在文件中构成一个空洞文件空洞并不要求在磁盘上占据空间。

3.2K20

linux下移动文件命令_linux怎么移动文件

linux 中移动文件Linux中移动文件看似比较简单,但是可用的选项却比大多数人想象的要多。...实际上,文件在移动时会保留其权限,因为移动文件不会更改或重新创建它。 文件和目录索引节点从不暗示继承,而是由文件系统本身决定的。...发生这种情况是因为必须将新数据写入新文件系统。 因此,在Linux中,移动和重命名文件的操作实际上是相同的操作。...这也是在Linux上移动文件的第一种也是最直观的方法。 如果您习惯了一般的桌面体验,那么您可能已经知道如何在硬盘驱动器上移动文件。...翻译自: https://opensource.com/article/19/8/moving-files-linux-depth linux 中移动文件 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人

17.1K20

Linux文件管理

我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。 在开始本教程前我们需要先知道什么是绝对路径与相对路径。...实例 [root@localhost ~]# cd /home [root@localhost home]# rm -rf dir1 文本文件查看 在Linux中一切皆文件,说的就是Linux利用文本文件来保存系统所有的设置...我们在Linux中想实现一个功能,不可避免的需要查看文本文件,修改文本文件。 cat 用于打开文本文件并显示出来 cat [选项]... [文件]......在Linux中只掌握文本查看是远远不够的,我们还需要掌握编辑文本文件 Linux上也有图形化的文本编辑器,类似于windows的记事本,但是很多时候我们只能用命令行来管理 Linux操作系统,所以必须要掌握命令行的文本编辑器软件...简单的说,我们可以将这三个模式的关系用下图来表示: 图片 vi/vim使用实例 有些linux发行套件上并没有安装vim,我们可以安装一下,下面提供了centos的安装命令 [root@localhost

2.6K40

linux 文件权限

当我们部署皕杰报表时,有时需要对文件赋予权限。linux文件对不同用户可以分别设置权限,管理员(root)有所有权限。...文件权限解释查看路径下所有文件的命令:ll 或者 ls -l图片查询结果列出了当前路径下的文件文件夹,每行数据以相同格式显示。第一个字符常见的两种,d和-,d表示文件夹,-表示文件。...r:允许读的权限w:文件可以编辑x:执行权限-:没有任何权限9个字符位置,3个一组,分3组,分别表示文件所属用户权限,用户组权限和其他用户权限:图片chmod修改权限方法一权限标识分三组,分别是文件所属用户权限...所有可能的权限加一起不会出现重复:rwx=7,-wx=3,r-x=5,rw-=6三组权限用3个数字表示chmod 777 file1chmod 764 file2chmod递归文件夹修改文件夹权限的时候...,需要使用-R参数,表示递归修改子文件权限chmod -R 777 abc修改权限命令chmod 777 文件名1.chmod 577 /home/stuser -R2.umask -p 02003.chown

13.5K70
领券