具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
本申请实施例提供的文件的操作方法可应用于计算机设备。可选地,该计算机设备是智能手机等手持设备,或个人计算机等终端设备,本申请并未特别限定。本申请实施例提供的文件的操作方法的执行主体可以是计算机设备,或者,是计算机设备中的功能模块。
图1示出了本申请实施例提供的计算机设备1的一种示意性框架图。
如图1所示,该计算机设备1包括:硬件层10、运行在硬件层10之上的操作系统层20,以及运行在操作系统层20上的应用层30。该硬件层10包括处理器、内存和外存等硬件。该操作系统层20是任意一种或多种通过进程(process)实现业务处理的计算机操作系统,例如,Linux操作系统、Unix操作系统、Android操作系统、iOS操作系统或Windows操作系统等。该应用层30包含浏览器、通讯录、文字处理软件、即时通信软件等应用程序。
具体地,操作系统层20包括内核(Kernel)201,其为操作系统层20的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,决定着系统的性能和稳定性。该内核201是连接应用层30和硬件层10的桥梁。
在图1所示实施例的基础上,图2示出了本申请实施例提供的计算机设备1的另一示意性框架图。
如图2所示,应用程序(Application,APP)301为应用层30中的计算机程序,其位于计算机设备1的用户空间(User Space),能够由用户进行使用和设计。
相对于用户空间,操作系统层20中的内核201位于计算机设备1的内核空间(Kernel Space)。该内核201独立于用户级的应用程序,该内核201可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证内核201的安全,操作系统层20一般都强制用户进程不能直接操作该内核201。
可选地,在该内核空间中,内核201可包括:系统调用接口(System CallInterface,SCI)210,内存管理单元(Memory Management Unit,MMU)220,进程管理程序230,虚拟文件系统(Virtual File System,VFS)240,文件系统(File System,FS)250以及设备驱动(Device Driver)程序260等多种功能模块。
具体地,在该内核201中,系统调用接口(SCI)210提供了用户空间访问内核空间的一个接口。在不同的计算机设备1的硬件架构下,通过SCI 210进入内核空间的方法是不同的。
内存管理单元(MMU)220用于控制计算机设备1中的内存与处理器之间的数据交互。具体地,MMU 220从处理器接收内存访问请求,并基于该内存访问请求控制针对内存的访问。
进程管理程序230为管理操作系统中多个进程的程序。该进程管理程序230能够用于实现:进程调度、中断处理、信号/进程优先级、上下文切换、进程状态管理、进度内存管理等多种功能。
虚拟文件系统(VFS)240为文件系统(FS)250与系统调用接口(SCI)210之间的中间处理系统。在本申请实施例中,计算机设备1可以支持多种不同类型的文件系统,作为示例而非限定,FS 250中可以包括:EXT2,EXT3,EXT4,F2FS,rootfs,proc等多种类型的文件系统。
为了支撑不同的文件系统,VFS 240隐藏了不同文件系统的硬件的具体细节,把文件系统操作和不同文件系统的具体硬件实现分离开来,为所有的设备提供了统一的接口。
设备驱动程序260是内核201的主要部分之一。该设备驱动程序260实际控制操作系统层20和硬件层10之间的交互。具体地,该设备驱动程序260除了提供一组操作系统层20可理解的抽象接口完成和操作系统层20之间的交互以外,还用于完成与硬件层10中硬件设备相关的具体操作细节。一般而言,设备驱动程序260和硬件设备的控制芯片有关。
可以理解的是,在本申请实施例中,上述操作系统层20中的内核201以及应用层30中的应用程序均为计算机设备1中的软件模块,其具体实现为计算机程序(或者也称计算机代码)。为了实现该程序功能,如图2所示,计算机设备1的硬件层10需包括至少一个处理器110。除处理器110以外,硬件层10还可以包括内存120和外存130等存储器。
具体地,处理器110的功能主要是解释计算机程序的指令以及处理计算机程序中的数据。其中,该计算机程序的指令以及计算机程序中的数据能够保存在计算机设备1的内存120和/或外存130中。
可选地,处理器110可能是集成电路芯片,具有信号的处理能力。作为示例而非限定,处理器110是可以是通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其中,通用处理器是微处理器等。例如,该处理器110是中央处理单元(central processing unit,CPU)。
其中,每个处理器110包括至少一个处理单元。可选地,该处理单元也称为核心(core),是处理器最重要的组成部分。处理器110所有的计算、接受命令、存储命令、处理数据都由核心执行。可选地,每个处理器110还包括缓存,该缓存是数据交换的缓冲区。当处理单元要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助处理单元更快地运行。
内存120也称为主存,其作用是用于暂时存放处理器110中的运算数据,以及与外存130交换的数据。该内存120与处理器110之间具有较快的数据读写速度。另外,该内存120能够为计算机设备1中的进程提供运行空间,例如,内存120中保存用于生成进程的计算机程序。计算机程序被处理器110运行而生成进程后,处理器110在内存120中为该进程分配对应的存储空间。内存120在上述进程对应的存储空间中保存进程运行期间产生的数据,例如,中间数据,或过程数据等等。
作为示例而非限定,在本申请实施例中,内存120可以是易失性存储器。其中,该易失性存储器可以是随机存取存储器(Random Access Memory,RAM)。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)等等。
外存130也可称之为辅存,是指除计算机设备1内除了内存120及缓存以外的存储器。可选地,该外存130可以为断电后仍能保存数据的存储器。且该外存130可具有相对较大的容量,能够存储计算机设备1中的图片、视频、文字等文件数据以及应用程序,满足用户的使用需求。
作为示例而非限定,在本申请实施例中,外存130可以为非易失性存储器、磁盘、光盘、U盘(也称USB闪存盘)或者安全数码卡(Secure Digital Memory Card,SD Card)等等。其中,非易失性存储器可以包括以下存储器中的至少一种:只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)和闪存(FLASH)。另外,磁盘可以是硬盘(Hard Disk)或者是软盘(Soft Disk),该硬盘可以包括:固态硬盘(Solid State Drive,SSD)、混合硬盘(Hybrid Hard Drive,HHD)以及机械硬盘(Hard Disk Drive,HDD)等等。
应理解,以上列举的计算机设备1的结构仅为示例性说明,本申请并未限定于此,本申请实施例的计算机设备1包括现有技术中计算机系统中的各种软件模块或者硬件模块,例如,对于硬件模块来讲,计算机设备1还包括:通信装置、传感器装置以及各种功能的外设装置等等。
对于上述计算机设备1,内存120的存储空间主要影响计算机设备1的运行速度,因此,该内存120也可称之为“运存”。而外存130的存储空间主要影响计算机设备1存储文件数据的能力,该外存130的存储空间可理解为计算机设备1中用于存储文件数据的存储空间。
在如今的现实生活中,随着计算机设备的普及,越来越多的用户可能会同时拥有多个计算机设备,例如,用户会同时拥有多个手机、电脑以及穿戴设备等终端计算机设备。在该场景下,每个计算机设备中均会产生该用户的文件数据,而对于每个计算机设备上产生的各种文件数据,用户会希望在其它计算机设备上也能实现文件数据的使用,满足用户的工作和生活需求。
为了应对上述需求,百度网盘等网盘类应用应运而生。用户可在每个计算机设备中下载该网盘应用(APP),通过该网盘应用,用户可将计算机设备的本地存储模块(例如上文所述的外存130)中的文件数据上传至云端网盘,进一步地,用户也可将云端网盘上的文件通过网盘应用下载至本地存储模块,以实现多设备之间的文件共享。
但在该方式中,用户需要在每个计算机设备中下载专用的网盘应用,且也需要通过该网盘应用将云端网盘中的文件数据下载至本地才能使用该文件数据,因此,用户对于云端网盘的使用体验不佳,且也会影响每个计算机设备的本地存储容量。
鉴于此,本申请提供一种共享文件的操作方法,能够改善文件数据在终端设备上的共享,提升用户对共享文件数据的使用体验。
图3示出了本申请实施例提供的一种共享文件的操作方法300的示意性流程框图。该操作方法300应用于第一设备的内核,且该第一设备可配置有云端存储模块和本地存储模块。其中,该云端存储模块可以为第一设备能够通过网络连接并访问的网络存储工具。作为示例而非限定,该云端存储模块可以网盘或者云盘(Cloud Disk)。该本地存储模块为第一设备中用于存储文件的硬件模块。可选地,该本地存储模块可以为上文图2中所示的外存130,该本地存储模块包括但不限于是以下各存储模块中的至少一种:非易失性存储器、磁盘、光盘、U盘或者安全数码卡。
如图3所示,该操作方法300可以包括如下步骤。
S310:获取云端存储模块中用于指示共享文件的文件信息,该共享文件包括其它设备上传至云端存储模块的文件。
S320:根据文件信息,在本地存储模块中创建共享文件对应的本地文件,该本地文件包括:用于标识共享文件位于云端存储模块的文件标记。
S330:根据本地文件中的文件标记,对云端存储模块中的共享文件进行操作。
具体地,在本申请实施例中,上述各操作步骤由第一设备中操作系统的内核执行。
在步骤S310中,第一设备的内核获取云端存储模块中共享文件的文件信息,该共享文件可以为除第一设备以外的其它设备上传至云端存储模块的文件。
可选地,该共享文件可用于存储不同类型的信息,例如:数字或文本数据、照片、音乐、视频等等。本申请实施例对于该共享文件的具体类型不做限定。
可选地,该共享文件可以为其它设备通过其内核上传至云端存储模块的文件,具体地,该其它设备通过其内核向云端存储模块上传文件的相关方案可以参见下文实施例中第一设备的内核向云端存储模块上传文件的相关实施例,此处暂不做具体论述。
具体地,该共享文件的文件信息可以用于指示该共享文件。例如,该共享文件的文件信息包括但不限于是:该共享文件的文件名和/或文件路径名等相关信息。可选地,在云端存储模块中,共享文件可包括文件数据以及文件信息两部分,该文件信息可独立于文件数据进行存储,因而该文件信息可较为方便的从云端存储模块中进行读取。其中,区别于文件信息,共享文件的文件数据也即共享文件的真实数据,在一些相关技术中,该文件数据也可称之为用户数据(user data)。
在一些实施方式中,第一设备的内核可主动获取云端存储模块中共享文件的文件信息,例如,第一设备的内核可向云端存储模块发送获取命令,以使得云端存储模块向第一设备反馈该共享文件的文件信息。或者,在另一些实施方式中,第一设备的内核也可被动获取云端存储模块中共享文件的文件信息,例如,云端存储模块可主动将其中共享文件的文件信息发送至第一设备,以被第一设备的内核接收。
在步骤S320中,第一设备的内核可根据获取的共享文件的文件信息,在本地存储模块中创建该共享文件对应的本地文件,该本地文件中可包括:用于标识共享文件位于云端存储模块的文件标记。
具体地,在本地存储模块中创建该共享文件对应的本地文件后,在第一设备的后续运行过程中,位于第一设备的用户空间的应用程序能够通过内核访问本地存储模块中的本地文件,进而通过该本地文件中的文件标记再访问云端存储模块中的共享文件。
具体地,该本地存储模块中的本地文件为第一设备的内核根据共享文件的文件信息创建得到的,该本地文件并不包括共享文件的实际文件数据,而仅仅记录了共享文件的文件信息以及位置信息。因此,在该技术方案中,第一设备不需要将云端存储模块中的共享文件的全部文件数据下载至本地存储模块中,而仅需在本地存储模块中创建用于指示该共享文件的本地文件即可,该本地文件不需占用本地存储模块中较大的存储空间,而仅需较小的存储空间即能实现指示云端存储模块中的共享文件的目的,从而节省本地存储模块的存储空间,有利于提升第一设备的存储性能与运行性能。
在步骤S330中,第一设备的内核可根据本地文件中的文件标记,对云端存储模块中的共享文件进行操作。
可选地,在第一设备的运行过程中,当第一设备的内核接收到用户空间发送的本地文件的操作命令时,该第一设备的内核可根据该操作命令访问本地存储模块中的本地文件,且根据该本地文件中的文件标记以及操作命令,进一步实现对云端存储模块中的共享文件的相关操作。
综上,在本申请实施例的技术方案中,第一设备的内核可根据用于指示云端存储模块中共享文件的文件信息,在第一设备的本地存储模块中创建该共享文件对应的本地文件,以实现共享文件在本地存储模块中的同步。该本地文件中不包括共享文件的实际文件数据,而包括用于标识共享文件位于云端存储模块的文件标记,因而该本地文件不仅占用的存储空间较小,能够改善共享文件在第一设备上的同步共享方式。另外,内核可以较为方便的根据本地文件中的文件标记,直接对云端存储模块中的共享文件进行操作,而不需要在用户空间中下载专用的应用程序且通过该应用程序将共享文件下载至本地才能实现文件操作,本申请实施例的技术方案提升用户对共享文件数据的使用体验。
为了便于理解本申请实施例的技术方案,图4示出了第一设备400的一种示意性结构框图。上文实施例中所提供的操作方法300以及下文实施例中所提供的各操作方法均可以由图4所示的第一设备400的内核401执行。
如图4所示,该第一设备400的内核401可包括云端文件系统410、设备驱动420以及网络协议层430。
其中,相比于相关技术中计算机设备中的本地文件系统,本申请实施例提供的云端文件系统410为在第一设备的内核401中新增的文件系统,其能够接收来自第一设备400的用户空间的应用程序等程序模块的相关命令,且能够通过网络协议层430与云端存储模块403进行交互,且也能够通过设备驱动420与本地存储模块402进行交互。
具体地,该设备驱动420可以与上文图2所示实施例中的设备驱动260相同,该网络协议层430为实现于内核中的网络协议模块,其可用于将相关数据封装为基于网络协议的网络数据包,且通过网络将该网络数据包发送至云端存储模块403。作为示例而非限定,该网络协议包括但不限于是超文本传输协议(Hyper Text Transfer Protocol,HTTP)。
相比于在用户空间实现网络协议,用户空间与内核空间具有频繁的切换频率的技术方案,通过该实施方式的技术方案,在第一设备的内核实现了网络协议,例如HTTP协议,并将第一设备中的相关数据封装为网络数据包发送至云端存储模块,这样可以减少用户空间到内核空间之间的切换频率,从而提高第一设备到云端存储模块的访问速度。
需要说明的是,图4仅作为示意而非限定,示出了本申请实施例所提供的一种第一设备400的示意性结构框图,第一设备400除了可包括图4中所示的各功能模块以外,还可以包括上文图2所示的各功能模块,本申请实施例对该第一设备400的具体结构不做限定。
图5示出了本申请实施例提供的另一共享文件的操作方法500的示意性流程框图。该操作方法500同样适用于上文图4所示实施例的第一设备400的内核401。
如图5所示,该操作方法500可包括以下步骤。
S510:获取云端存储模块中用于指示共享文件的文件信息,该文件信息包括:共享文件的文件名和/或文件路径名。
S521:在本地存储模块中确定空闲的目标存储空间。
S522:在本地存储模块中创建目录文件,该目录文件包括:文件名和/或文件路径名与目标存储空间的对应关系。
S523:在目标存储空间中写入文件标记,以创建共享文件对应的本地文件。
S530:根据该文件标记,对云端存储模块中的共享文件进行操作。
可选地,在本申请实施例中,步骤S510可以为上文图3中步骤S310的一种实施方式,步骤S521至步骤S523可以为上文图3中步骤S320的一种实施方式,步骤S530可以与上文图3中步骤S330的技术方案相同。
具体地,在步骤S510中,第一设备的内核从云端存储模块获取的用于指示共享文件的文件信息包括该共享文件的文件名和/或文件路径名。
在步骤S521中,本地存储模块可包括位图存储空间,索引节点(inode)存储空间和块(block)存储空间。该inode存储空间用于存储文件的元数据(metadata),该block存储空间用于存储文件的文件数据,而位图存储空间用于记录本地存储模块中inode存储空间的使用情况和block存储空间的使用情况。
根据该位图存储空间中inode存储空间和block存储空间的使用情况,可以确定本地存储模块中空闲的目标存储空间,可选地,该目标存储空间可仅为一个目标inode存储空间,或者,该目标存储空间也可仅为一个目标inode存储空间以及一个目标block存储空间,从而降低对本地存储模块中空闲存储空间的消耗,以节省本地存储模块的存储空间。
在步骤S522中,第一设备的内核可在本地存储模块中创建目录文件,该目录文件的文件数据包括:共享文件的文件名和/或文件路径名与上述目标存储空间的对应关系。
具体地,第一设备的内核可根据位图存储空间中的信息,在本地存储模块中确定空闲的第一inode存储空间和第一block存储空间,该第一blcok存储空间中可写入该目录文件的文件数据,即共享文件的文件名和/或文件路径名与目标存储空间的对应关系。该第一inode存储空间中可写入第一block存储空间的地址指针以及该目录文件的相关属性。
具体地,目标存储空间至少包括一个目标inode存储空间,该目标inode存储空间具有对应的inode号,在一些实施方式中,可以通过建立该inode号与共享文件的文件名的对应关系,从而建立目标存储空间与共享文件的文件名的对应关系。
在步骤S523中,第一设备的内核可进一步的在目标存储空间中写入用于指示共享文件位于云端存储模块的文件标记,以在本地存储模块中创建共享文件对应的本地文件。
可选地,该文件标记可以为单比特位的标识符,例如,“0”或“1”,其可较为便捷的在本地存储模块中写入且能够降低该文件标记在本地存储模块中占用的存储空间。
通过上述步骤S521至S523,在本地存储模块中创建的本地文件的文件名可以与共享文件的文件名相同,和/或,本地文件在本地存储模块中的文件路径可以与共享文件在云端存储模块中的文件路径相同,与此同时,该本地文件中包括用于标识共享文件位于云端存储模块的文件标记。用户可通过文件名和/或文件路径名访问本地存储模块中的本地文件,进而通过本地文件中的文件标记,对云端存储模块中具有相同文件名和/或相同文件路径名的共享文件进行操作。
综上,通过本申请实施例的技术方案,能够便捷的在本地存储模块中创建共享文件对应的本地文件且不需在本地存储模块中占用较大的空间,且该本地文件也易于通过文件名和/或文件路径名被第一设备的内核读取,提升第一设备对于本地文件乃至共享文件的操作效率。
图6示出了本申请实施例提供的另一共享文件的操作方法600的示意性流程框图。
如图6所示,该操作方法600可包括以下步骤。
S610:获取云端存储模块中用于指示共享文件的文件信息,该文件信息包括:共享文件的文件名、文件属性和/或文件大小。
S621:在本地存储模块中确定空闲的目标存储空间。
S622:在本地存储模块中创建共享文件对应的目录文件,该目录文件包括:文件名和/或文件路径名与目标存储空间的对应关系。
S623:在目标存储空间中写入文件标记、文件属性和/或文件大小,以创建共享文件对应的本地文件。
S630:根据该本地文件中的文件标记、文件属性和/或文件大小,对云端存储模块中的共享文件进行操作。
可选地,在本申请实施例中,步骤S610可以为上文图5中步骤S510的一种实施方式,步骤S623可以为上文图5中步骤S523的一种实施方式,步骤S630可以为上文图5中步骤S530的一种实施方式。且步骤S621至步骤S622的具体方案可以与图5中步骤S521至S522的技术方案相同。
具体地,在步骤S610中,第一设备的内核从云端存储模块获取的用于指示共享文件的文件信息除了包括该共享文件的文件名和/或文件路径名以外,还包括:共享文件的文件属性和/或文件大小,其中,该共享文件的文件属性包括但不限于:文件的读、写等权限、文件的时间戳、文件的拥有者和所属组等相关信息。
在步骤S621至S622中,第一设备的内核可根据空闲的目标存储空间,在目录文件中建立该目标存储空间以及文件名的对应关系。
在步骤S623中,第一设备的内核可进一步的在目标存储空间中写入用于指示共享文件位于云端存储模块的文件标记、共享文件的文件属性和/或文件大小,以创建共享文件对应的本地文件。
可选地,在一些实施方式中,在目标存储空间为inode存储空间时,该共享文件的文件标记、文件属性和/或文件大小均写入该inode存储空间中,以形成共享文件在本地存储模块中对应的本地文件。在该实施方式中,可节省本地存储模块中block存储空间,仅利用一个inode存储空间即可实现共享文件在本地存储模块中对应的本地文件的创建。
可选地,在目标存储空间包括inode存储空间以及block存储空间时,共享文件的文件属性和/或文件大小可写入该inode存储空间中,而共享文件的文件标记可写入block存储空间,以形成共享文件在本地存储模块中对应的本地文件。在该实施方式中,在本地存储模块中inode存储空间有限的情况下,可以适当新增一个block存储空间,且利用该blcok存储空间存储文件标记和/或共享文件的其它信息数据,也能实现共享文件在本地存储模块中对应的本地文件的创建,且对本地存储模块的存储空间影响较小。
在步骤S630中,第一设备的内核可根据该本地文件中的文件标记、文件属性和/或文件大小,对云端存储模块中的共享文件进行操作。
例如,第一设备的内核可根据该本地文件中的文件标记确定共享文件位于云端存储模块后,可根据文件大小确定对共享文件的读写方式,和/或,可根据文件属性中的读写权限判断是否能够对共享文件进行读写。
通过上述步骤S621至S623,在本地存储模块中创建的本地文件的文件名与共享文件的文件名相同,和/或,本地文件在本地存储模块中的文件路径可以与共享文件在云端存储模块中的文件路径相同,且该本地文件中包括用于标识共享文件位于云端存储模块的文件标记、以及共享文件的文件属性和/或文件大小。用户可通过文件名访问本地存储模块中的本地文件,进而通过本地文件中的文件标记、文件属性和/或文件大小,对云端存储模块中具有相同文件名的共享文件进行操作。
综上,通过本申请实施例的技术方案,在本地存储模块中创建的共享文件对应的本地文件可同时包括:共享文件的文件名和/或文件路径名以及共享文件的文件属性和/或文件大小,通过文件名和/或文件路径名,本地文件易于被第一设备的内核读取,通过文件数据和/或文件大小,可以便于内核对共享文件进行较为准确的操作,而不会产生错误。通过该技术方案,在提升第一设备对于本地文件乃至共享文件的操作效率的同时,还可以提高第一设备对于共享文件处理的性能,进而提升用户对第一设备的使用体验。
图7示出了本申请实施例提供的另一共享文件的操作方法700的示意性流程框图。
如图7所示,该操作方法700可包括以下步骤。
S710:获取云端存储模块中用于指示共享文件的文件信息,该文件信息包括:共享文件的文件名、文件路径名、文件属性和/或文件大小。
S721:在本地存储模块中确定空闲的目标存储空间。
S722:在本地存储模块中创建第一目录文件,该第一目录文件包括:文件名与目标存储空间的对应关系。
S723:在本地存储模块中创建第二目录文件,该第二目录文件包括:文件路径名与第一目录文件所在存储空间的对应关系。
S724:在目标存储空间中写入文件标记、文件属性和/或文件大小,以创建共享文件对应的本地文件。
S730:根据该文件标记、文件属性和/或文件大小,对云端存储模块中的共享文件进行操作。
可选地,在本申请实施例中,步骤S710可以为上文图6中步骤S610的一种实施方式,步骤S721、S722、S724以及S730的具体方案可以与图6中步骤S621至S630的技术方案相同。相较于图6中所示方法600,本申请实施例提供的方法700新增了步骤S723。
具体地,在步骤S710中,第一设备的内核从云端存储模块获取的用于指示共享文件的文件信息包括:该共享文件的文件名、文件路径名、以及文件属性和/或文件大小。可选地,该共享文件的文件路径名可以为该共享文件在其它设备中存储的文件路径名,该共享文件可在云端存储模块以及其它设备的存储模块中保持相同的文件路径,即保持相同的目录结构。
在步骤S721和步骤S722中,第一设备的内核在其本地存储模块中创建第一目录文件,该第一目录文件包括:共享文件的文件名与共享文件对应的本地文件的所在存储空间(即目标存储空间)的对应关系。
在步骤S723中,第一设备的内核还在其本地存储模块中创建第二目录文件,该第二目录文件包括:共享文件的文件路径名与第一目录文件所在存储空间的对应关系。
具体地,第一设备的内核可根据位图存储空间中的信息,在本地存储模块中确定空闲的第二inode存储空间和第二block存储空间,该第二blcok存储空间中可写入该第二目录文件的文件数据,即共享文件的文件路径名与第一目录文件所在存储空间的对应关系。该第二inode存储空间中可写入第二block存储空间的地址指针以及该第二目录文件的相关属性。
其中,第一目录文件所在存储空间具体可以为:第一目录文件的第一inode存储空间,该第一inode存储空间具有对应的inode号。在该情况下,上述共享文件的文件路径名与第一目录文件所在存储空间的对应关系具体可以为:共享文件的文件路径名与第一inode存储空间的inode号的对应关系。
需要说明的是,在本申请实施例中,共享文件的文件路径名可包括多级路径名,在该情况下,第一设备的内核可在本地存储模块中建立多个第二目录文件,其中,一个第二目录文件可用于记录最后一级路径名与第一目录文件所在存储空间的对应关系,而其它第二目录文件可用于记录上一级路径名与下一级路径名所在第二目录文件的存储空间的对应关系。
通过本申请实施例的技术方案,第一设备的内核在本地存储模块中创建第二目录文件,该第二目录文件可以记录共享文件的文件路径名,以及该文件路径名与第一目录文件的对应关系。其中,第一目录文件中包括:共享文件的文件名与本地文件的对应关系。因此,通过该第二目录文件以及第一目录文件的建立,可以使得共享文件在本地存储模块中对应的本地文件与共享文件的文件名以及文件路径名相对应,该本地文件在本地存储模块中的目录结构与共享文件在云端存储模块中的目录结构可保持相同。通过该技术方案,有利于共享文件在云端存储模块以及多个设备的本地存储模块保持一致的目录结构,从而便于用户在多个设备中对该共享文件的使用,提升用户对共享文件的使用体验。
图8示出了本申请实施例提供的另一共享文件的操作方法800的示意性流程框图。
如图8所示,该操作方法800可包括以下步骤。
S811:向云端存储模块发送文件查询命令,该文件查询命令用于指示云端存储模块在其存储空间中查询共享文件。
S812:接收云端存储模块发送的用于指示共享文件的文件信息。
S820:根据文件信息,在本地存储模块中创建共享文件对应的本地文件,该本地文件包括:用于标识共享文件位于云端存储模块的文件标记。
S830:根据文件标记,对云端存储模块中的共享文件进行操作。
可选地,在本申请实施例中,步骤S811至S812可以为上文图3中步骤S310的一种实施方式,步骤S820和S830可以与上文图3中步骤S320和S330的技术方案相同。
具体地,在步骤S811中,第一设备的内核可向云端存储模块发送文件查询命令。
可选地,在一些实施方式中,第一设备的内核可先获取第一设备上登录的用户信息,且根据该用户信息,向云端存储模块发送文件查询命令。
具体地,第一设备的用户空间可设置有与内核相互通信的接口模块,该接口模块可获取用户空间中其它应用程序模块写入的用户信息,且将该用户信息发送至内核。其中,该用户信息例如可以包括:用户的账户以及密码信息。根据该用户信息,第一设备的内核可判断是否需要向云端存储模块发送文件查询命令以实现云端存储设备中的共享文件在第一设备的本地存储模块中的同步。当用户信息与预设信息不符时,则第一设备的内核不向云端存储模块发送文件查询命令,该云端存储设备中的共享文件未在第一设备的本地存储模块中实现同步,从而保障用户的文件数据不被泄露。反之,当用户信息与预设信息相符时,第一设备的内核才向云端存储模块发送文件查询命令,以实现云端存储设备中的共享文件在第一设备的本地存储模块中的同步,从而便于用户通过第一设备对云端存储设备中的共享文件进行操作。
在云端存储模块仅存储有对应于上述用户信息的共享文件的情况下,在云端存储模块接收文件查询命令后,该云端存储模块可根据该文件查询命令查询其存储空间的共享文件,且获取用于指示该共享文件的文件信息。
在云端存储模块存储有多个用户的共享文件的情况下,文件查询命令可包括:用户信息,在云端存储模块接收文件查询命令后,该云端存储模块用于根据文件查询命令中的用户信息,确定其存储空间中对应于该用户信息的共享文件。通过该实施方式,能够保证用户对于云端存储模块中共享文件使用的可靠性,进而提升用户的使用体验。
可选地,在一些实施方式中,云端存储模块中可单独存储用于指示共享文件的文件信息,例如上文所述的文件名、文件大小、文件属性以及文件路径名等等。在该实施方式下,云端存储模块可根据文件查询命令,直接在其存储空间中查询得到用于指示共享文件的文件信息,然后将该文件信息再发送给第一设备的内核。
或者,在另一些实施方式中,云端存储模块也可不单独存储用于指示共享文件的文件信息,当云端存储模块接收文件查询命令时,其可根据其中存储的共享文件的文件数据,确定用于指示该共享文件的文件信息,例如,云端存储模块可根据其中存储的共享文件的文件数据,确定该共享文件的文件大小等文件信息。
在步骤S812中,第一设备的内核可接收云端存储模块发送的用于指示共享文件的文件信息。
需要说明的是,结合图4中第一设备400的结构示意图,在本申请实施例中,第一设备400的内核401向云端存储模块403发送的文件查询命令为经过内核401中网络协议层430封装后的查询命令网络数据包,云端存储模块403能够对该查询命令网络数据包进行解析,以恢复得到文件查询命令。对应的,云端存储模块403向第一设备400的内核401发送的文件信息同样为经过封装后的文件信息网络数据包,当第一设备400的内核401接收该文件信息网络数据包后,该内核401中的网络协议层430能够对该文件信息网络数据包进行解析,以恢复得到文件信息,且网络协议450层将该文件信息发送至内核401中的云端文件系统410,以使得该云端文件系统410根据该文件信息执行后续操作。
通过本申请实施例的技术方案,第一设备的内核可根据第一设备自身的实际需求,实时向云端存储模块发送文件查询命令,以使得该第一设备的内核能够接收云端存储模块中共享文件的文件信息,并根据该文件信息实现共享文件在本地存储模块中的同步。通过该技术方案,在第一设备的本地存储模块中,共享文件的同步可以根据第一设备自身情况进行,因而同步方式较为灵活,能够提升用户对第一设备的使用体验。
进一步地,第一设备的内核可根据第一设备上登录的用户信息,向云端存储模块发送文件查询命令以实现共享文件在本地存储模块中的同步。通过该技术方案,经过用户信息的验证,可以保障云端存储模块中的共享文件在本地存储模块同步的安全性。
可选地,在一些实施方式中,上述图8中的步骤S811可以包括:根据预设时间段,定期向云端存储模块发送文件查询命令,对应的,步骤S812可以包括:定期接收云端存储模块发送的用于指示共享文件的文件信息。
通过该实施方式的技术方案,第一设备的内核定期向云端存储模块发送文件查询命令,从而使得该内核可以定期获取共享文件的文件信息,进而定期根据该文件信息在第一设备的本地存储模块中同步云端存储模块中的共享文件。因此,通过该技术方案,可以实现将云端存储模块中的共享文件持续且可靠的同步于第一设备的本地存储模块中,以满足用户对于持续产生的共享文件的使用需求。
图9示出了本申请实施例提供的另一共享文件的操作方法900的示意性流程框图。
如图9所示,该操作方法900可包括以下步骤。
S910:第一次向云端存储模块发送文件查询命令,该文件查询命令用于指示云端存储模块查询其存储空间中存储的全部共享文件。
S920:接收云端存储模块发送的用于指示该全部共享文件中每一个共享文件的文件信息。
S930:根据全部共享文件的文件信息,在本地存储模块中创建全部共享文件对应的本地文件。
S940:根据预设时间段,定期向云端存储模块发送文件查询命令,该文件查询命令用于指示云端存储模块查询其存储空间中前一次查询时间至本次查询时间之间新增的共享文件。
S950:接收云端存储模块发送的新增共享文件的文件信息。
S960:根据新增共享文件的文件信息,在本地存储模块中创建新增共享文件对应的本地文件。
S970:根据文件标记,对云端存储模块中的共享文件进行操作。
具体地,在步骤S910中,第一设备的内核可第一次向云端存储模块发送文件查询命令。具体地,在第一设备出厂后,作为新设备被用户第一次使用时,第一设备的内核可向云端存储模块第一次发送文件查询命令。
可选地,在一些实施方式中,第一设备的内核可先获取用户在第一设备的用户空间中写入的用户信息,然后根据该用户信息,第一次向云端存储模块发送文件查询命令。
在云端存储模块仅存储有对应于上述用户信息的目标用户的共享文件的情况下,由于第一设备为新设备,其第一次向云端存储模块发送文件查询命令,因此,该文件查询命令可用于指示云端存储模块查询其存储空间中存储的全部共享文件。
在云端存储模块存储有多个用户的共享文件的情况下,第一设备第一次向云端存储模块发送的文件查询命令中可包括登录于第一设备的用户信息,该文件查询命令可用于指示云端存储模块查询其存储空间中对应于该用户信息的全部共享文件。
该云端存储模块接收文件查询命令后,查询其存储空间中全部共享文件或者对应于用户信息的全部共享文件,并获取用于指示该全部共享文件中每一个共享文件的文件信息。
在步骤S920至S930中,第一设备的内核接收云端存储模块发送的用于指示全部共享文件中每一个共享文件的文件信息后,该第一设备的内核根据每一个共享文件的文件信息,在本地存储模块中创建每一个共享文件的本地文件。具体地,该创建本地文件的相关技术方案可以参见上文实施例的相关描述,此处不做过多赘述。
进一步地,在步骤S940中,在第一设备的内核第一次向云端存储模块发送文件查询命令后,每间隔预设时间段,该第一设备的内核向云端存储模块发送一次文件查询命令。
在本申请实施例中,云端存储模块在每次接收文件查询命令时,可记录对应的查询时间,即在云端存储模块第一次接收文件查询命令时,其可记录第一次查询时间,相应的,在云端存储模块第二次接收文件查询命令时,其可记录第二次查询时间。在第一设备的内核第二次向云端存储模块发送文件查询命令后,该云端存储模块可根据该文件查询命令查询其存储空间中第一次查询时间至第二次查询时间之间新增的共享文件,且获取用于指示该新增共享文件中每一个共享文件的文件信息。
可选地,在一些实施方式中,第一设备的内核第一次向云端存储模块发送的文件查询命令可以为第一文件查询命令,而第一设备的内核第二次以及后续向云端存储模块发送的文件查询命令可以为第二文件查询命令。因此,第一文件查询命令可用于直接指示云端存储模块查询其中存储的全部共享文件,而第二查询命令可用于指示云端存储模块查询两次查询时间之间新增的共享文件。
或者,在另一些实施方式中,第一设备的内核第一次向云端存储模块发送的文件查询命令与后续向云端存储模块发送的文件查询命令是相同的命令,在云端存储模块第一次接收该文件查询命令时,在此之前没有记录查询时间,因而,云端存储模块查询其中存储的全部共享文件。而在云端存储模块第二次以及后续接收该文件查询命令时,在此之前记录有第一次查询时间,因而,云端存储模块查询两次查询时间之间新增的共享文件。
与步骤S920至S930类似,在步骤S950至步骤S960中,第一设备的内核接收云端存储模块发送的用于指示该新增共享文件中每一个共享文件的文件信息后,该第一设备的内核根据每一个共享文件的文件信息,在本地存储模块中创建每一个共享文件的本地文件。具体地,该创建本地文件的相关技术方案可以参见上文实施例的相关描述,此处不做过多赘述。
在步骤S970中,第一设备在后续运行过程中,可获取本地文件的操作命令,且根据本地文件中的文件标记,对云端存储模块中的共享文件进行操作。
通过本申请实施例的技术方案,在实现将云端存储模块中的共享文件持续同步于第一设备的本地存储模块的同时,还可以保证云端存储模块中的不断新增的共享文件不被遗漏的同步于第一设备的本地存储模块,从而进一步提升用户通过第一设备对云端存储模块中共享文件的使用体验。
图10示出了本申请实施例提供的另一共享文件的操作方法1000的示意性流程框图。
如图10所示,该操作方法1000可包括以下步骤。
S1010:获取云端存储模块中用于指示共享文件的文件信息,该共享文件包括其它设备上传至云端存储模块的文件。
S1020:根据文件信息,在本地存储模块中创建共享文件对应的本地文件,该本地文件包括:用于标识共享文件位于云端存储模块的文件标记。
S1031:获取本地文件的操作命令。
S1032:根据操作命令,访问本地存储模块中的本地文件。
S1033:根据本地文件中的文件标记以及操作命令,对云端存储模块中的共享文件进行操作。
可选地,在本申请实施例中,步骤S1031至S1033可以为上文图3中步骤S330的一种实施方式,步骤S1010和S1020可以与上文图3中步骤S310和S320的技术方案相同。
具体地,在步骤S1031中,第一设备的内核可获取来自用户空间对于本地文件的操作命令,可选地,该操作命令可以为用户空间中的应用程序根据用户的操作形成的操作命令。
需要说明的是,通过上文实施例的技术方案,第一设备的内核在本地存储空间中创建共享文件对应的本地文件后,第一设备的用户空间即可访问该本地文件,并形成针对该本地文件的操作命令。但该本地文件不同于常规的包括有文件数据的普通文件,而是第一设备的内核根据共享文件的文件信息在本地存储模块中创建的特殊文件,其不包括文件数据,而包括文件标记,该文件标记用于标识该本地文件实际的文件数据(即共享文件)位于云端存储模块。
作为示例而非限定,该本地文件的操作命令可以包括:读(read)命令,写(write)命令、删除(delete)命令,打开(open)命令等等。为了实现对本地文件的操作,该本地文件的操作命令除了能够指示操作类型以外,还可包括:用于指示本地文件的文件信息。作为示例而非限定,该本地文件的文件信息可以包括:文件名、文件路径名等等。
如上文实施例所述,在本申请实施例中,本地文件对应于云端存储模块中的共享文件,该本地文件的文件名与云端存储模块中共享文件的文件名相同,另外,本地文件的文件路径名与云端存储模块中共享文件的文件路径名相同。
在步骤S1032中,第一设备的内核能够根据操作命令中的文件信息,访问本地存储模块中的本地文件。
具体地,第一设备的内核根据操作命令中的文件信息,通过上述目录文件访问本地存储模块中本地文件所在的目标存储空间,进而读取该目标存储空间中的文件标记、文件大小和/或文件属性等信息。
在步骤S1033中,第一设备的内核可根据该本地文件中的文件标记以及操作命令,对云端存储模块中的共享文件进行操作。
具体地,根据本地文件中的文件标记,可以确定该本地文件对应的共享文件实际存储于云端存储模块,在该情况下,可以根据本地文件的操作命令,对云端存储模块中的共享文件进行操作。
通过本申请实施例的技术方案,在第一设备的运行过程中,该第一设备的内核能够根据统一的本地文件的操作命令,访问本地存储模块中的本地文件,并进一步根据本地文件中的文件标记实现对云端存储模块中的共享文件的操作。整个技术方案能够保持第一设备原生的用户空间,不涉及用户空间中原生的服务改动,用户空间中的各个应用程序均能通过访问该本地文件进而对共享文件进行操作,从而提升用户对第一设备的使用体验。
图11示出了本申请实施例提供的另一共享文件的操作方法1100的示意性流程框图。
如图11所示,该操作方法1100可包括以下步骤。
S1110:获取云端存储模块中用于指示共享文件的文件信息,该共享文件包括其它设备上传至云端存储模块的文件。
S1120:根据文件信息,在本地存储模块中创建共享文件对应的本地文件,该本地文件包括:用于标识共享文件位于云端存储模块的文件标记。
S1131:获取本地文件的读命令。
S1132:根据读命令,访问本地存储模块中的本地文件。
S1133:根据本地文件中的文件标记以及读命令,从云端存储模块中读取共享文件中的待编辑数据,并将该待编辑数据返回给用户空间。
S1134:获取用户空间写入的已编辑数据和写命令。
S1135:根据写命令,访问本地存储模块中的本地文件。
S1136:根据本地文件中的文件标记以及写命令,将已编辑数据写入云端存储模块以替换待编辑数据。
可选地,在本申请实施例中,步骤S1131至S1135可以为上文图3中步骤S330的另一种实施方式,步骤S1110和S1120可以与上文图3中步骤S310和S320的技术方案相同。
具体地,在本申请实施例中,第一设备的内核可获取本地文件的读命令和写命令,根据该读命令和写命令,可以实现对该本地文件对应的共享文件的在线编辑以及差量同步功能。
在步骤S1131至S1133中,第一设备的内核可首先获取本地文件的读命令,根据该读命令,内核访问本地存储模块中的本地文件,并根据该本地文件中的文件标记访问云端存储模块中的共享文件。
具体地,在第一设备的内核确定本地文件中的文件标记后,该内核可将读命令中的相关信息封装为读请求网络数据包并将该读请求网络数据包发送至云端存储模块,其中,该读请求网络数据包例如可以是,基于HTTP协议的读请求网络数据包。云端存储模块接收到该读请求网络数据包后,能够解析该读请求网络数据包得到读命令中的相关信息,云端存储模块根据该相关信息确定其中共享文件中的待编辑数据后,可将该待编辑数据打包为文件网络数据包,并通过网络再发回至第一设备。第一设备的内核将该文件网络数据包进行解析得到待编辑数据,并将该待编辑数据存放至第一设备的缓存中,以向用户空间发送并读出该待编辑数据。
进一步地,在步骤S1134至S1136中,用户空间写入的已编辑数据可存放于第一设备的缓存中,第一设备的内核可从该第一设备的缓存中获取用户空间写入的已编辑数据。进一步地,第一设备的内核可根据用户空间发送的写命令,将已编辑数据写入云端存储模块以替换原始的待编辑数据。
具体地,第一设备的内核可将已编辑数据封装为文件网络数据包并将该文件网络数据包发送至云端存储模块。云端存储模块接收到该文件网络数据包后,能够解析该文件网络数据包得到已编辑数据,该已编辑数据用于覆盖替换原始的待编辑数据。
通过本申请实施例的技术方案,第一设备不需将云端存储模块中的共享文件的全部下载至本地才能实现对共享文件的编辑和修改,而可直接实现对云端存储模块中共享文件的在线编辑,与此同时,第一设备的内核与云端存储模块之间只传输共享文件中待编辑数据以及已编辑数据,从而能够减少第一设备与云端存储模块之间同步的数据量传输,加快数据同步速度,进而减少能源消耗。
上文图3至图11示出了本申请实施例提供的云端存储模块中的共享文件同步至第一设备的本地存储模块的相关方法,下面,结合图12至图13,说明本申请实施例提供的第一设备的本地存储模块中的目标文件同步至云端存储模块的相关方法。可选地,下文实施例中所述的操作方法可以与前述操作方法300至1100相互结合。例如,下文实施例中所述的操作方法可以执行于前述操作方法300至1100之后。
图12示出了本申请实施例提供的另一共享文件的操作方法1200的示意性流程框图。
如图12所示,该操作方法1200可包括以下步骤。
S1210:获取本地存储模块中目标文件的上传命令。
S1220:根据上传命令,将目标文件的文件数据和用于指示目标文件的文件信息从本地存储模块上传至云端存储模块,以作为云端存储模块中新的共享文件。
S1230:在本地存储模块中写入目标文件的文件标记。
S1240:根据目标文件的文件标记,对云端存储模块中的目标文件进行操作。
具体地,在步骤S1210中,第一设备的内核获取来自用户空间的上传命令,该上传命令用于指示将本地存储模块中的目标文件上传至云端存储模块。可选地,该目标文件可以是本地存储模块中存储的任意文件,或者,该目标文件也可以是本地存储模块中存储的特定文件。
作为示例而非限定,该目标文件可以包括:访问频率小于预设频率的文件,和/或,文件大小小于预设大小的文件。通过该实施方式,将访问频率小于预设频率的文件,和/或,文件大小小于预设大小的文件上传至云端存储模块,不会影响用户对本地存储模块中访问频率较高的文件的访问,也能较大程度的提升本地存储模块的剩余存储空间,以进一步提升用户对第一设备的使用体验。
可选地,在该步骤S1210中,内核获取的上传命令可以并非来自用户的操作,而由第一设备本身自动生成。
例如,在一些实施方式中,第一设备的用户空间中设置有筛选模块,该筛选模块用于对本地存储模块中的多个文件进行筛选得到目标文件。然后,该筛选模块向内核发送目标文件的上传命令,以使得内核获取该目标文件的上传命令。
可选地,在该实施方式中,筛选模块能够定期或不定期扫描本地存储模块中的多个文件,以不断筛选得到目标文件,使得本地存储模块始终保留有较为充足的存储空间。
可选地,在该实施方式中,筛选模块可以为人工智能(Artificial Intelligence,AI)模块,其能够根据一定的规则从本地存储模块中的多个文件中筛选得到较为适宜上传至云端存储模块的目标文件。作为示例而非限定,该筛选模块可以为神经网络(NeuralNetworks)模块,其可以根据特定需求,对本地存储模块中的文件起到良好的筛选作用。
在步骤S1220中,目标文件的上传命令可以包括:用于指示目标文件的文件信息,例如:目标文件的文件名和/或文件路径名等等。内核根据该上传命令中的文件信息,访问本地存储模块中目标文件的文件数据的所在空间。
进一步地,内核可以用于实现将目标文件的文件数据以及用于指示该目标文件的文件信息从本地存储模块上传至云端存储模块。具体地,在该过程中,目标文件的文件数据和文件信息拷贝上传至云端存储模块以作为新的共享文件,且本地存储模块中存储该目标文件的文件数据的存储空间被释放,即原本存储有该目标文件的文件数据的存储空间后续可用于存储其它数据,例如存储其它文件的文件数据。
在步骤S1230至S1240中,内核在本地存储模块中写入目标文件的文件标记,该文件标记用于标识目标文件的文件数据已被上传至云端存储模块。在第一设备后续运行过程中,若用户需要对该目标文件的文件数据进行操作,可首先在本地存储模块中检查该目标文件的文件标记,并根据该文件标记的检查结果,对云端存储模块中的目标文件的文件数据进行操作。
通过本申请实施例的技术方案,第一设备的内核能够实现将本地存储模块中的目标文件的文件数据上传至云端存储模块,从而实现目标文件在云端存储模块中的同步,以使得其它设备也能通过云端存储模块获取该第一设备上产生的目标文件从而实现文件共享。与此同时,在内核将目标文件的文件数据上传至云端存储模块之后,内核还在本地存储模块中写入了该目标文件的文件标记,使得用户后续在对该目标文件的操作中,第一设备仍然能够根据用户的操作命令访问本地存储模块,且根据该本地存储模块中的文件标记,对存储于云端存储模块中的目标文件的文件数据进行正常操作,以进一步提升用户对第一设备的使用体验。
可选地,在第一设备的用户空间中设置有筛选模块,该筛选模块不需要占用宝贵的内核空间,且该筛选模块能够定期或不定期的筛选得到本地存储模块中的目标文件。在该情况下,第一设备能够自动对本地存储模块中的目标文件进行上传,而完全不需要用户的干预也能保证本地存储模块中的目标文件在云端存储模块中的同步和共享,使得用户对于多终端的文件共享具有更优的使用体验。
可选地,在一些实施方式中,用于指示所述目标文件的文件信息包括以下信息中的至少一项:目标文件的文件路径名、文件名、文件属性以及文件大小。
具体地,在该实施方式中,目标文件的文件路径名以及文件名可位于本地存储模块中的目录文件,且该文件路径名与文件名能够直接且准确的指示目标文件。另外,目标文件所在的存储空间可包括:inode存储空间以及block存储空间,其中,目标文件的文件属性以及文件大小可位于目标文件所在的inode存储空间中,该文件属性以及文件大小均属于该inode存储空间中存储的元数据。
通过该实施方式的技术方案,第一设备的内核除了将目标文件的文件数据上传至云端存储模块以外,还将用于指示该目标文件的文件信息也一并上传至云端存储模块,使得云端存储模块记录有较为完善的目标文件,且该目标文件的文件信息也可便于其它设备获取,使得其它设备可在其本地存储模块上对该目标文件进行快速同步。
图13示出了本申请实施例提供的另一共享文件的操作方法1300的示意性流程框图。
如图13所示,该操作方法1300可包括以下步骤。
S1310:获取本地存储模块中目标文件的上传命令。
S1321:根据上传命令,将目标文件的文件数据和用于指示目标文件的文件信息封装为网络数据包,并将网络数据包发送至云端存储模块。
S1322:释放本地存储模块中目标文件的文件数据所在的block存储空间。
S1323:保留本地存储模块中目标文件的元数据所在的inode存储空间,目标文件的元数据包括用于指示目标文件的文件信息。
S1330:在目标文件的inode存储空间中写入目标文件的文件标记。
S1340:根据目标文件的文件标记,对云端存储模块中的目标文件进行操作。
可选地,在本申请实施例中,步骤S1310和步骤S1340的具体实施方式可以参见上文图12所示实施例中的步骤S1210和步骤S1240的相关技术方案。步骤S1321至步骤S1323可以为上文图12所示实施例中步骤S1220的一种实现方式。步骤S1330可以为上文图12所示实施例中步骤S1230的一种实现方式。
具体地,通过步骤S1321,可以实现本地存储模块中目标文件的文件数据和文件信息拷贝上传至云端存储模块中。通过步骤S1322至步骤S1323,可以实现对该目标文件所在的本地存储空间的处理。
对于步骤S1322,在一些实施方式中,本地存储模块的位图存储空间可用于记录block存储空间的使用情况。在位图存储空间中,可将目标文件的block存储空间对应的位图标识设置为第一目标值,该第一目标值用于指示该block存储空间为空闲空间。通过对该位图存储空间中位图标识的设置,能够实现对该block存储空间的有效释放。
进一步地,对于步骤S1323,目标文件的inode存储空间被保留,即在位图存储空间中,该目标文件的inode存储空间对应的位图标识仍被保留为第二目标值,该第二目标值用于指示该inode存储空间为已被使用空间。该目标文件的inode存储空间中存储有目标文件的元数据,该元数据中包括用于指示目标文件的文件信息,例如,目标文件的文件大小、文件属性等等。
对于步骤S1330,由于目标文件的block存储空间已经被释放,因而,目标文件的文件标记较为合适的放置于目标文件的inode存储空间中。换言之,在本申请实施例中,目标文件的inode存储空间除了用于存储目标文件的元数据以外,还用于存储目标文件的文件标记。
综上,在本申请实施例的技术方案中,第一设备的内核在实现将本地存储模块中目标文件的文件数据和文件信息同步上传至云端存储模块的同时,还可释放本地存储模块中目标文件的文件数据所在的block存储空间,从而节省本地存储模块中的存储空间,保证本地存储模块具有较为充足的剩余存储空间,不会造成第一设备的卡顿,提升用户对第一设备的使用体验。与此同时,在本地存储模块中保留目标文件的inode存储空间,可以便于后续内核根据目标文件的操作命令正常访问该inode存储空间,且可根据该inode存储空间中的文件信息对云端存储模块中的目标文件进行较为准确的操作,而不会产生错误。通过该技术方案,可以提高第一设备对于云端存储模块中共享文件的处理性能,进而进一步提升用户对第一设备以及共享文件的使用体验。
上文结合图3至图13说明了本申请提供的共享文件的操作方法实施例,下面,结合图14和图15,说明本申请提供的共享文件的操作装置实施例。应理解,装置实施例与方法实施例相互对应,类似的描述可以参照方法实施例。
图14示出了本申请实施例提供的一种共享文件的操作装置1400的示意性结构框图。具体地,该操作装置1400可位于第一设备的内核,且该第一设备配置有云端存储模块和本地存储模块。
如图14所示,该共享文件的操作装置1400包括:通信模块1410和处理模块1420。具体地,该通信模块1410用于获取云端存储模块中用于指示共享文件的文件信息,共享文件包括其它设备上传至云端存储模块的文件。该处理模块1420用于根据文件信息,在本地存储模块中创建共享文件对应的本地文件,该本地文件包括:用于标识共享文件位于云端存储模块的文件标记;根据本地文件中的文件标记,对云端存储模块中的共享文件进行操作。
可选地,结合图4中所示的第一设备400,在本申请实施例中,通信模块1410可以包括图4中的网络协议层430,处理模块1420可以包括图4中的云端文件系统410。
在一些可能的实施方式中,上述文件信息包括:共享文件的文件名;处理模块1420用于:在本地存储模块中确定空闲的目标存储空间;根据共享文件的文件名和/或文件路径名,在本地存储模块中创建目录文件,该目录文件包括:文件名和/或文件路径名与目标存储空间的对应关系;在目标存储空间中写入文件标记,以创建共享文件对应的本地文件。
在一些可能的实施方式中,上述文件信息还包括:共享文件的文件属性和/或文件大小;处理模块1420用于:在目标存储空间中写入文件标记、共享文件的文件属性和/或文件大小,以创建共享文件的本地文件。
在一些可能的实施方式中,上述目标存储空间为一个目标索引节点inode存储空间,或者,目标存储空间为一个目标索引节点inode存储空间与一个目标块block存储空间。
在一些可能的实施方式中,通信模块1410用于:向云端存储模块发送文件查询命令,文件查询命令用于指示云端存储模块在其存储空间中查询共享文件;接收云端存储模块发送的用于指示共享文件的文件信息。
在一些可能的实施方式中,处理模块1420用于:获取第一设备上登录的用户信息;根据用户信息,通过通信模块1410向云端存储模块发送文件查询命令。
在一些可能的实施方式中,文件查询命令包括:用户信息,云端存储模块用于根据该用户信息,确定其存储空间中对应于该用户信息的共享文件。
在一些可能的实施方式中,通信模块1410用于:根据预设时间段,定期向云端存储模块发送文件查询命令。
在一些可能的实施方式中,通信模块1410用于:第一次向云端存储模块发送文件查询命令,文件查询命令用于指示云端存储模块查询其存储空间中存储的全部共享文件,云端存储模块用于记录第一次查询时间;根据预设时间段,定期向云端存储模块发送文件查询命令,云端存储模块用于记录每次查询时间;文件查询命令用于指示云端存储模块查询其存储空间中前一次查询时间至本次查询时间之间新增的共享文件。
在一些可能的实施方式中,处理模块1420用于:获取本地文件的操作命令;根据操作命令,访问本地存储模块中的本地文件;根据本地文件中的文件标记以及操作命令,对云端存储模块中的共享文件进行操作。
在一些可能的实施方式中,操作命令包括:写命令;处理模块1420用于:根据写命令,访问本地存储模块中的本地文件;根据本地文件中的文件标记以及写命令,将用户空间写入的已编辑数据写入云端存储模块以替换云端存储模块中的待编辑数据。
在一些可能的实施方式中,操作命令包括:读命令;处理模块1420用于:根据读命令,访问本地存储模块中的本地文件;根据本地文件中的文件标记以及读命令,从云端存储模块中读取共享文件中的待编辑数据,并将待编辑数据返回给用户空间。
在一些可能的实施方式中,处理模块1420还用于:获取本地存储模块中目标文件的上传命令;根据上传命令,通过通信模块1410将目标文件的文件数据和用于指示目标文件的文件信息从本地存储模块上传至云端存储模块,以作为云端存储模块中新的共享文件;在本地存储模块中写入目标文件的文件标记;根据目标文件的文件标记,对云端存储模块中的目标文件进行操作。
在一些可能的实施方式中,用于指示目标文件的文件信息包括以下信息中的至少一项:目标文件的文件路径名、文件名、文件属性以及文件大小。
在一些可能的实施方式中,通信模块1410用于:将目标文件的文件数据和用于指示目标文件的文件信息封装为网络数据包,并将网络数据包发送至云端存储模块;处理模块1420用于:释放本地存储模块中目标文件的文件数据所在的块block存储空间;保留本地存储模块中目标文件的元数据所在的索引节点inode存储空间,目标文件的元数据包括用于指示目标文件的文件信息。
在一些可能的实施方式中,处理模块1420用于:在目标文件的索引节点inode存储空间中写入目标文件的文件标记。
在一些可能的实施方式中,处理模块1420用于:获取筛选模块发送的目标文件的上传命令,其中,筛选模块位于第一设备的用户空间,筛选模块用于对本地存储模块中的多个文件进行筛选得到目标文件。
图15示出了本申请实施例提供的另一共享文件的操作装置1500的示意性结构框图。
如图15所示,该操作装置1500包括:至少一个处理器1510和存储器1520,该存储器1520用于存储程序,该至少一个处理器1510用于从存储器1520中调用并运行该程序以执行上述任一实施例所提供的文件的操作方法。
图16示出了本申请实施例提供的一种计算机设备1600的示意性结构框图。
如图16所示,该计算机设备1600被配置为连接于云端存储器以及本地存储器,该计算机设备1600包括:上文任一实施例中的共享文件的操作装置1400或操作装置1500。
具体地,在本申请实施例中,云端存储器包括但不限于是云盘或者网盘。本地存储器包括但不限于是非易失性存储器、磁盘、光盘、U盘或者安全数码卡。可选地,该计算机设备1600包括但不限于是终端设备,例如,手机、个人计算机等等。
图17示出了本申请实施例提供的一种共享文件系统1700的示意性结构框图。
如图17所示,该文件的共享文件系统1700包括:云端存储器1710、本地存储器1720以及上文任一实施例中的计算机设备1600。
具体地,该云端存储器1710、本地存储器1720以及计算机设备1600的相关技术方案可以参见上文实施例的相关描述。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当该计算机程序在计算机设备上运行时,使得计算机设备执行上述任一实施例所提供的共享文件的操作方法。
本申请实施例还提供一种包含计算机程序的计算机程序产品,当其在计算机设备上运行时,使得计算机设备执行上述任一实施例所提供的共享文件的操作方法。
本申请实施例还提供一种芯片,该芯片包括处理器与数据接口,其中,处理器通过所述数据接口读取存储器上存储的指令,以执行上述任一实施例所提供的共享文件的操作方法。
在具体实现过程中,该芯片可以为中央处理器(CPU)、微控制器(MicroController Unit,MCU)、微处理器(Micro Processing Unit,MPU)、数字信号处理器(DSP)、片上系统(System On Chip,SoC)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或可编辑逻辑器件(programmable logic device,PLD)的形式实现。
可选地,在具体实现中,该处理器的个数不做限制。该处理器是通用处理器,可选地,该通用处理器能够通过硬件来实现或通过软件来实现。当通过硬件实现时,该处理器是逻辑电路、集成电路等;当通过软件来实现时,该处理器是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器集成在处理器中,位于该处理器之外,独立存在。
上述实施例,全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。
可选地,所述计算机为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令能够存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。
所述计算机可读存储介质是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质,例如固态硬盘。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示存在三种关系,例如,A和/或B,表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c是单个或者多个。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员能够意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员能够对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员能够清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,请参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,能够通过其它的方式实现。
例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时能够有另外的划分方式,例如多个模块或组件结合或者集成到另一个系统,或一些特征能够被忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接是通过一些接口,装置或模块的间接耦合或通信连接,是电性,机械或其它的形式。
可选地,在本申请各个实施例中的各功能模块能够集成在一个处理装置中,可选地,是各个模块单独物理存在,或者两个或两个以上模块集成在一个模块中。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,能够存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分能够以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种能够存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。