WO2023158440A1 - Data migrations - Google Patents

Data migrations Download PDF

Info

Publication number
WO2023158440A1
WO2023158440A1 PCT/US2022/017056 US2022017056W WO2023158440A1 WO 2023158440 A1 WO2023158440 A1 WO 2023158440A1 US 2022017056 W US2022017056 W US 2022017056W WO 2023158440 A1 WO2023158440 A1 WO 2023158440A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
data structure
processor
program
examples
Prior art date
Application number
PCT/US2022/017056
Other languages
French (fr)
Inventor
Irwan Halim
Jakub Maciej NYCKOWSKI
Original Assignee
Hewlett-Packard Development Company, L.P.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett-Packard Development Company, L.P. filed Critical Hewlett-Packard Development Company, L.P.
Priority to PCT/US2022/017056 priority Critical patent/WO2023158440A1/en
Publication of WO2023158440A1 publication Critical patent/WO2023158440A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/119Details of migration of file systems

Definitions

  • Figure 1 is a flow diagram illustrating an example of a method for data migration
  • Figure 2 is a block diagram of an example of an apparatus that may be utilized to migrate data in accordance with some of the techniques described herein;
  • Figure 3 is a block diagram illustrating an example of a computer- readable medium for data migration
  • Figure 4 is a block diagram of an example of an apparatus that may be utilized to migrate data in accordance with some of the techniques described herein.
  • Data is information that is represented, stored, and/or transferred electronically.
  • data may be stored in an electronic memory device.
  • Some approaches to data backup may include performing a full disk backup, manually selecting files or folders for backup, or cloud backup.
  • Full disk backup may consume a large quantity of storage and may present obstacles when transferring the data to a different device.
  • Some cloud backup approaches may allow transitioning to a different device, but may rely on different (e.g., inconsistent) backup procedures from individual applications.
  • Some approaches may lack control over the backed-up data, may exhibit account conflicts, and/or may be contingent on Internet access, etc.
  • Some manual backup approaches may fail to capture some data types utilized for application operations.
  • Some examples of the techniques described herein enhance the functioning of electronic devices (e.g., computing devices) by enhancing data access and/or control in data migration.
  • Some examples of the techniques described herein may provide approaches to intelligently identify data associated with a program, classify data (e.g., classify data as a configuration file, binary file, database, etc.), and/or determine data accessed by a user account by analyzing data access operations (e.g., access requests, timestamps, etc.).
  • Some examples of the techniques described herein may identify a set of installed programs and may provide data migration (e.g., backup and/or transfer) of all files related to a program, configuration files related to a program (without other files, for instance), and/or selected file types related to a program, etc.
  • data migration e.g., backup and/or transfer
  • An electronic device is a device that includes electronic circuitry (e.g., integrated circuitry, semiconductor chip(s), etc.). Examples of electronic devices include computing devices.
  • a computing device is an electronic device that includes a processor (e.g., general-purpose processor, central processing unit (CPU), etc.).
  • a computing device includes a motherboard, processor, memory, and/or graphics processing unit (GPU), etc. Examples of a computing device include a laptop computer, desktop computer, smartphone, tablet device, game console, etc.
  • Some computing devices may utilize circuitry (e.g., controller(s) and/or processor(s), etc.) to perform an operation or operations.
  • computing devices execute instructions stored in memory to perform the operation(s).
  • Instructions may be code and/or programming that specifies functionality or operation of the circuitry.
  • instructions may be stored in memory (e.g., Read-Only Memory (ROM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), flash memory, random-access memory (RAM), dynamic random-access memory (DRAM), synchronous DRAM (SDRAM), magnetoresistive random-access memory (MRAM), phase-change random-access memory (PCRAM), hard disk drive (HDD), solid state drive (SSD), optical drive, etc.).
  • ROM Read-Only Memory
  • EPROM Erasable Programmable Read-Only Memory
  • EEPROM Electrically Erasable Programmable Read-Only Memory
  • flash memory e.g., Random-access memory (RAM), dynamic random-access memory (DRAM), synchronous DRAM (SDRAM), magnetoresistive random-access memory (MRAM), phase-change random-access memory (PCRAM), hard disk drive (HDD), solid state drive (
  • an electronic device may be linked to another electronic device or devices using a wired link.
  • an electronic device e.g., computing device
  • Examples of a communication interface may include a Serial Peripheral Interface (SPI), Inter-Integrated Circuit (I2C) interface, general purpose input/output (GPIO) interface, Universal Serial Bus (USB) interface, etc.
  • SPI Serial Peripheral Interface
  • I2C Inter-Integrated Circuit
  • GPIO general purpose input/output
  • USB Universal Serial Bus
  • an electronic device may be linked to another electronic device with a wireless link.
  • an electronic device may include a wireless communication interface to send and/or receive wireless (e.g., radio frequency (RF)) signals.
  • wireless communication interfaces may include an Institute of Electrical and Electronics Engineers (IEEE®) 802.11 (WI-FI®) interface, Bluetooth® interface, cellular (e.g., 3G, Long-Term Evolution (LTE ), 4G, 5G, etc.) interface, etc.
  • Figure 1 is a flow diagram illustrating an example of a method 100 for data migration.
  • the method 100 and/or a method 100 element or elements may be performed by an apparatus (e.g., electronic device, computing device, etc.).
  • the method 100 may be performed by the apparatus 202 described in relation to Figure 2.
  • an apparatus may include a processor to perform an element or elements of the method 100.
  • the method 100 includes determining 102, by a processor, a set of programs installed on a computing device.
  • a program is a set of instructions to perform an operation or operations.
  • a program may be an application.
  • a program that is installed on a computing device is executable to perform an operation(s).
  • the computing device may be able to execute instructions of the program and may have access to a component or components (e.g., library(ies), runtime file(s), configuration file(s), registry data, and/or database(s), etc.) for partial or full operation of the program.
  • a component or components e.g., library(ies), runtime file(s), configuration file(s), registry data, and/or database(s), etc.
  • installing a program may include storing (e.g., downloading and storing) instructions (e.g., a file(s)) of the program, creating a directory(ies) (e.g., folder(s)) related to the program, registering the program with an operating system (OS), patching (e.g., updating) the program, storing a runtime file(s) (e.g., .NET, DirectX, C++, etc.), storing a library(ies) (e.g., dynamic link library(ies) (DLL(s))), and/or creating a launch icon, etc.
  • OS operating system
  • patching e.g., updating
  • storing a runtime file(s) e.g., .NET, DirectX, C++, etc.
  • storing a library(ies) e.g., dynamic link library(ies) (DLL(s))
  • DLL(s) dynamic link library
  • the processor determines 102 the set of programs from an OS. For instance, the processor may determine 102 the set of installed programs by utilizing an OS application programming interface (API) to produce the set of programs. In some examples, the processor may execute a function of an OS API to produce the set of programs (e.g., to output a list of installed programs). In some examples, the processor may query an installation database and/or registry (e.g., Microsoft Installer (.MSI) database, Debian Package (dpkg) list, etc.) to determine files that were part of the installation package of a program. In some examples, the set of programs may include a list of installed programs, version(s), file(s) included in the installation package(s), and/or installed location(s).
  • API OS application programming interface
  • the processor may query an installation database and/or registry (e.g., Microsoft Installer (.MSI) database, Debian Package (dpkg) list, etc.) to determine files that were part of the installation package of a program.
  • the set of programs may
  • the method 100 includes constructing 104, by the processor, a data structure based on the set of programs.
  • a data structure is an arrangement or organization of data. Examples of a data structure include a database, table, array, list, linked list, tree, stack, JavaScript Object Notation (JSON) file, Extensible Markup Language (XML) file, etc.
  • Constructing 104 the data structure may include allocating space (e.g., a range of addresses) in memory.
  • the data structure may be arranged based on the set of programs. For instance, the data structure may be sorted (e.g., alphabetically sorted, numerically sorted, etc.) and/or indexed according to the set of programs.
  • the data structure may be accessible based on the set of programs. For instance, an entry of the data structure may be looked up using a program identifier (e.g., name, index number, etc.).
  • An entry is data associated with a program. For example, an entry may indicate a file(s), data, value, and/or other information that is utilized or accessed by a program.
  • the method 100 includes detecting 106, using a file system filter driver, an access request to a file system on the computing device.
  • the processor may detect an access request to a file system using a filter driver.
  • a file system is a data structure and/or function(s) utilized by an OS to access (e.g., read and/or write) data in memory (e.g., RAM and/or storage, etc.).
  • a filter driver is a driver (e.g., set of instructions) at a kernel level of an OS to monitor and/or control access to memory.
  • the file system filter driver may be included at a kernel level of an OS of the computing device.
  • An OS may be divided into levels, including an application level and a kernel level.
  • the application level may provide an application or applications for user interaction.
  • the kernel level (e.g., OS core) may provide functions to interface with computing device hardware (e.g., processor, memory, GPU, port(s), and/or communication hardware, etc.).
  • the application level may correspond to an application space in memory and/or the kernel level may correspond to a kernel space in memory.
  • the application space may have access to a limited portion of the memory and/or the kernel space may have access to the memory (e.g., all of the memory).
  • a filter driver may monitor and/or control access to RAM and/or a storage device(s) (e.g., disk drives) of the computing device. For instance, the filter driver may monitor and/or control access to the file system in memory (e.g., RAM and/or storage device(s)). In some examples, the filter driver may be separate from a memory driver (e.g., RAM driver, disk driver, external storage driver, and/or optical drive driver, etc.) at the kernel level.
  • a memory driver e.g., RAM driver, disk driver, external storage driver, and/or optical drive driver, etc.
  • An access request is a request to access memory (e.g., a file system).
  • a program at the application level, for example
  • an access request may be an input/output (I/O) request.
  • the access request may be passed from the application level to the kernel level to handle the access request.
  • the access request may be passed to the filter driver at the kernel level.
  • the filter driver may detect 106 the access request when the access request is provided to the filter driver. For instance, the filter driver may inspect an I/O request to a file system on the computing device.
  • the filter driver may be a pre-input driver, where the access request is provided to the filter driver before a memory driver.
  • the access request may be provided to the filter driver, which may pass the access request to a memory driver.
  • the memory driver may interact with memory hardware to fulfill the access request in some cases.
  • the filter driver may be a post-input driver, where the access request is provided to the filter driver after a memory driver.
  • the access request may be provided to the filter driver after a memory driver.
  • the method 100 includes updating 108, by the processor, the data structure based on the access request.
  • the processor may store information in the data structure based on information indicated by the access request.
  • an access request may indicate information to access the memory.
  • an access request may indicate (e.g., include) a user account (e.g., user name, user identifier, etc.), requesting program name and/or process name, device identifier (DID) (e.g., identifier of a target memory device and/or device identifier, etc.), read or write instruction, access type (e.g., read (without write), write (without read), or read-write), timestamp, file name, file type (e.g., file extension, .bin for a binary file, .config for a configuration file, .reg for registry data, .exe for an executable file, etc.), and/or location (e.g., path), etc.
  • a user account e.g., user name, user identifier, etc.
  • DID device identifier
  • access type e.g., read (without write), write (without read), or read-write
  • timestamp e.g.,
  • the processor may update 108 the data structure by storing a piece or pieces of information indicated by the access request in the data structure. For instance, the processor may utilize the requesting program name and/or requesting process name to store, in the data structure, an entry or entries of the information in association with a program.
  • an entry of the data structure indicates a file corresponding to a program of the set of programs.
  • an entry of the data structure indicates a configuration file corresponding to a program of the set of programs.
  • an entry of the data structure indicates registry data corresponding to a program of the set of programs.
  • an entry of the data structure indicates a user account association to a program of the set of programs.
  • an entry of the data structure indicates a time association (e.g., timestamp(s) and/or time period(s) association).
  • an entry of the data structure indicates an access type(s) (e.g., read, write, or read-write).
  • an entry or entries corresponding to a program may indicate a file(s) accessed by the program, registry data (e.g., value(s)) accessed by the program, time association, access type, and/or a user account that utilized the program.
  • the method 100 may include detecting multiple access requests and/or performing multiple updates to the data structure.
  • the processor e.g., filter driver
  • the processor may update the data structure to indicate a file access history, process(es) that accesses a file(s), user account associated with file access, and/or another variable(s) available to the file system.
  • using the filter driver may ensure that the access request(s) (e.g., all I/O requests) passes through the filter driver.
  • Each access request (e.g., file open request, write request, etc.) may be an I/O request from the application level to the file system to the memory.
  • the filter driver may be arranged above the file system in terms of OS levels.
  • an access request may include (but is not limited to) file name, process information, user account information, etc., which may pass through the filter driver.
  • the filter driver may create usage patterns, file-user-process associations, access history, file ownership, and/or another kind of association in the data structure.
  • the data structure may indicate files and/or registry values that are accessed by a program.
  • the data structure may indicate access type(s) (e.g., files that were read and not written, files that are read and written, and/or files that are written and not read).
  • the data structure may indicate which user account and process that accessed the files.
  • the method 100 includes migrating 110, by the processor, data based on the data structure.
  • migrating 110 data may include copying, storing, backing up, and/or transferring data.
  • migrating the data may include backing up the data to a storage device based on the data structure.
  • migrating 110 the data based on the data structure may include migrating data associated with a program of the set of programs.
  • the data structure may indicate data (e.g., an executable file(s), database file(s), registry data, binary file(s), configuration file(s), and/or other data, etc.) associated with a program.
  • the data indicated as associated with a program may be copied, stored, backed up, and/or transferred. This may allow migrating data (e.g., all data or a selection of data) utilized by a program to operate and/or data created by a program.
  • the processor may read the data structure to determine data to migrate.
  • the processor may migrate data indicated at a location(s) and/or path(s) in an entry(ies) corresponding to a program indicated by the data structure.
  • the method 100 may include filtering the data based on a data type selection associated with a program.
  • a data type selection is an indication of a type or types of data.
  • a data type selection may indicate a category or categories of data types (e.g., configuration file(s), registry data, database data, file(s) associated with a user account, all files associated with a program, and/or file(s) created by the program, etc.).
  • the data type selection may indicate all files that are associated with a program or process name.
  • the data type selection may indicate files that were accessed by a user account or written by a user account (e.g., all files created under a user account, such as “Lisa.”).
  • the data type selection may indicate files with an extension(s) (e.g., as configuration files with a .config, .cfg, .cnf, .conf, or .ini extension) and/or files in a folder(s) (e.g., configuration folder).
  • the data type selection may indicate files with a pattern (e.g., determined with content pattern and/or bit pattern recognition). Examples of a content pattern may include configuration files that are text files with a structure (e.g., JSON, XML, initialization (INI), etc., structure). Examples of a bit pattern may include a zip file bit pattern, executable file bit pattern, etc.
  • the data type selection may indicate registry data (e.g., values) that were accessed by a program.
  • the data type selection may indicate data (e.g., file(s), registry data, etc.) associated with access requests within a time period.
  • the data type selection may indicate files and/or data associated with access request with timestamps within a specified time period(s) (e.g., date range(s), time range(s), between January 15, 2020 at 3 pm and December 20, 2020 at 5 pm, between 7 am and 5 pm each day over the last week, etc.).
  • the data type selection may indicate files and/or data with an access type (e.g., read, write, or read-write).
  • the data type selection may indicate data (e.g., file(s), registry data, etc.) that excludes data with an exclusion criterion or criteria.
  • the data type selection may indicate data not on an exclusion list, where the exclusion list may indicate data to be excluded (e.g., data associated with a program, configuration file(s), registry data, data associated with an access request(s) within a time period(s), data with an access type(s), and/or data associated with a user account(s), etc.).
  • the data type selection may indicate data associated with a program(s) except for data associated with an excluded program(s) and/or criteria.
  • filtering may be performed for all programs in the set of programs, for a selection of programs, or for a program(s) utilized in association with a user account, for instance.
  • the processor may filter the data to migrate data that meets the condition(s) of the data type selection. For instance, the processor may migrate (e.g., backup, copy, store, transfer, and/or send, etc.) data in accordance with the data type selection.
  • the filtering may exclude (e.g., filter out) data meeting an exclusion criterion or criteria (e.g., exclusion list).
  • the processor may obtain the data type selection and/or filtering condition(s) from a user interface. For instance, the processor may produce a graphical user interface (GUI) that is presented on a display. The GUI may indicate potential data types for selection.
  • the processor may receive the data type selection via the GUI (e.g., via detected interface interaction such as a touch, click, swipe, button press, etc.).
  • the processor may receive the data type selection from another device (e.g., a remote device, networked device, input device, separate device, device outside of an office or home, etc.).
  • the processor may migrate the data based on a migration storage indicator.
  • a migration storage indicator may be an indication of a device and/or address for migrating the data. Examples of a migration storage indicator may indicate a local disk, external drive, removable storage (e.g., thumb drive, optical media, etc.), local network storage, and/or cloud storage.
  • the processor may obtain the migration storage indicator from a user interface. For instance, the processor may produce a GUI that is presented on a display. The GUI may indicate potential migration storage(s) for selection and/or may provide an input field to specify migration storage.
  • the processor may receive the migration storage indicator via the GUI (e.g., via detected interface interaction such as a touch, click, swipe, button press, etc.).
  • the processor may receive the migration storage indictor from another device (e.g., a remote device, networked device, input device, etc.).
  • the method 100 may include sending the data structure to a remote device.
  • the data structure may be sent to another apparatus, server, computing device, peer device, networked device, etc.
  • providing the data structure to a remote device may allow the remote device to start from the previously constructed and/or updated data structure.
  • providing the data structure to a remote device may allow the remote device to update from the previously constructed and/or updated data structure.
  • the processor may remove user account data and/or data produced in association with a user account (e.g., files created by the user account) before sending the data structure.
  • the method 100 may include restoring data.
  • the processor may read migrated data from migration storage (e.g., local disk, local network storage, removable storage, cloud storage, selected storage device, etc.) and store the data in memory.
  • restoring the data may include determining a set of programs installed on a computing device and automatically detecting or determining which data (e.g., backed up data) is applicable for the computing device.
  • restoring data may be performed in response to a data loss (e.g., drive failure, user error, malicious data deletion, etc.).
  • Some examples of the techniques described herein may provide a relatively smaller backup size. For instance, data corresponding to a program may be stored instead of an entire disk of data and/or folders that include other data. Some examples of the techniques described herein may consume relatively less time to backup and/or restore (relative to an entire disk backup, for instance). Some examples of the techniques described herein may allow backup and/or restoration of individual programs (while providing automatic identification of files corresponding to an application, for instance). Some examples of the techniques described herein may be program (e.g., application) agnostic. For instance, some of the techniques described herein may be performed for any program (regardless of an individual program’s internally coded backup procedure, for example). [0033] In some examples, an element or elements of the method 100 may be omitted or combined. In some examples, the method 100 may include one, some, or all of the operations, elements, etc., described in relation to any of Figures 1-4.
  • Figure 2 is a block diagram of an example of an apparatus 202 that may be utilized to migrate data in accordance with some of the techniques described herein.
  • the apparatus 202 may be an electronic device and/or computing device.
  • the apparatus 202 includes a processor 204 and/or a memory 206.
  • the apparatus 202 may include additional components (not shown) and/or some of the components described herein may be removed and/or modified without departing from the scope of this disclosure.
  • the processor 204 may be any of a CPU, a digital signal processor (DSP), a semiconductor-based microprocessor, field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), and/or other hardware device suitable for retrieval and execution of instructions stored in the memory 206.
  • the processor 204 may be coupled to the memory 206 and/or may be in electronic communication with the memory 206.
  • the processor 204 may fetch, decode, and/or execute instructions stored in the memory 206.
  • the processor 204 may include an electronic circuit or circuits that include electronic components for performing a function or functions of the instructions.
  • the processor 204 may be implemented to perform one, some, or all of the aspects, operations, elements, etc., described in relation to one, some, or all of Figures 1-4.
  • the memory 206 is an electronic, magnetic, optical, and/or other physical storage device that contains or stores electronic data (e.g., information and/or instructions).
  • the memory 206 may be, for example, RAM, EEPROM, a storage device, an optical disc, and/or the like.
  • the memory 206 may be volatile and/or non-volatile memory, such as DRAM, EEPROM, MRAM, PCRAM, memristor, flash memory, and/or the like.
  • the memory 206 may be a non-transitory tangible machine- readable storage medium (e.g., non-transitory tangible computer-readable medium), where the term “non-transitory” does not encompass transitory propagating signals.
  • the memory 206 may include multiple devices (e.g., a RAM card and an SSD).
  • the apparatus 202 may include a communication interface 224 through which the processor 204 may communicate with an external device or devices (e.g., networked device, server, smartphone, printer, etc.).
  • the communication interface 224 may include hardware and/or machine- readable instructions to enable the processor 204 to communicate with the external device or devices.
  • the communication interface 224 may enable a wired and/or wireless connection to the external device or devices (e.g., remote device(s)).
  • the communication interface 224 may include a network interface card and/or may also include hardware and/or machine- readable instructions to enable the processor 204 to communicate with various input and/or output devices. Examples of output devices include a display, etc. Examples of input devices include a keyboard, a mouse, a touch screen, etc., through which a user may input instructions and/or data into the apparatus 202.
  • the memory 206 of the apparatus 202 may store a data structure 208, program determination instructions 212, file system driver instructions 214, update instructions 216, filter instructions 218, and/or migration instructions 220.
  • the processor 204 may execute the program determination instructions 212 to determine a set of programs installed on the apparatus 202. In some examples, determining the set of programs installed on the apparatus 202 may be performed as described in relation to Figure 1 .
  • the set of programs may have corresponding program instructions 213 stored in the memory 206.
  • the data structure 208 may be an example of the data structure described in relation to Figure 1.
  • the processor 204 may execute the program determination instructions 212 to construct the data structure 208 based on the set of programs. For instance, the processor 204 may construct the data structure 208 as described in relation to Figure 1 .
  • the apparatus 202 may receive the data structure 208 from a remote device.
  • the data structure 208 may have been previously constructed by another device and sent to the apparatus 202.
  • the memory 206 may store the data structure 208 from the remote device.
  • the processor 204 may execute the program determination instructions 212 to modify the data structure 208 based on the set of programs. In some examples, the processor 204 may discard a portion of the data structure 208 that does not correspond to the set of programs. For instance, the processor 204 may determine whether a program or programs indicated in the data structure 208 are not installed on the apparatus 202. In a case that a program or programs indicated in the data structure 208 are not installed on the apparatus 202, the processor 204 may remove (e.g., discard) data corresponding to a program or programs that are not installed on the apparatus 202 in accordance with the set of installed programs. In a case that the set of installed programs includes a program or programs not indicated in the data structure 208, the processor 204 may add an indication(s) of the program(s) in the data structure 208.
  • the processor 204 executes the program instructions 213 to issue, by a program of the set of programs, an access request at an application level of an OS of the apparatus 202.
  • the access request may be issued as described in relation to Figure 1 .
  • the processor 204 may execute the program instructions 213 to issue an access request to read or write data in the memory 206.
  • the processor 204 executes the file system driver instructions 214 to detect the access request by a file system filter driver at a kernel level of the OS. In some examples, detecting the access request may be performed as described in relation to Figure 1 . For instance, the file system filter driver may receive the access request at the kernel level passed down from the application level.
  • the processor 204 executes the update instructions 216 to update, based on the access request, a portion of the data structure 208 corresponding to the program.
  • updating the data structure 208 may be performed as described in relation to Figure 1 .
  • the processor 204 may add an entry or entries associated to the program in the data structure 208 based on data indicated by the access request.
  • the processor 204 executes the filter instructions 218 to filter data based on the data structure 208.
  • filtering data based on the data structure 208 may be performed as described in relation to Figure 1.
  • the processor 204 may filter data based on a data type selection.
  • the processor 204 executes the migration instructions 220 to migrate the data.
  • migrating the data may be performed as described in relation to Figure 1 .
  • the processor 204 may backup and/or transfer the data (e.g., the filtered data).
  • the processor 204 may store the data (e.g., a backup copy of the data) in the memory 206 and/or may provide the data to the communication interface 224 to transfer the data to migration storage (e.g., removable storage, cloud storage, peer device, and/or local network storage, etc.).
  • migration storage e.g., removable storage, cloud storage, peer device, and/or local network storage, etc.
  • an element or elements of the apparatus 202 may be omitted or combined.
  • Figure 3 is a block diagram illustrating an example of a computer- readable medium 326 for data migration.
  • the computer-readable medium 326 is a non-transitory, tangible computer-readable medium.
  • the computer-readable medium 326 may be, for example, RAM, EEPROM, a storage device, an optical disc, and the like.
  • the computer-readable medium 326 may be volatile and/or non-volatile memory, such as DRAM, EEPROM, MRAM, PCRAM, memristor, flash memory, and the like.
  • the memory 206 described in relation to Figure 2 may be an example of the computer-readable medium 326 described in relation to Figure 3.
  • the computer-readable medium 326 may include data (e.g., information and/or instructions).
  • the computer-readable medium 326 may include update instructions 328, selection instructions 330, and/or migration instructions 332.
  • the update instructions 328 include instructions, when executed, cause a processor of an electronic device to update a data structure based on access requests detected at a kernel level of an OS, where the data structure maps data accessed per program.
  • the data structure may be updated as described in relation to Figure 1 and/or Figure 2.
  • the data structure may be updated with an entry associated with a program.
  • the data structure may be updated with information from an access request made by the program.
  • the data structure maps the data accessed per user account. For instance, a user account may be utilized to look up associated data (e.g., a program(s), file(s), configuration file(s), registry data, etc.) in the data structure.
  • the selection instructions 330 include instructions, when executed, cause the processor of the electronic device to determine a program selection and a data type selection.
  • the data type selection may be determined as described in relation to Figure 1 and/or Figure 2.
  • a program selection is an indication of a program or programs.
  • a program selection may indicate a program or programs (e.g., program(s) installed on a computing device).
  • the program selection may indicate a program(s) targeted for data migration.
  • the processor may obtain the program selection from a user interface.
  • the processor may produce a GUI that is presented on a display.
  • the GUI may indicate potential programs for selection.
  • the GUI may indicate a set of programs determined as described in relation to Figure 1 .
  • the processor may receive the program selection via the GUI (e.g., via detected interface interaction such as a touch, click, swipe, button press, etc.).
  • the processor may receive the program selection from another device (e.g., a remote device, networked device, input device, etc.).
  • the selection instructions 330 include instructions, when executed, cause the processor of the electronic device to determine a user account selection.
  • a user account selection is an indication of a user account(s) (e.g., user name, user identifier, etc.).
  • a user account selection may indicate a user account or accounts (e.g., user account(s) on a computing device).
  • the user account selection may indicate a user account(s) targeted for data migration.
  • the processor may obtain the user account selection from a user interface. For instance, the processor may produce a GUI that is presented on a display. The GUI may indicate potential user accounts for selection. For instance, the GUI may indicate a user account(s) set up on a computing device.
  • the processor may receive the user account selection via the GUI (e.g., via detected interface interaction such as a touch, click, swipe, button press, etc.). In some examples, the processor may receive the user account selection from another device (e.g., a remote device, networked device, input device, etc.).
  • another device e.g., a remote device, networked device, input device, etc.
  • the migration instructions 332 include instructions, when executed, cause the processor of the electronic device to migrate selected data mapped in the data structure based on the program selection and the data type selection.
  • the migration may be performed as described in relation to Figure 1 and/or Figure 2.
  • the processor may migrate data specified in the data structure in accordance with the program selection, access type selection, time association, and/or the data type selection (e.g., data that matches the program selection and the data type selection and/or excluding data that meets an exclusion criterion or criteria, etc.).
  • the migration instructions 332 may include instructions, when executed, cause the processor of the electronic device to migrate the selected data further based on a user account selection. For instance, the processor may migrate data specified in the data structure in accordance with the program selection, the data type selection, and/or the user account selection (e.g., data that matches the program selection, the data type selection, and/or the user account selection).
  • Figure 4 is a block diagram of an example of an apparatus 402 that may be utilized to migrate data in accordance with some of the techniques described herein.
  • the apparatus 402 may be an example of the apparatus 202 described in relation to Figure 2.
  • the apparatus 402 may include additional components (not shown) and/or some of the components described herein may be removed and/or modified without departing from the scope of this disclosure.
  • the components of the apparatus 402 may be examples of corresponding components (e.g., processor 204, memory 206, and/or communication interface 224) described in relation to Figure 2.
  • the processor 404 may fetch, decode, and/or execute instructions stored in the memory 406.
  • the processor 404 may be implemented to perform one, some, or all of the aspects, operations, elements, etc., described in relation to one, some, or all of Figures 1-3.
  • the memory 406 may be a non-transitory tangible machine-readable storage medium (e.g., non- transitory tangible computer-readable medium).
  • the memory 406 may be an example of the computer-readable medium 326 described in relation to Figure 3.
  • the apparatus 402 may include a communication interface 424 through which the processor 404 may communicate with an external device(s) (e.g., remote device(s), networked device, server, smartphone, etc.), input device(s), and/or output device(s).
  • the memory 406 of the apparatus 402 may store an operating system 408.
  • the operating system 408 may include an application level 410 and a kernel level 414.
  • the application level 410 may be an example of the application level described in relation to Figure 1 and/or the kernel level 414 may be an example of the kernel level described in relation to Figure 1 .
  • the application level 410 may include a program 412.
  • the program 412 may be an application to perform an operation on the apparatus 402.
  • the kernel level 414 may include a filter driver 416.
  • the filter driver 416 may be an example of the file system filter driver described in relation to Figure 1.
  • the program 412 may send an access request from the application level 410 to the kernel level 414.
  • the filter driver 416 may detect the access request and update a data structure 434 in the memory 406.
  • the apparatus 402 e.g., processor 404 may utilize the data structure 434 to migrate data as described herein.
  • an element or elements of the apparatus 402 may be omitted or combined.
  • the term “and/or” may mean an item or items.
  • the phrase “A, B, and/or C” may mean any of: A (without B and C), B (without A and C), C (without A and B), A and B (without C), B and C (without A), A and C (without B), or all of A, B, and C.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Examples of methods are described herein. In some examples, a method includes determining, by a processor, a set of programs installed on a computing device. In some examples, the method includes constructing, by the processor, a data structure based on the set of programs. In some examples, the method includes detecting, using a file system filter driver, an access request to a file system on the computing device. In some examples, the method includes updating, by the processor, the data structure based on the access request. In some examples, the method includes migrating, by the processor, data based on the data structure.

Description

DATA MIGRATIONS
BACKGROUND
[0001] Electronic technology has advanced to become virtually ubiquitous in society and has been used for many activities in society. For example, electronic devices are used to perform a variety of tasks, including work activities, communication, research, and entertainment. Different varieties of electronic circuitry may be utilized to provide different varieties of electronic technology.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] Figure 1 is a flow diagram illustrating an example of a method for data migration;
[0003] Figure 2 is a block diagram of an example of an apparatus that may be utilized to migrate data in accordance with some of the techniques described herein;
[0004] Figure 3 is a block diagram illustrating an example of a computer- readable medium for data migration; and
[0005] Figure 4 is a block diagram of an example of an apparatus that may be utilized to migrate data in accordance with some of the techniques described herein.
DETAILED DESCRIPTION
[0006] Data is information that is represented, stored, and/or transferred electronically. For example, data may be stored in an electronic memory device. Some approaches to data backup may include performing a full disk backup, manually selecting files or folders for backup, or cloud backup. Full disk backup may consume a large quantity of storage and may present obstacles when transferring the data to a different device. Some cloud backup approaches may allow transitioning to a different device, but may rely on different (e.g., inconsistent) backup procedures from individual applications. Some approaches may lack control over the backed-up data, may exhibit account conflicts, and/or may be contingent on Internet access, etc. Some manual backup approaches may fail to capture some data types utilized for application operations.
[0007] Some examples of the techniques described herein enhance the functioning of electronic devices (e.g., computing devices) by enhancing data access and/or control in data migration. Some examples of the techniques described herein may provide approaches to intelligently identify data associated with a program, classify data (e.g., classify data as a configuration file, binary file, database, etc.), and/or determine data accessed by a user account by analyzing data access operations (e.g., access requests, timestamps, etc.). Some examples of the techniques described herein may identify a set of installed programs and may provide data migration (e.g., backup and/or transfer) of all files related to a program, configuration files related to a program (without other files, for instance), and/or selected file types related to a program, etc.
[0008] An electronic device is a device that includes electronic circuitry (e.g., integrated circuitry, semiconductor chip(s), etc.). Examples of electronic devices include computing devices. A computing device is an electronic device that includes a processor (e.g., general-purpose processor, central processing unit (CPU), etc.). In some examples, a computing device includes a motherboard, processor, memory, and/or graphics processing unit (GPU), etc. Examples of a computing device include a laptop computer, desktop computer, smartphone, tablet device, game console, etc. Some computing devices may utilize circuitry (e.g., controller(s) and/or processor(s), etc.) to perform an operation or operations. In some examples, computing devices execute instructions stored in memory to perform the operation(s). Instructions may be code and/or programming that specifies functionality or operation of the circuitry. In some examples, instructions may be stored in memory (e.g., Read-Only Memory (ROM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), flash memory, random-access memory (RAM), dynamic random-access memory (DRAM), synchronous DRAM (SDRAM), magnetoresistive random-access memory (MRAM), phase-change random-access memory (PCRAM), hard disk drive (HDD), solid state drive (SSD), optical drive, etc.).
[0009] In some examples, an electronic device may be linked to another electronic device or devices using a wired link. For example, an electronic device (e.g., computing device) may include a wired communication interface for connecting electronic devices. Examples of a communication interface may include a Serial Peripheral Interface (SPI), Inter-Integrated Circuit (I2C) interface, general purpose input/output (GPIO) interface, Universal Serial Bus (USB) interface, etc.
[0010] In some examples, an electronic device (e.g., computing device) may be linked to another electronic device with a wireless link. For instance, an electronic device may include a wireless communication interface to send and/or receive wireless (e.g., radio frequency (RF)) signals. Examples of wireless communication interfaces may include an Institute of Electrical and Electronics Engineers (IEEE®) 802.11 (WI-FI®) interface, Bluetooth® interface, cellular (e.g., 3G, Long-Term Evolution (LTE ), 4G, 5G, etc.) interface, etc.
[0011] Throughout the drawings, similar reference numbers may designate similar or identical elements. When an element is referred to without a reference number, this may refer to the element generally, with and/or without limitation to any particular drawing or figure. In some examples, the drawings are not to scale and/or the size of some parts may be exaggerated to more clearly illustrate the example shown. Moreover, the drawings provide examples in accordance with the description. However, the description is not limited to the examples provided in the drawings. [0012] Figure 1 is a flow diagram illustrating an example of a method 100 for data migration. The method 100 and/or a method 100 element or elements may be performed by an apparatus (e.g., electronic device, computing device, etc.). For example, the method 100 may be performed by the apparatus 202 described in relation to Figure 2. For instance, an apparatus may include a processor to perform an element or elements of the method 100.
[0013] In some examples, the method 100 includes determining 102, by a processor, a set of programs installed on a computing device. A program is a set of instructions to perform an operation or operations. For instance, a program may be an application. A program that is installed on a computing device is executable to perform an operation(s). When a program is installed on a computing device, for instance, the computing device may be able to execute instructions of the program and may have access to a component or components (e.g., library(ies), runtime file(s), configuration file(s), registry data, and/or database(s), etc.) for partial or full operation of the program. In some examples, installing a program may include storing (e.g., downloading and storing) instructions (e.g., a file(s)) of the program, creating a directory(ies) (e.g., folder(s)) related to the program, registering the program with an operating system (OS), patching (e.g., updating) the program, storing a runtime file(s) (e.g., .NET, DirectX, C++, etc.), storing a library(ies) (e.g., dynamic link library(ies) (DLL(s))), and/or creating a launch icon, etc.
[0014] In some examples, the processor determines 102 the set of programs from an OS. For instance, the processor may determine 102 the set of installed programs by utilizing an OS application programming interface (API) to produce the set of programs. In some examples, the processor may execute a function of an OS API to produce the set of programs (e.g., to output a list of installed programs). In some examples, the processor may query an installation database and/or registry (e.g., Microsoft Installer (.MSI) database, Debian Package (dpkg) list, etc.) to determine files that were part of the installation package of a program. In some examples, the set of programs may include a list of installed programs, version(s), file(s) included in the installation package(s), and/or installed location(s).
[0015] In some examples, the method 100 includes constructing 104, by the processor, a data structure based on the set of programs. A data structure is an arrangement or organization of data. Examples of a data structure include a database, table, array, list, linked list, tree, stack, JavaScript Object Notation (JSON) file, Extensible Markup Language (XML) file, etc. Constructing 104 the data structure may include allocating space (e.g., a range of addresses) in memory. In some examples, the data structure may be arranged based on the set of programs. For instance, the data structure may be sorted (e.g., alphabetically sorted, numerically sorted, etc.) and/or indexed according to the set of programs. In some examples, the data structure may be accessible based on the set of programs. For instance, an entry of the data structure may be looked up using a program identifier (e.g., name, index number, etc.). An entry is data associated with a program. For example, an entry may indicate a file(s), data, value, and/or other information that is utilized or accessed by a program.
[0016] In some examples, the method 100 includes detecting 106, using a file system filter driver, an access request to a file system on the computing device. For instance, the processor may detect an access request to a file system using a filter driver. A file system is a data structure and/or function(s) utilized by an OS to access (e.g., read and/or write) data in memory (e.g., RAM and/or storage, etc.). A filter driver is a driver (e.g., set of instructions) at a kernel level of an OS to monitor and/or control access to memory. For instance, the file system filter driver may be included at a kernel level of an OS of the computing device.
[0017] An OS may be divided into levels, including an application level and a kernel level. The application level may provide an application or applications for user interaction. The kernel level (e.g., OS core) may provide functions to interface with computing device hardware (e.g., processor, memory, GPU, port(s), and/or communication hardware, etc.). In some examples, the application level may correspond to an application space in memory and/or the kernel level may correspond to a kernel space in memory. The application space may have access to a limited portion of the memory and/or the kernel space may have access to the memory (e.g., all of the memory).
[0018] A filter driver may monitor and/or control access to RAM and/or a storage device(s) (e.g., disk drives) of the computing device. For instance, the filter driver may monitor and/or control access to the file system in memory (e.g., RAM and/or storage device(s)). In some examples, the filter driver may be separate from a memory driver (e.g., RAM driver, disk driver, external storage driver, and/or optical drive driver, etc.) at the kernel level.
[0019] An access request is a request to access memory (e.g., a file system). For instance, a program (at the application level, for example) may issue an access request to access (e.g., read from and/or write to) memory. In some examples, an access request may be an input/output (I/O) request. In some examples, the access request may be passed from the application level to the kernel level to handle the access request. For instance, the access request may be passed to the filter driver at the kernel level. The filter driver may detect 106 the access request when the access request is provided to the filter driver. For instance, the filter driver may inspect an I/O request to a file system on the computing device. In some examples, the filter driver may be a pre-input driver, where the access request is provided to the filter driver before a memory driver. For instance, the access request may be provided to the filter driver, which may pass the access request to a memory driver. The memory driver may interact with memory hardware to fulfill the access request in some cases. In some examples, the filter driver may be a post-input driver, where the access request is provided to the filter driver after a memory driver. For instance, the access request may be provided to the filter driver after a memory driver.
[0020] In some examples, the method 100 includes updating 108, by the processor, the data structure based on the access request. For instance, the processor may store information in the data structure based on information indicated by the access request.
[0021] In some examples, an access request may indicate information to access the memory. For instance, an access request may indicate (e.g., include) a user account (e.g., user name, user identifier, etc.), requesting program name and/or process name, device identifier (DID) (e.g., identifier of a target memory device and/or device identifier, etc.), read or write instruction, access type (e.g., read (without write), write (without read), or read-write), timestamp, file name, file type (e.g., file extension, .bin for a binary file, .config for a configuration file, .reg for registry data, .exe for an executable file, etc.), and/or location (e.g., path), etc. In some examples, the processor may update 108 the data structure by storing a piece or pieces of information indicated by the access request in the data structure. For instance, the processor may utilize the requesting program name and/or requesting process name to store, in the data structure, an entry or entries of the information in association with a program. In some examples, an entry of the data structure indicates a file corresponding to a program of the set of programs. In some examples, an entry of the data structure indicates a configuration file corresponding to a program of the set of programs. In some examples, an entry of the data structure indicates registry data corresponding to a program of the set of programs. In some examples, an entry of the data structure indicates a user account association to a program of the set of programs. In some examples, an entry of the data structure indicates a time association (e.g., timestamp(s) and/or time period(s) association). In some examples, an entry of the data structure indicates an access type(s) (e.g., read, write, or read-write). For instance, an entry or entries corresponding to a program may indicate a file(s) accessed by the program, registry data (e.g., value(s)) accessed by the program, time association, access type, and/or a user account that utilized the program.
[0022] In some examples, the method 100 may include detecting multiple access requests and/or performing multiple updates to the data structure. For instance, the processor (e.g., filter driver) may update the data structure to indicate a file access history, process(es) that accesses a file(s), user account associated with file access, and/or another variable(s) available to the file system.
[0023] In some examples, using the filter driver may ensure that the access request(s) (e.g., all I/O requests) passes through the filter driver. Each access request (e.g., file open request, write request, etc.) may be an I/O request from the application level to the file system to the memory. In some examples, the filter driver may be arranged above the file system in terms of OS levels. In some examples, an access request may include (but is not limited to) file name, process information, user account information, etc., which may pass through the filter driver. The filter driver may create usage patterns, file-user-process associations, access history, file ownership, and/or another kind of association in the data structure. Over time, for instance, the data structure may indicate files and/or registry values that are accessed by a program. In some examples, the data structure may indicate access type(s) (e.g., files that were read and not written, files that are read and written, and/or files that are written and not read). The data structure may indicate which user account and process that accessed the files.
[0024] In some examples, the method 100 includes migrating 110, by the processor, data based on the data structure. For instance, migrating 110 data may include copying, storing, backing up, and/or transferring data. In some examples, migrating the data may include backing up the data to a storage device based on the data structure. In some examples, migrating 110 the data based on the data structure may include migrating data associated with a program of the set of programs. For instance, the data structure may indicate data (e.g., an executable file(s), database file(s), registry data, binary file(s), configuration file(s), and/or other data, etc.) associated with a program. The data indicated as associated with a program may be copied, stored, backed up, and/or transferred. This may allow migrating data (e.g., all data or a selection of data) utilized by a program to operate and/or data created by a program. For instance, the processor may read the data structure to determine data to migrate. In some examples, the processor may migrate data indicated at a location(s) and/or path(s) in an entry(ies) corresponding to a program indicated by the data structure.
[0025] In some examples, the method 100 may include filtering the data based on a data type selection associated with a program. A data type selection is an indication of a type or types of data. For instance, a data type selection may indicate a category or categories of data types (e.g., configuration file(s), registry data, database data, file(s) associated with a user account, all files associated with a program, and/or file(s) created by the program, etc.). In some examples, the data type selection may indicate all files that are associated with a program or process name. In some examples, the data type selection may indicate files that were accessed by a user account or written by a user account (e.g., all files created under a user account, such as “Lisa.”).
[0026] In some examples, the data type selection may indicate files with an extension(s) (e.g., as configuration files with a .config, .cfg, .cnf, .conf, or .ini extension) and/or files in a folder(s) (e.g., configuration folder). In some examples, the data type selection may indicate files with a pattern (e.g., determined with content pattern and/or bit pattern recognition). Examples of a content pattern may include configuration files that are text files with a structure (e.g., JSON, XML, initialization (INI), etc., structure). Examples of a bit pattern may include a zip file bit pattern, executable file bit pattern, etc. In some examples, the data type selection may indicate registry data (e.g., values) that were accessed by a program. In some examples, the data type selection may indicate data (e.g., file(s), registry data, etc.) associated with access requests within a time period. For instance, the data type selection may indicate files and/or data associated with access request with timestamps within a specified time period(s) (e.g., date range(s), time range(s), between January 15, 2020 at 3 pm and December 20, 2020 at 5 pm, between 7 am and 5 pm each day over the last week, etc.). In some examples, the data type selection may indicate files and/or data with an access type (e.g., read, write, or read-write). In some examples, the data type selection may indicate data (e.g., file(s), registry data, etc.) that excludes data with an exclusion criterion or criteria. For instance, the data type selection may indicate data not on an exclusion list, where the exclusion list may indicate data to be excluded (e.g., data associated with a program, configuration file(s), registry data, data associated with an access request(s) within a time period(s), data with an access type(s), and/or data associated with a user account(s), etc.). In some examples, the data type selection may indicate data associated with a program(s) except for data associated with an excluded program(s) and/or criteria. [0027] In some examples, filtering may be performed for all programs in the set of programs, for a selection of programs, or for a program(s) utilized in association with a user account, for instance. In some examples, the processor may filter the data to migrate data that meets the condition(s) of the data type selection. For instance, the processor may migrate (e.g., backup, copy, store, transfer, and/or send, etc.) data in accordance with the data type selection. In some examples, the filtering may exclude (e.g., filter out) data meeting an exclusion criterion or criteria (e.g., exclusion list).
[0028] In some examples, the processor may obtain the data type selection and/or filtering condition(s) from a user interface. For instance, the processor may produce a graphical user interface (GUI) that is presented on a display. The GUI may indicate potential data types for selection. The processor may receive the data type selection via the GUI (e.g., via detected interface interaction such as a touch, click, swipe, button press, etc.). In some examples, the processor may receive the data type selection from another device (e.g., a remote device, networked device, input device, separate device, device outside of an office or home, etc.).
[0029] In some examples, the processor may migrate the data based on a migration storage indicator. For instance, a migration storage indicator may be an indication of a device and/or address for migrating the data. Examples of a migration storage indicator may indicate a local disk, external drive, removable storage (e.g., thumb drive, optical media, etc.), local network storage, and/or cloud storage. In some examples, the processor may obtain the migration storage indicator from a user interface. For instance, the processor may produce a GUI that is presented on a display. The GUI may indicate potential migration storage(s) for selection and/or may provide an input field to specify migration storage. The processor may receive the migration storage indicator via the GUI (e.g., via detected interface interaction such as a touch, click, swipe, button press, etc.). In some examples, the processor may receive the migration storage indictor from another device (e.g., a remote device, networked device, input device, etc.). [0030] In some examples, the method 100 may include sending the data structure to a remote device. For instance, the data structure may be sent to another apparatus, server, computing device, peer device, networked device, etc. In some examples, providing the data structure to a remote device may allow the remote device to start from the previously constructed and/or updated data structure. In some examples, providing the data structure to a remote device may allow the remote device to update from the previously constructed and/or updated data structure. In some examples, the processor may remove user account data and/or data produced in association with a user account (e.g., files created by the user account) before sending the data structure.
[0031] In some examples, the method 100 may include restoring data. For example, the processor may read migrated data from migration storage (e.g., local disk, local network storage, removable storage, cloud storage, selected storage device, etc.) and store the data in memory. In some examples, restoring the data may include determining a set of programs installed on a computing device and automatically detecting or determining which data (e.g., backed up data) is applicable for the computing device. In some examples, restoring data may be performed in response to a data loss (e.g., drive failure, user error, malicious data deletion, etc.).
[0032] Some examples of the techniques described herein may provide a relatively smaller backup size. For instance, data corresponding to a program may be stored instead of an entire disk of data and/or folders that include other data. Some examples of the techniques described herein may consume relatively less time to backup and/or restore (relative to an entire disk backup, for instance). Some examples of the techniques described herein may allow backup and/or restoration of individual programs (while providing automatic identification of files corresponding to an application, for instance). Some examples of the techniques described herein may be program (e.g., application) agnostic. For instance, some of the techniques described herein may be performed for any program (regardless of an individual program’s internally coded backup procedure, for example). [0033] In some examples, an element or elements of the method 100 may be omitted or combined. In some examples, the method 100 may include one, some, or all of the operations, elements, etc., described in relation to any of Figures 1-4.
[0034] Figure 2 is a block diagram of an example of an apparatus 202 that may be utilized to migrate data in accordance with some of the techniques described herein. The apparatus 202 may be an electronic device and/or computing device. The apparatus 202 includes a processor 204 and/or a memory 206. The apparatus 202 may include additional components (not shown) and/or some of the components described herein may be removed and/or modified without departing from the scope of this disclosure.
[0035] The processor 204 may be any of a CPU, a digital signal processor (DSP), a semiconductor-based microprocessor, field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), and/or other hardware device suitable for retrieval and execution of instructions stored in the memory 206. The processor 204 may be coupled to the memory 206 and/or may be in electronic communication with the memory 206. The processor 204 may fetch, decode, and/or execute instructions stored in the memory 206. In some examples, the processor 204 may include an electronic circuit or circuits that include electronic components for performing a function or functions of the instructions. In some examples, the processor 204 may be implemented to perform one, some, or all of the aspects, operations, elements, etc., described in relation to one, some, or all of Figures 1-4.
[0036] The memory 206 is an electronic, magnetic, optical, and/or other physical storage device that contains or stores electronic data (e.g., information and/or instructions). The memory 206 may be, for example, RAM, EEPROM, a storage device, an optical disc, and/or the like. In some examples, the memory 206 may be volatile and/or non-volatile memory, such as DRAM, EEPROM, MRAM, PCRAM, memristor, flash memory, and/or the like. In some implementations, the memory 206 may be a non-transitory tangible machine- readable storage medium (e.g., non-transitory tangible computer-readable medium), where the term “non-transitory” does not encompass transitory propagating signals. In some examples, the memory 206 may include multiple devices (e.g., a RAM card and an SSD).
[0037] In some examples, the apparatus 202 may include a communication interface 224 through which the processor 204 may communicate with an external device or devices (e.g., networked device, server, smartphone, printer, etc.). The communication interface 224 may include hardware and/or machine- readable instructions to enable the processor 204 to communicate with the external device or devices. The communication interface 224 may enable a wired and/or wireless connection to the external device or devices (e.g., remote device(s)). In some examples, the communication interface 224 may include a network interface card and/or may also include hardware and/or machine- readable instructions to enable the processor 204 to communicate with various input and/or output devices. Examples of output devices include a display, etc. Examples of input devices include a keyboard, a mouse, a touch screen, etc., through which a user may input instructions and/or data into the apparatus 202.
[0038] In some examples, the memory 206 of the apparatus 202 may store a data structure 208, program determination instructions 212, file system driver instructions 214, update instructions 216, filter instructions 218, and/or migration instructions 220. The processor 204 may execute the program determination instructions 212 to determine a set of programs installed on the apparatus 202. In some examples, determining the set of programs installed on the apparatus 202 may be performed as described in relation to Figure 1 . The set of programs may have corresponding program instructions 213 stored in the memory 206.
[0039] The data structure 208 may be an example of the data structure described in relation to Figure 1. In some examples, the processor 204 may execute the program determination instructions 212 to construct the data structure 208 based on the set of programs. For instance, the processor 204 may construct the data structure 208 as described in relation to Figure 1 .
[0040] In some examples, the apparatus 202 (e.g., processor 204) may receive the data structure 208 from a remote device. For instance, the data structure 208 may have been previously constructed by another device and sent to the apparatus 202. The memory 206 may store the data structure 208 from the remote device.
[0041] In some examples, the processor 204 may execute the program determination instructions 212 to modify the data structure 208 based on the set of programs. In some examples, the processor 204 may discard a portion of the data structure 208 that does not correspond to the set of programs. For instance, the processor 204 may determine whether a program or programs indicated in the data structure 208 are not installed on the apparatus 202. In a case that a program or programs indicated in the data structure 208 are not installed on the apparatus 202, the processor 204 may remove (e.g., discard) data corresponding to a program or programs that are not installed on the apparatus 202 in accordance with the set of installed programs. In a case that the set of installed programs includes a program or programs not indicated in the data structure 208, the processor 204 may add an indication(s) of the program(s) in the data structure 208.
[0042] In some examples, the processor 204 executes the program instructions 213 to issue, by a program of the set of programs, an access request at an application level of an OS of the apparatus 202. In some examples, the access request may be issued as described in relation to Figure 1 . For instance, the processor 204 may execute the program instructions 213 to issue an access request to read or write data in the memory 206.
[0043] In some examples, the processor 204 executes the file system driver instructions 214 to detect the access request by a file system filter driver at a kernel level of the OS. In some examples, detecting the access request may be performed as described in relation to Figure 1 . For instance, the file system filter driver may receive the access request at the kernel level passed down from the application level.
[0044] In some examples, the processor 204 executes the update instructions 216 to update, based on the access request, a portion of the data structure 208 corresponding to the program. In some examples, updating the data structure 208 may be performed as described in relation to Figure 1 . For instance, the processor 204 may add an entry or entries associated to the program in the data structure 208 based on data indicated by the access request.
[0045] In some examples, the processor 204 executes the filter instructions 218 to filter data based on the data structure 208. In some examples, filtering data based on the data structure 208 may be performed as described in relation to Figure 1. For instance, the processor 204 may filter data based on a data type selection.
[0046] In some examples, the processor 204 executes the migration instructions 220 to migrate the data. In some examples, migrating the data may be performed as described in relation to Figure 1 . For instance, the processor 204 may backup and/or transfer the data (e.g., the filtered data). In some examples, the processor 204 may store the data (e.g., a backup copy of the data) in the memory 206 and/or may provide the data to the communication interface 224 to transfer the data to migration storage (e.g., removable storage, cloud storage, peer device, and/or local network storage, etc.). In some examples, an element or elements of the apparatus 202 may be omitted or combined.
[0047] Figure 3 is a block diagram illustrating an example of a computer- readable medium 326 for data migration. The computer-readable medium 326 is a non-transitory, tangible computer-readable medium. The computer-readable medium 326 may be, for example, RAM, EEPROM, a storage device, an optical disc, and the like. In some examples, the computer-readable medium 326 may be volatile and/or non-volatile memory, such as DRAM, EEPROM, MRAM, PCRAM, memristor, flash memory, and the like. In some implementations, the memory 206 described in relation to Figure 2 may be an example of the computer-readable medium 326 described in relation to Figure 3.
[0048] The computer-readable medium 326 may include data (e.g., information and/or instructions). For example, the computer-readable medium 326 may include update instructions 328, selection instructions 330, and/or migration instructions 332.
[0049] In some examples, the update instructions 328 include instructions, when executed, cause a processor of an electronic device to update a data structure based on access requests detected at a kernel level of an OS, where the data structure maps data accessed per program. In some examples, the data structure may be updated as described in relation to Figure 1 and/or Figure 2. For instance, the data structure may be updated with an entry associated with a program. In some examples, the data structure may be updated with information from an access request made by the program. In some examples, the data structure maps the data accessed per user account. For instance, a user account may be utilized to look up associated data (e.g., a program(s), file(s), configuration file(s), registry data, etc.) in the data structure.
[0050] In some examples, the selection instructions 330 include instructions, when executed, cause the processor of the electronic device to determine a program selection and a data type selection. In some examples, the data type selection may be determined as described in relation to Figure 1 and/or Figure 2.
[0051] A program selection is an indication of a program or programs. For instance, a program selection may indicate a program or programs (e.g., program(s) installed on a computing device). In some examples, the program selection may indicate a program(s) targeted for data migration. In some examples, the processor may obtain the program selection from a user interface. For instance, the processor may produce a GUI that is presented on a display. The GUI may indicate potential programs for selection. For instance, the GUI may indicate a set of programs determined as described in relation to Figure 1 . In some examples, the processor may receive the program selection via the GUI (e.g., via detected interface interaction such as a touch, click, swipe, button press, etc.). In some examples, the processor may receive the program selection from another device (e.g., a remote device, networked device, input device, etc.).
[0052] In some examples, the selection instructions 330 include instructions, when executed, cause the processor of the electronic device to determine a user account selection. A user account selection is an indication of a user account(s) (e.g., user name, user identifier, etc.). For instance, a user account selection may indicate a user account or accounts (e.g., user account(s) on a computing device). In some examples, the user account selection may indicate a user account(s) targeted for data migration. In some examples, the processor may obtain the user account selection from a user interface. For instance, the processor may produce a GUI that is presented on a display. The GUI may indicate potential user accounts for selection. For instance, the GUI may indicate a user account(s) set up on a computing device. In some examples, the processor may receive the user account selection via the GUI (e.g., via detected interface interaction such as a touch, click, swipe, button press, etc.). In some examples, the processor may receive the user account selection from another device (e.g., a remote device, networked device, input device, etc.).
[0053] In some examples, the migration instructions 332 include instructions, when executed, cause the processor of the electronic device to migrate selected data mapped in the data structure based on the program selection and the data type selection. In some examples, the migration may be performed as described in relation to Figure 1 and/or Figure 2. For instance, the processor may migrate data specified in the data structure in accordance with the program selection, access type selection, time association, and/or the data type selection (e.g., data that matches the program selection and the data type selection and/or excluding data that meets an exclusion criterion or criteria, etc.).
[0054] In some examples, the migration instructions 332 may include instructions, when executed, cause the processor of the electronic device to migrate the selected data further based on a user account selection. For instance, the processor may migrate data specified in the data structure in accordance with the program selection, the data type selection, and/or the user account selection (e.g., data that matches the program selection, the data type selection, and/or the user account selection).
[0055] Figure 4 is a block diagram of an example of an apparatus 402 that may be utilized to migrate data in accordance with some of the techniques described herein. The apparatus 402 may be an example of the apparatus 202 described in relation to Figure 2. The apparatus 402 may include additional components (not shown) and/or some of the components described herein may be removed and/or modified without departing from the scope of this disclosure. [0056] The components of the apparatus 402 may be examples of corresponding components (e.g., processor 204, memory 206, and/or communication interface 224) described in relation to Figure 2. The processor 404 may fetch, decode, and/or execute instructions stored in the memory 406. In some examples, the processor 404 may be implemented to perform one, some, or all of the aspects, operations, elements, etc., described in relation to one, some, or all of Figures 1-3. In some implementations, the memory 406 may be a non-transitory tangible machine-readable storage medium (e.g., non- transitory tangible computer-readable medium). In some examples, the memory 406 may be an example of the computer-readable medium 326 described in relation to Figure 3. In some examples, the apparatus 402 may include a communication interface 424 through which the processor 404 may communicate with an external device(s) (e.g., remote device(s), networked device, server, smartphone, etc.), input device(s), and/or output device(s).
[0057] In some examples, the memory 406 of the apparatus 402 may store an operating system 408. The operating system 408 may include an application level 410 and a kernel level 414. The application level 410 may be an example of the application level described in relation to Figure 1 and/or the kernel level 414 may be an example of the kernel level described in relation to Figure 1 .
[0058] The application level 410 may include a program 412. For instance, the program 412 may be an application to perform an operation on the apparatus 402. The kernel level 414 may include a filter driver 416. The filter driver 416 may be an example of the file system filter driver described in relation to Figure 1. During operation, the program 412 may send an access request from the application level 410 to the kernel level 414. The filter driver 416 may detect the access request and update a data structure 434 in the memory 406. The apparatus 402 (e.g., processor 404) may utilize the data structure 434 to migrate data as described herein. In some examples, an element or elements of the apparatus 402 may be omitted or combined.
[0059] As used herein, the term “and/or” may mean an item or items. For example, the phrase “A, B, and/or C” may mean any of: A (without B and C), B (without A and C), C (without A and B), A and B (without C), B and C (without A), A and C (without B), or all of A, B, and C.
[0060] While various examples are described herein, the disclosure is not limited to the examples. Variations of the examples described herein may be implemented within the scope of the disclosure. For example, aspects or elements of the examples described herein may be omitted or combined.

Claims

1 . A method, comprising: determining, by a processor, a set of programs installed on a computing device; constructing, by the processor, a data structure based on the set of programs; detecting, using a file system filter driver, an access request to a file system on the computing device; updating, by the processor, the data structure based on the access request; and migrating, by the processor, data based on the data structure.
2. The method of claim 1 , wherein the file system filter driver is included at a kernel level of an operating system (OS) of the computing device.
3. The method of claim 1 , wherein an entry of the data structure indicates a file corresponding to a program of the set of programs.
4. The method of claim 1 , wherein an entry of the data structure indicates a configuration file corresponding to a program of the set of programs.
5. The method of claim 1 , wherein an entry of the data structure indicates registry data corresponding to a program of the set of programs.
6. The method of claim 1 , wherein an entry of the data structure indicates a user account association to a program of the set of programs, a time association, or an access type.
7. The method of claim 1 , wherein migrating the data comprises backing up the data to a storage device based on the data structure.
8. The method of claim 1 , further comprising sending the data structure to a remote device.
9. The method of claim 1 , further comprising filtering the data based on a data type selection associated with a program.
10. An apparatus, comprising: a memory; and a processor coupled to the memory, wherein the processor is to: determine a set of programs installed on the apparatus; issue, by a program of the set of programs, an access request at an application level of an operating system (OS) of the apparatus; detect the access request by a file system filter driver at a kernel level of the OS; update, based on the access request, a portion of a data structure corresponding to the program; filter data based on the data structure; and migrate the data.
11 . The apparatus of claim 10, wherein the memory is to store the data structure from a remote device.
12. The apparatus of claim 11 , wherein the processor is to discard a second portion of the data structure that does not correspond to the set of programs.
13. A non-transitory tangible computer-readable medium comprising instructions when executed cause a processor of an electronic device to: update a data structure based on access requests detected at a kernel level of an operating system (OS), wherein the data structure maps data accessed per program; determine a program selection and a data type selection; and migrate selected data mapped in the data structure based on the program selection and the data type selection.
14. The non-transitory tangible computer-readable medium of claim 13, wherein the data structure maps the data accessed per user account.
15. The non-transitory tangible computer-readable medium of claim 14, wherein the instructions when executed cause the processor to migrate the selected data further based on a user account selection.
PCT/US2022/017056 2022-02-18 2022-02-18 Data migrations WO2023158440A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2022/017056 WO2023158440A1 (en) 2022-02-18 2022-02-18 Data migrations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2022/017056 WO2023158440A1 (en) 2022-02-18 2022-02-18 Data migrations

Publications (1)

Publication Number Publication Date
WO2023158440A1 true WO2023158440A1 (en) 2023-08-24

Family

ID=87578918

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2022/017056 WO2023158440A1 (en) 2022-02-18 2022-02-18 Data migrations

Country Status (1)

Country Link
WO (1) WO2023158440A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070183224A1 (en) * 2005-12-19 2007-08-09 Andrei Erofeev Buffer configuration for a data replication system
US9400611B1 (en) * 2013-03-13 2016-07-26 Emc Corporation Data migration in cluster environment using host copy and changed block tracking
US9465642B1 (en) * 2010-05-06 2016-10-11 Dell Software Inc. Systems and methods for instant provisioning of virtual machine files
US20210034244A1 (en) * 2019-07-29 2021-02-04 Commvault Systems, Inc. Block-level data replication

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070183224A1 (en) * 2005-12-19 2007-08-09 Andrei Erofeev Buffer configuration for a data replication system
US9465642B1 (en) * 2010-05-06 2016-10-11 Dell Software Inc. Systems and methods for instant provisioning of virtual machine files
US9400611B1 (en) * 2013-03-13 2016-07-26 Emc Corporation Data migration in cluster environment using host copy and changed block tracking
US20210034244A1 (en) * 2019-07-29 2021-02-04 Commvault Systems, Inc. Block-level data replication

Similar Documents

Publication Publication Date Title
US9715347B2 (en) Virtual disk migration
US9235589B2 (en) Optimizing storage allocation in a virtual desktop environment
US20130073819A1 (en) Efficient file system metadata scanning using scoped snapshots
US20100235831A1 (en) Method for dynamic configuration of virtual machine
US9563446B2 (en) Binary file generation
CN111989656B (en) Configurable recovery state
CN110221860A (en) A kind of configuration file processing method, device, terminal and medium
US11630741B2 (en) System and method for backing up data in a load-balanced clustered environment
US8856740B2 (en) Implementing multiple versions of a plug-in concurrently
US20200310779A1 (en) Validating a firmware compliance policy prior to use in a production system
US8732427B2 (en) Systems and methods for collapsing a derivative version of a primary storage volume
US11995449B2 (en) Layered composite boot device and file system for operating system booting in file system virtualization environments
WO2015020661A1 (en) Boot from modified factory image
US20140046902A1 (en) Method for a cloning process to enable cloning a larger System drive to a smaller system
US11977559B2 (en) Providing instant and distributed access to a source blob via copy-on-read blobs and link blobs
US9459883B2 (en) Modifying disk images
US11340882B2 (en) Systems and methods for enforcing update policies while applying updates from bootable image file
CN111868698B (en) Free space through
WO2023158440A1 (en) Data migrations
US20160041782A1 (en) Storage Device Copying of a larger system to a smaller system
US10846011B2 (en) Moving outdated data from a multi-volume virtual disk to a backup storage device
US9311124B2 (en) Integrated deployment of centrally modified software systems
US10339011B1 (en) Method and system for implementing data lossless synthetic full backups
US11204752B1 (en) Intelligent migration of firmware configuration settings
US20150039659A1 (en) Data location management agent using remote storage

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22927528

Country of ref document: EP

Kind code of ref document: A1