CN109977092B - 一种复制文件的方法和计算设备 - Google Patents
一种复制文件的方法和计算设备 Download PDFInfo
- Publication number
- CN109977092B CN109977092B CN201910232478.XA CN201910232478A CN109977092B CN 109977092 B CN109977092 B CN 109977092B CN 201910232478 A CN201910232478 A CN 201910232478A CN 109977092 B CN109977092 B CN 109977092B
- Authority
- CN
- China
- Prior art keywords
- file
- directory
- data
- source
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种复制文件的方法,适于对多个源文件进行批量复制,其中每个源文件的文件数据存储在磁盘的至少一个数据区块中,方法包括:获取各源文件分别对应的元数据信息,所述元数据信息中包括所述源文件的每一个数据区块的区块编号;根据所述源文件的第一个数据区块的区块编号,对所述多个源文件进行排序;对排序后的多个源文件依次进行读取,并将读取到的源文件的文件数据写入到相应的目标文件中。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种复制文件的方法和计算设备。
背景技术
文件管理是操作系统中实现文件统一管理的一组软件、被管理的文件以及为实施文件管理所需要的一些数据结构的总称,在操作系统中负责存取和管理文件信息。在用户使用计算机进行文件管理时,复制文件是较为常用的操作之一。而对于复制文件而言,在保证数据安全的前提下,很重要的一个环节就是如何提高复制文件的速度,尤其是在多个文件进行批量复制的场景。
现有技术中,用户在复制多个文件时,操作系统读取磁盘上的文件数据时,通常是根据文件写入磁盘的顺序进行读取的。然而文件写入磁盘的顺序与文件实际存储在磁盘上的顺序是不同的。因此,操作系统在读取磁盘上的文件数据时,花费了很多时间在磁盘上寻找文件数据,这就导致复制多个文件的时间较长。随着文件数量的不断增加,读取磁盘上的数据的时间也随之不断增加,大量的时间因此而被浪费。
发明内容
鉴于上述问题,提出本发明以便提供一种复制文件的方法、装置和计算设备,力图解决或至少缓解上面存在的问题。
根据本发明的一个方面,提供一种复制文件的方法,适于对多个源文件进行批量复制,其中每个源文件的文件数据存储在磁盘的至少一个数据区块中,所述的方法包括:获取各源文件分别对应的元数据信息,所述元数据信息中包括所述源文件的每一个数据区块的区块编号;根据所述源文件的第一个数据区块的区块编号,对所述多个源文件进行排序;对排序后的多个源文件依次进行读取,并将读取到的源文件的文件数据写入到相应的目标文件中。
可选地,在根据本发明的文件复制的方法中,所述对排序后的多个源文件依次进行读取的步骤包括:获取待读取的当前源文件的所有数据区块的区块编号,并将所获取的区块编号分别转换成磁盘的扇区编号;调用磁盘驱动程序从磁盘中读取各扇区编号对应的扇区中的数据。
可选地,在根据本发明的文件复制的方法中,所述元数据信息还包括所述源文件所包括的数据区块的数量,在将所获取的区块编号分别转换成磁盘的扇区编号之前还包括:在当前源文件所包括的数据区块的数量大于1时,根据区块编号,对当前源文件的所有数据区块进行排序。
可选地,在根据本发明的文件复制的方法中,所述将读取到的源文件的文件数据写入到相应的目标文件中的步骤包括:读取源文件的文件描述符,所述文件描述符是操作系统打开文件时系统内核向系统进程返回的索引值;根据源文件的文件描述符,找到具有相同文件描述符的目标文件,并将读取到的源文件的文件数据写入到目标文件中。
可选地,在根据本发明的文件复制的方法中,所述获取各源文件分别对应的元数据信息的步骤包括:获取源文件所在目录的目录信息,所述目录信息包括从根目录开始的各级子目录的目录名称;按照目录级别从高到低的顺序,从当前级别的目录对应的目录区块中,获取下一级别的目录名称所对应的元数据节点;根据所获取的元数据节点,确定下一级别的目录对应的目录区块,并从该目录区块中获取再下一级别目录名称所对应的元数据节点,直到找到源文件所对应的元数据节点后,从该元数据节点获取源文件所对应的元数据信息。
可选地,在根据本发明的文件复制的方法中,在获取源文件所在目录的目录信息之后,还包括:根据分区挂载信息获取根目录对应的元数据节点,并从该元数据节点中获取根目录对应的目录区块。
可选地,在根据本发明的文件复制的方法中,所述根据所述源文件的第一个数据区块的区块编号对所述多个源文件进行排序,是按照区块编号从小到大的顺序进行排序。
可选地,在根据本发明的文件复制的方法中,所述多个源文件是位于一个目录下的所有文件。
根据本发明的另一个方面,提供一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,其中,所述一个或多个程序存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述程序指令包括用于执行上述方法的指令。
根据本发明的又一个方面,提供一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行上述的方法。
根据本发明的复制文件的方案,在复制批量文件的过程中,通过源文件的元数据信息确定多个源文件在磁盘上的存储顺序,进而按照在磁盘上的存储顺序对这些源文件进行读取,可以增加操作系统读取磁盘上文件的效率,从而大幅提高批量文件复制的速度。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了多个文件在磁盘中的一种示例性存储方式示意图;
图2示出了磁盘的磁道和扇区的一种示例性划分示意图;
图3示出了根据本发明一个实施例的计算设备的结构图;
图4示出了根据本发明一个实施例的复制文件的方法流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了多个文件在磁盘中的示例性存储方式示意图。如图1所示,N个文件(文件1、文件2…文件N)存储在磁盘中,每个文件具有元数据信息和文件数据,相应地,磁盘具有元数据存储区和文件数据存储区。元数据存储区用于存储文件的元数据信息,文件数据存储区用于存储文件的文件数据,文件数据存储区被划分为多个数据区块(Data Block),其中,数据区块用于记录文件数据。每个文件对应一个元数据节点(inode),每个inode记录该文件的元数据信息,元数据信息主要包括文件的属性和权限信息,以及文件的文件数据是放置在哪(几)个数据区块内。在批量复制文件的场景下,系统需要根据每个文件所对应的元数据信息,获取所有文件数据实际存储的数据区块的编号,定位到磁盘上的相应位置进行读写,从而完成文件的批量复制操作。
以图1示例的文件为例,其中文件1的元数据信息存放在编号为4的inode节点中,而这个inode节点记录了文件数据实际存放在磁盘上的位置为编号为9的数据区块。同理,文件2的元数据信息是存放在编号为5的inode节点中,而这个inode节点记录了文件数据实际存放在磁盘上的编号为4的数据区块。文件3的元数据存信息放在编号为6的inode节点中,这个inode节点记录了文件数据实际存放在磁盘上的4个不连续的数据区块中,按照文件数据的写入顺序,这些数据区块分别为7号、12号、2号和6号。
对文件数据进行读写的磁盘有很多种,无论何种类型的磁盘,其主要包括:碟片,机械手臂,磁头与主轴马达。文件的元数据信息和文件数据全部写在碟片上,碟片又细分为扇区(Sector)和磁道(Track)。如图2所示,每个碟片的盘面被划分成多个狭窄的同心圆环用于存储数据,这样的圆环被称为磁道。每个盘面可以划分多个磁道,在盘面的最外圈,离盘心最远的地方是“0”磁道,向盘心方向依次增长为1磁道,2磁道,等等。磁盘数据的存放是从最外圈开始的,每个磁道上可以存储数KB的数据。然而,有的时候计算机并不需要一次读写这么多数据。因此,在这一基础上,每个磁道又被划分成若干弧段,每段称为一个扇区(Sector)。扇区是磁盘上最小的存储单元,每个扇区可存储128×2N次方(N=0,1,2,3)字节的数据。
根据磁盘的设计特点,在读取数据时,读写磁头沿径向移动,移到要读取的扇区所在磁道的上方,并且磁盘每次只能读取一个扇区的数据。磁头到达指定磁道后,然后通过碟片每分钟几千转的高速旋转,使得要读取的扇区转到读写磁头的下方,此时方能定位在碟片的指定位置上进行数据的读写操作。因此,影响磁盘上数据读写的速度的因素主要有:磁头径向移动来寻找数据所在的磁道的时间;和找到目标磁道后通过盘面旋转并将目标扇区移动到磁头的正下方的时间。同时,由于磁盘的碟片是沿固定方向旋转的,即逆时针方向(如图2所示),因此在进行大量文件/目录读写的时候,会导致大量的“等待磁盘旋转到特定位置”的时间。并且通常数据的读写会从磁盘的外圈开始往里读写,如果先进行读写的文件位于较内圈的位置,就会浪费较多的时间让磁头回到最外圈的位置。即使对于同一圈的不同扇区,假设根据数据存储的区块位置,需要访问的扇区分别是:2,1,0,则磁盘需要转三圈才能完成这三次请求,这会造成大量的时间被浪费。
针对上述问题,本发明在批量复制文件的过程中,通过源文件的元数据信息所记载的文件在磁盘上的存储顺序,将多个源文件按照他们磁盘上的存储顺序进行读取,一方面可以减少磁头的寻道时间,另一方面可以提升盘片每旋转一周的扇区有效访问次数,提高文件复制过程中系统从磁盘中读取数据的效率,从而大幅度提高大量文件的复制速度。
根据上述从磁盘中读取文件数据的原理,以下描述本发明实施例的批量复制文件的方法。
本发明实施例的复制文件的方法可以在计算设备中执行。图3示出了根据本发明一个实施例的计算设备300的结构图。如图3所示,在基本的配置302中,计算设备300典型地包括系统存储器306和一个或者多个处理器304。存储器总线308可以用于在处理器304和系统存储器306之间的通信。
取决于期望的配置,处理器304可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器304可以包括诸如一级高速缓存310和二级高速缓存312之类的一个或者多个级别的高速缓存、处理器核心314和寄存器316。示例的处理器核心314可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心它们的任何组合。示例的存储器控制器318可以与处理器304一起使用,或者在一些实现中,存储器控制器318可以是处理器304的一个内部部分。
取决于期望的配置,系统存储器306可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器306可以包括操作系统320、一个或者多个应用322以及程序数据324。应用322实际上是多条程序指令,其用于指示处理器304执行相应的操作。在一些实施方式中,应用322可以布置为在操作系统上使得处理器304利用程序数据324进行操作。程序数据324包括指令,在根据本发明的计算设备300中,程序数据324包含用于执行复制文件的方法400的指令。
计算设备300还可以包括有助于从各种接口设备(例如,输出设备342、外设接口344和通信设备346)到基本配置302经由总线/接口控制器330的通信的接口总线340。示例的输出设备342包括图形处理单元348和音频处理单元350。它们可以被配置为有助于经由一个或者多个A/V端口352与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口344可以包括串行接口控制器354和并行接口控制器356,它们可以被配置为有助于经由一个或者多个I/O端口358和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备346可以包括网络控制器360,其可以被布置为便于经由一个或者多个通信端口364与一个或者多个其他计算设备362通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
本发明实施例的复制文件的方法可以在如图3所示的计算设备中执行。图4示出了根据本发明一个实施例的复制文件的方法的流程图。参照图4,方法400始于步骤S410,在步骤S410中,获取各源文件分别对应的元数据信息,该元数据信息中包括源文件的每一个数据区块的区块编号。在本发明实施例中,将待复制的文件称为源文件,复制得到的文件称为目标文件。根据文件大小的不同,源文件可能包括一个数据区块,也可能包括多个数据区块。
如前所述,在文件系统中,每个文件/目录(实际上,目录也是一种文件)都对应一个元数据节点,称之为inode节点,在inode节点中存储有文件的元数据信息。元数据信息具体包括:文件类型以及其模式;文件所属用户的id;文件所属组的id;文件大小;文件创建时间;最后一次读取、修改文件的时间;文件硬链接数量;文件占用的区块数量;一组指向区块信息的指针(即文件各段数据及其对应的占用数据区块编号)。根据文件/目录的inode编号,可以在inode表中找到所需要对应的inode信息。
根据本发明的一个实施方式,获取源文件的元数据信息的过程如下:
首先,获取源文件所在目录的目录信息,所述目录信息包括从根目录开始的各级子目录的目录名称。例如,对于文件/a/b/x.txt,其对应的目录信息为/a/b/,包括根目录所在的目录的目录名称为(/),一级子目录(a),二级子目录(b)。
然后,按照目录级别从高到低的顺序,从当前级别的目录对应的目录区块中,获取下一级别的目录名称所对应的元数据节点。其中,根目录的目录级别最高,当前级别的目录为根目录时,根据分区挂载信息可以获取根目录对应的元数据节点,从该元数据节点中可以获取根目录对应的目录区块。由于目录也是一种文件,在本发明实施例中,将存储目录类型文件的文件数据的数据区块,称为目录区块。
根据所获取的元数据节点,确定下一级别的目录对应的目录区块,并从该目录区块中获取再下一级别目录名称所对应的元数据节点,直到找到源文件所对应的元数据节点后,从该元数据节点获取源文件所对应的元数据信息。
假设待复制的多个源文件中的“文件1”的路径为/tmp/文件1.txt。根据文件系统所记载的分区挂载信息找到根目录(/)的inode编号,根目录对应的inode是固定的(通常为2号)。找到编号为2号的inode信息,根据该inode信息中记录的存储根目录信息的目录区块的编号,找到目录区块和其中存储的根目录信息。从目录区块存储的信息中,找到目录名为tmp所对应的inode编号(假设为3号)。找到编号为3号的inode信息,找到该inode信息中记录的存储“tmp”的目录区块和其中存储的目录信息。从目录区块存储的信息中,找到文件名为“文件1.txt”所对应的inode编号(该编号为4号),并获取编号为4号的inode信息。同理,获取“文件2.txt”所对应的inode编号为5号及其记录的文件inode信息,“文件3.txt”所对应的编号为6号及其记录的文件inode信息。
随后,在步骤S420中,根据源文件的第一个数据区块的区块编号,对所述多个源文件进行排序。
根据文件大小的不同,源文件可以包括一个或多个数据区块。从源文件的元数据信息中可以获取到各源文件的第一个数据区块的区块编号。根据本发明的一个实施方式,根据区块编号进行排序是指,根据源文件的第一个数据区块编号从小到大的顺序对多个源文件进行排序。如图1所示,inode编号为4号的inode信息显示文件1的数据存储在区块9号中,由于文件1的数据只储存在一个数据区块中,因此它的第一个数据区块的区块编号就是9号。同理对于文件2,根据inode编号为5号的inode信息显示它的数据存储在数据区块4号中。由于文件2的数据也只储存在一个数据区块中,因此它的第一个数据区块的区块编号就是4号。因为操作系统为文件分配存储空间时,会尽可能的将文件的数据存储在一系列连续的数据区块中,所以在大多数情况下,只根据文件数据的第一个数据区块排序对文件数据进行读取,即可得到较优的优化效果。但是也有少数文件会存储在相隔较远的数据区块中,这种现象也被称为碎片化存储。例如图1中的文件3,由于该文件存储的数据区块有4个,按照文件的数据写入的顺序分别是区块7、区块12、区块2和区块6。其中,第一个数据区块的区块编号为7。将源文件按照第一个数据区块的区块编号从小到大的顺序,对源文件进行排序,因此根据数据区块编号4、7、9,将源文件排序为文件2、文件3、文件1。
在随后的步骤S430中,对排序后的多个源文件依次进行读取,并将读取到的源文件的文件数据写入到相应的目标文件中。
根据本发明的一个实施方式,对排序后的多个源文件依次进行读取的过程中,在读取到某个源文件时,获取待读取的当前源文件的所有数据区块的区块编号,并将所获取的区块编号分别转换成磁盘的扇区编号,调用磁盘驱动程序从磁盘中读取各扇区编号对应的扇区中的数据。由于每个数据区块大小一般为4096字节,且顺序对应8个(扇区大小一般为512字节)磁盘扇区,如block0对应0-7扇区,block1对应8-15扇区,根据数据区块编号可以找到数据在磁盘上存储的具体扇区编号(图2所示),从而在磁盘中读取源文件数据。将图1中的文件1-3数据区块编号4、7、9换成磁盘的扇区编号32-39,56-63,72-79。
根据步骤S420将源文件排序为文件2、文件3、文件1。也就是根据源文件数据在磁盘上的存储顺序,将源文件排序由先读取文件1,再读取文件2,最后读取文件3转换为先读取文件2,再读取文件3,最后读取文件1。如果按照文件的读写顺序,先读取文件1再读取文件2、3,在读取完文件1的数据之后,由于磁盘的碟片是沿固定方向旋转的,磁头必须从内磁道回到最外磁道上重新寻找文件2所在的扇区,增加了磁头的寻道时间。而且由于从最外磁道到文件2扇区所在磁道都各旋转了两次(一次读取文件1,另一次读取文件2、3),从而增加了盘面旋转的延时时间。如果按照文件数据存储在磁盘的顺序进行读取,先读取外道的文件2,再读取较内道的文件3、1,磁头只需要从最外磁道开始由外向内寻道,并且盘片在读取每个磁道的适合只需要旋转一次,就能将所有的源文件的数据全部读取,减少磁头的寻道时间和盘片的旋转时间,在批量复制文件的场景下,大幅度节省在磁盘上读取文件的时间。
根据本发明的另一个实施方式,在读取到某个文件的过程中,如果源文件的数据区块数量大于1,还可以根据inode信息中存储的当前源文件所有区块的编号,按照编号从小到大的顺序对源文件的多个数据区块进行排序,再根据排序的顺序对于源文件的文件数据进行读取。例如图1中的文件3,根据其存储在编号为6号inode中的信息可以知道,文件3的数据是依次写入7、12、2、6中的,将这些数据区块编号排序后,转换成磁盘扇区编号依次读取。如果系统根据文件3数据写入磁盘的顺序进行读取,会增加磁头在磁道上的寻道时间和盘片的旋转时间。因此系统根据文件3数据在磁盘上的存储顺序进行读取,则会节省读取文件的时间。
在读取源文件数据之后,将读取到的源文件的文件数据写入到相应的目标文件中。将读到的数据存储到内存中,之后再使用系统调用将这部分数据写入到新文件,一直循环执行上面的操作,直到所有数据都从源文件复制到目标文件中。
根据本发明的一种实施方式,采用零拷贝(zero-copy)的系统调用splice函数,读取源文件的文件描述符,根据源文件的文件描述符,找到具有相同文件描述符的目标文件,并将读取到的源文件的文件数据写入到目标文件中。在打开现存文件或新建文件时,系统内核会向系统进程返回一个文件描述符(file descriptor),因此它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。通过匹配相同的文件描述符,找到每一个进程所所对应的源文件和目标文件,将源文件的数据写入到目标文件中。因此,这种方式文件数据操作都在内核中进行,无需再复制文件数据到用户空间,避免了文件复制过程中的过多操作,节省了大量的时间。
本发明的技术方案,通过将源文件按照文件数据在磁盘上的存储顺序进行读取,匹配源文件和目标文件的文件描述符,在操作系统地址空间中整块地写入数据,避免文件复制过程中磁盘的无用功和用户空间的操作,极大提高文件复制的效率,节省大量的时间。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的镜像源管理方法或资源下载方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
Claims (7)
1.一种复制文件的方法,适于对多个源文件进行批量复制,其中每个源文件的文件数据存储在磁盘的至少一个数据区块中,所述的方法包括:
获取各源文件分别对应的元数据信息,所述元数据信息包括所述源文件的每一个数据区块的区块编号,其中,所述源文件存储于磁盘中;
根据所述磁盘中存储的源文件的第一个数据区块的区块编号,对所述多个源文件按照区块编号从小到大的顺序进行排序;
对排序后的多个源文件按照区块编号由小到大的顺序从磁盘中依次进行读取,并将读取到的源文件的文件数据写入到相应的目标文件中;
其中,所述对排序后的多个源文件按照区块编号由小到大的顺序从磁盘中依次进行读取的步骤包括:
获取待读取的当前源文件的所有数据区块的区块编号;
在当前源文件所包括的数据区块的数量大于1时,按照区块编号由小到大的顺序,对当前源文件的所有数据区块进行排序;
将所获取的、排序后的数据区块的区块编号分别转换成磁盘的扇区编号;
调用磁盘驱动程序从磁盘中按照区块编号由小到大的顺序读取各扇区编号对应的扇区中的数据。
2.如权利要求1所述的方法,其中,所述将读取到的源文件的文件数据写入到相应的目标文件中的步骤,包括:
读取源文件的文件描述符,所述文件描述符是操作系统打开文件时系统内核向系统进程返回的索引值;
根据源文件的文件描述符,找到具有相同文件描述符的目标文件,并将读取到的源文件的文件数据写入到目标文件中。
3.如权利要求1所述的方法,其中,所述获取各源文件分别对应的元数据信息的步骤包括:
获取源文件所在目录的目录信息,所述目录信息包括从根目录开始的各级子目录的目录名称;
按照目录级别从高到低的顺序,从当前级别的目录对应的目录区块中,获取下一级别的目录名称所对应的元数据节点;
根据所获取的元数据节点,确定下一级别的目录对应的目录区块,并从该目录区块中获取再下一级别目录名称所对应的元数据节点,直到找到源文件所对应的元数据节点后,从该元数据节点获取源文件所对应的元数据信息。
4.如权利要求3所述的方法,其中,在获取源文件所在目录的目录信息之后,还包括:
根据分区挂载信息获取根目录对应的元数据节点,并从该元数据节点中获取根目录对应的目录区块。
5.如权利要求1所述的方法,其中,所述多个源文件是位于一个目录下的所有文件。
6.一种计算设备,包括:
一个或多个处理器;
存储器;和
一个或多个程序,其中所述一个或多个程序存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行根据权利要求1-5所述的方法中的任一方法的指令。
7.一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当被计算设备执行时,使得所述计算设备执行根据权利要求1-5所述的方法中的任一方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910232478.XA CN109977092B (zh) | 2019-03-26 | 2019-03-26 | 一种复制文件的方法和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910232478.XA CN109977092B (zh) | 2019-03-26 | 2019-03-26 | 一种复制文件的方法和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109977092A CN109977092A (zh) | 2019-07-05 |
CN109977092B true CN109977092B (zh) | 2021-06-08 |
Family
ID=67080656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910232478.XA Active CN109977092B (zh) | 2019-03-26 | 2019-03-26 | 一种复制文件的方法和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109977092B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112260889B (zh) * | 2020-09-28 | 2022-03-11 | 中孚安全技术有限公司 | 一种基于Linux的进程流量监控方法、系统及设备 |
CN117436079B (zh) * | 2023-12-20 | 2024-04-05 | 麒麟软件有限公司 | 一种Linux系统的完整性保护方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101162459A (zh) * | 2006-10-13 | 2008-04-16 | 上海万安电子科技有限公司 | 嵌入式文件系统 |
CN101382877A (zh) * | 2008-10-15 | 2009-03-11 | 青岛海信移动通信技术股份有限公司 | Fat文件数据读取/写入方法、系统和移动通信终端 |
CN102594852A (zh) * | 2011-01-04 | 2012-07-18 | 中国移动通信集团公司 | 数据访问方法、节点及系统 |
CN104537050A (zh) * | 2014-12-25 | 2015-04-22 | 华中科技大学 | 一种批量快速创建文件系统元数据和数据的方法 |
CN106055431A (zh) * | 2016-05-30 | 2016-10-26 | 河海大学 | 基于快照在线回滚的数据备份与恢复的方法及装置 |
US10031682B1 (en) * | 2017-04-28 | 2018-07-24 | Netapp, Inc. | Methods for improved data store migrations and devices thereof |
CN108399048A (zh) * | 2017-02-08 | 2018-08-14 | 杭州信核数据科技股份有限公司 | 一种基于Linux操作系统的数据复制迁移方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104516677B (zh) * | 2013-09-26 | 2018-05-04 | 北大方正集团有限公司 | 磁盘数据读写方法及磁盘存储装置 |
CN109240607B (zh) * | 2018-08-21 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种文件读取方法和装置 |
-
2019
- 2019-03-26 CN CN201910232478.XA patent/CN109977092B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101162459A (zh) * | 2006-10-13 | 2008-04-16 | 上海万安电子科技有限公司 | 嵌入式文件系统 |
CN101382877A (zh) * | 2008-10-15 | 2009-03-11 | 青岛海信移动通信技术股份有限公司 | Fat文件数据读取/写入方法、系统和移动通信终端 |
CN102594852A (zh) * | 2011-01-04 | 2012-07-18 | 中国移动通信集团公司 | 数据访问方法、节点及系统 |
CN104537050A (zh) * | 2014-12-25 | 2015-04-22 | 华中科技大学 | 一种批量快速创建文件系统元数据和数据的方法 |
CN106055431A (zh) * | 2016-05-30 | 2016-10-26 | 河海大学 | 基于快照在线回滚的数据备份与恢复的方法及装置 |
CN108399048A (zh) * | 2017-02-08 | 2018-08-14 | 杭州信核数据科技股份有限公司 | 一种基于Linux操作系统的数据复制迁移方法及系统 |
US10031682B1 (en) * | 2017-04-28 | 2018-07-24 | Netapp, Inc. | Methods for improved data store migrations and devices thereof |
Also Published As
Publication number | Publication date |
---|---|
CN109977092A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10887393B2 (en) | Data storage device with embedded software | |
JP6445458B2 (ja) | ボリューム領域の重複排除 | |
US10289547B2 (en) | Method and apparatus for a network connected storage system | |
US20040098363A1 (en) | Hierarchical storage management using dynamic tables of contents and sets of tables of contents | |
KR101782685B1 (ko) | 중복이 제거된 가상 머신 이미지 트랜스퍼 | |
US20230306010A1 (en) | Optimizing Storage System Performance Using Data Characteristics | |
CN109977092B (zh) | 一种复制文件的方法和计算设备 | |
EP3669262A1 (en) | Thin provisioning virtual desktop infrastructure virtual machines in cloud environments without thin clone support | |
CN111158602A (zh) | 数据分层存储方法、读取方法、存储主机及存储系统 | |
US8037058B2 (en) | Reducing access time for data in file systems when seek requests are received ahead of access requests | |
US10452305B1 (en) | Tape drive data reclamation | |
US10235373B2 (en) | Hash-based file system | |
US10268411B1 (en) | Policy and heuristic based conversion of write-optimized virtual disk format into read-optimized virtual disk format | |
JP2008198102A (ja) | データ処理システム、データ記憶装置、ハードディスク装置、およびデータ記憶装置におけるデータ管理方法 | |
US9864761B1 (en) | Read optimization operations in a storage system | |
EP3485362B1 (en) | Maintaining data associated with a storage device related applications | |
CN117519598A (zh) | 命名空间分段存储优化方法、装置、计算机设备及介质 | |
JP2003281816A (ja) | 高速コピー方法およびシステム | |
JPH0273436A (ja) | ファイル管理方式 | |
JPS63178352A (ja) | デイスクキヤツシユシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |