U.S. patent application number 13/350537 was filed with the patent office on 2012-07-19 for local backup.
This patent application is currently assigned to APPLE INC.. Invention is credited to Pavel Cisler, Dominic B. Giampaolo, Kristen A. McIntyre, Eric Weiss.
Application Number | 20120185438 13/350537 |
Document ID | / |
Family ID | 46491544 |
Filed Date | 2012-07-19 |
United States Patent
Application |
20120185438 |
Kind Code |
A1 |
Giampaolo; Dominic B. ; et
al. |
July 19, 2012 |
LOCAL BACKUP
Abstract
Methods, systems, and apparatus, including computer programs
encoded on a computer storage medium, for storing data. In one
aspect, a method includes receiving a user input to present a
visual representation of a first prior state of a file system;
generating the first visual representation of a first prior state
of the file system at a first time in the past according to a first
virtual file system corresponding to that first time; presenting
the first visual representation, where the first virtual file
system is a reduced representation of the file system at that first
time; receiving a user input to present a second visual
representation of a second prior state of the file system at a
second time in the past according to a second virtual file system
corresponding to that second time; and presenting the second visual
representation.
Inventors: |
Giampaolo; Dominic B.;
(Mountain View, CA) ; Weiss; Eric; (Paris, FR)
; McIntyre; Kristen A.; (Fremont, CA) ; Cisler;
Pavel; (Los Gatos, CA) |
Assignee: |
APPLE INC.
Cupertino
CA
|
Family ID: |
46491544 |
Appl. No.: |
13/350537 |
Filed: |
January 13, 2012 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
61433164 |
Jan 14, 2011 |
|
|
|
Current U.S.
Class: |
707/654 ;
707/E17.007; 707/E17.01 |
Current CPC
Class: |
G06F 16/188
20190101 |
Class at
Publication: |
707/654 ;
707/E17.01; 707/E17.007 |
International
Class: |
G06F 17/30 20060101
G06F017/30 |
Claims
1. A method performed by data processing apparatus, the method
comprising: receiving a user input to present a visual
representation of a first prior state of a file system; generating
the first visual representation of a first prior state of the file
system at a first time in the past according to a first virtual
file system corresponding to that first time; presenting the first
visual representation, where the first virtual file system is a
reduced representation of the file system at that first time;
receiving a user input to present a second visual representation of
a second prior state of the file system at a second time in the
past according to a second virtual file system corresponding to
that second time; and presenting the second visual
representation.
2. The method of claim 1, where generating the first visual
representation includes performing a first set operation between
the elements of the current file system and the elements of the
first virtual file system to determine the contents of the first
visual representation.
3. The method of claim 2, where generating the second visual
representation includes performing a second set operation between
the elements of the result of first set operation and the elements
of the second virtual file system to determine the contents of the
second visual representation.
4. The method of claim 1, further comprising: receiving an input to
restore a data item presented in the first visual representation;
identifying data corresponding to the presented data item from the
corresponding virtual file system; and restoring the data to a
current file system.
5. The method of claim 1, where the input to present a first prior
state is received while presenting a current file system interface
window and where the generating includes presenting a visual
representation of the same file system interface window
corresponding to an earlier point in time.
6. The method of claim 1, wherein the first virtual file system is
generated from data stored in a delta store and associated with a
first backup.
7. A method comprising: generating one or more local backups on a
device while the device is disconnected from an external backup
storage location; coupling the device to the external backup
storage location; generating a backup on the external backup
storage location corresponding to the current data of the device;
identifying the one or more local backups on the client device; and
migrating the one or more local backups to backups on the external
backup storage location.
8. The method of claim 7, where each of the local backups are
migrated in order from newest to oldest.
9. The method of claim 7, where each of the local backups are
migrated in order from oldest to newest.
10. The method of claim 7, where migrating a local backup includes
a comparison of the data of the local backup with a next later
backup on the remote storage location and a next earlier backup on
the remote storage location.
11. A system comprising: one or more computing devices operable to
perform operations including: receiving a user input to present a
visual representation of a first prior state of a file system;
generating the first visual representation of a first prior state
of the file system at a first time in the past according to a first
virtual file corresponding to that first time; presenting the first
visual representation, where the first virtual file system is a
reduced representation of the file system at that first time;
receiving a user input to present a second visual representation of
a second prior state of the file system at a second time in the
past according to a second virtual file system corresponding to
that second time; and presenting the second visual
representation.
12. The system of claim 11, where generating the first visual
representation includes performing a first set operation between
the elements of the current file system and the elements of the
first virtual file system to determine the contents of the first
visual representation.
13. The system of claim 12, where generating the second visual
representation includes performing a second set operation between
the elements of the result of first set operation and the elements
of the second virtual file system to determine the contents of the
second visual representation.
14. The system of claim 11, further operable to perform operations
comprising: receiving an input to restore a data item presented in
the first visual representation; identifying data corresponding to
the presented data item from the corresponding virtual file system;
and restoring the data to a current file system.
15. The system of claim 11, where the input to present a first
prior state is received while presenting a current file system
interface window and where the generating includes presenting a
visual representation of the same file system interface window
corresponding to an earlier point in time.
16. A computer storage medium encoded with a computer program, the
program comprising instructions that when executed by data
processing apparatus cause the data processing apparatus to perform
operations comprising: receiving a user input to present a visual
representation of a first prior state of a file system; generating
the first visual representation of a first prior state of the file
system at a first time in the past according to a first virtual
file system snapshot for that first time; presenting the first
visual representation, where the first virtual file system snapshot
is a reduced representation of the file system at that first time;
receiving a user input to present a second visual representation of
a second prior state of the file system at a second time in the
past according to a second virtual file system snapshot for that
second time; and presenting the second visual representation.
17. A system comprising: one or more computing devices operable to
perform operations including: generating one or more local backups
on a device while the device is disconnected from an external
backup storage location; coupling the device to the external backup
storage location; generating a backup on the external backup
storage location corresponding to the current data of the device;
identifying the one or more local backups on the client device; and
migrating the one or more local backups to backups on the external
backup storage location.
18. The system of claim 15, where each of the local backups are
migrated in order from newest to oldest.
19. The system of claim 15, where migrating a local backup includes
a comparison of the data of the local backup with a next later
backup on the remote storage location and a next earlier backup on
the remote storage location.
20. A computer storage medium encoded with a computer program, the
program comprising instructions that when executed by data
processing apparatus cause the data processing apparatus to perform
operations comprising: generating one or more local backups on a
device while the device is disconnected from an external backup
storage location; coupling the device to the external backup
storage location; generating a backup on the external backup
storage location corresponding to the current data of the device;
identifying the one or more local backups on the client device; and
migrating the one or more local backups to backups on the external
backup storage location.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit under 35 U.S.C.
.sctn.119(e) of the filing date of U.S. Patent Application No.
61/433,164, for Local Backup, which was filed on Jan. 14, 2011, and
which is incorporated here by reference.
BACKGROUND
[0002] This specification relates to storing data.
[0003] Users can conventionally store data as part of one or more
backups (e.g., of a file system or specified files or folders) to
one or more external locations. Thus, if there is a failure to a
user device, particular backup versions of data can be recovered.
Typically, the data can only be viewed and recovered when the user
device is connected to the corresponding external location having
the backup data.
SUMMARY
[0004] This specification describes technologies relating to
storing and presenting data.
[0005] In general, one aspect of the subject matter described in
this specification can be embodied in methods that include the
actions of receiving a user input to present a visual
representation of a first prior state of a file system; generating
the first visual representation of a first prior state of the file
system at a first time in the past according to a first virtual
file system corresponding to that first time; presenting the first
visual representation, where the first virtual file system is a
reduced representation of the file system at that first time;
receiving a user input to present a second visual representation of
a second prior state of the file system at a second time in the
past according to a second virtual file system corresponding to
that second time; and presenting the second visual representation.
Other embodiments of this aspect include corresponding systems,
apparatus, and computer programs recorded on computer storage
devices, each configured to perform the operations of the
methods.
[0006] These and other embodiments can each optionally include one
or more of the following features. Generating the first visual
representation includes performing a first set operation between
the elements of the current file system and the elements of the
first virtual file system to determine the contents of the first
visual representation. Generating the second visual representation
includes performing a second set operation between the elements of
the result of first set operation and the elements of the second
virtual file system to determine the contents of the second visual
representation. The method further includes receiving an input to
restore a data item presented in the first visual representation;
identifying data corresponding to the presented data item from the
corresponding virtual file system; and restoring the data to a
current file system. The input to present a first prior state is
received while presenting a current file system interface window
and where the generating includes presenting a visual
representation of the same file system interface window
corresponding to an earlier point in time. The first virtual file
system is generated from data stored in a delta store and
associated with a first backup.
[0007] In general, one aspect of the subject matter described in
this specification can be embodied in methods that include the
actions of generating one or more local backups on a device while
the device is disconnected from an external backup storage
location; coupling the device to the external backup storage
location; generating a backup on the external backup storage
location corresponding to the current data of the device;
identifying the one or more local backups on the client device; and
migrating the one or more local backups to backups on the external
backup storage location. Other embodiments of this aspect include
corresponding systems, apparatus, and computer programs recorded on
computer storage devices, each configured to perform the operations
of the methods.
[0008] These and other embodiments can each optionally include one
or more of the following features. Each of the local backups are
migrated in order from newest to oldest. Each of the local backups
are migrated in order from oldest to newest. Migrating a local
backup includes a comparison of the data of the local backup with a
next later backup on the remote storage location and a next earlier
backup on the remote storage location.
[0009] Particular embodiments of the subject matter described in
this specification can be implemented so as to realize one or more
of the following advantages. Backup data can be stored locally when
a user is disconnected from an external storage device. The locally
stored backup can be captured in a compact virtual file system
representation to reduce storage requirements. The local backup
data can be stored in an analogous form to the external backups.
Data changes can be captured for adding to the local backup prior
to being made. A backup user interface can be presented that allows
users to view visual representations of the virtual file system as
if it were the actual file system at times in the past.
[0010] The details of one or more embodiments of the subject matter
described in this specification are set forth in the accompanying
drawings and the description below. Other features, aspects, and
advantages of the subject matter will become apparent from the
description, the drawings, and the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] FIG. 1 is a block diagram of an example system.
[0012] FIG. 2 is a block diagram of an example architecture for the
local backup and restoration of data.
[0013] FIG. 3 is a flow diagram of an example process for
generating a local backup.
[0014] FIGS. 4A-4C are example diagrams of storing data in a
virtual file system.
[0015] FIG. 5 is a flow diagram of an example process for
displaying local backup data.
[0016] FIG. 6 is a flow diagram of an example process for
generating a visual representation of a particular local
snapshot.
[0017] FIG. 7 is an example backup user interface.
[0018] FIG. 8 is a flow diagram of an example process for migrating
local backups to remote backups.
[0019] Like reference numbers and designations in the various
drawings indicate like elements.
DETAILED DESCRIPTION
[0020] Backups of file system data can be made even when a user
device is not coupled to an external storage device. In particular,
a virtual file system can be generated that provides a compact
representation of the file system during an epoch in order to
generate a locally stored backup at the end of each epoch. An epoch
is a specified period of time between each backup. The backups can
be generated as snapshots of the file system for that epoch. The
virtual file system is generated as versions of data items are
added for inclusion in the backup. While the hierarchical file
system of the actual file system is mimicked, directories above a
given version being stored in the backup can be faults (e.g., zero
data items). Additionally, the virtual file system can only include
the portions of the file system in which changes have occurred,
reducing storage space needed for a given backup. The data items
added for inclusion in the backup can be copies of files captured
prior to deletion or modification. Additionally, or alternatively,
the data items can be markers indicating the type of change to the
data item (e.g., a marker indicating a file has been deleted,
modified, or moved).
[0021] Visual representations of each backup can be generated and
presented in a backup interface. The visual representations present
the backup file system data as it occurred at that point in time.
In particular, the visual representation can be presented as a
visual representation of a file system window corresponding to an
actual file system window previously being presented except that
the contents of the file system window correspond to the data
present that the time of the backup operation. A user can interact
with the visual representation. For example, a user can select one
or more data items presented in the visual representation for
restoration to the current file system. A user can also provide
input to present a visual representation of a different (e.g., an
earlier) backup.
[0022] FIG. 1 is a block diagram of an example system 100. The
system 100 can allow a user to generate, view, navigate, and
restore data, for example, in either remote backup storage or local
backups. The system 100 can further provide visual representations
of locally stored backup data as part of a virtual file system. The
visual representation can correspond to a visual representation of
a user interface window, for example, of a user interface window
providing various file system information including, for example,
icons, files, folders, or other data. The visual representation can
be presented in a particular backup interface. However, rather than
presenting a simple image of the user interface window, a user can
interact with the visual representation to navigate through a
hierarchy of windows or to select one or more individual data items
presented within the visual representation. Various types of data
items from a file system can be subjected to a backup operation by
a backup component 117, e.g., files, folders, system settings,
metadata, state information, etc.
[0023] The system 100 includes a computing device 102 (e.g., a
personal computer such as a desktop or notebook computer, a tablet
device, a mobile device, etc.) communicatively coupled to a remote
storage 107 through a network interface 116 and a network 108
(e.g., local area network, wide area network, wireless network,
Internet, intranet, etc.). The computing device 102 generally
includes a processor 103, a memory 105, one or more input devices
114 (e.g., keyboard, mouse, etc.), and one or more output devices
115 (e.g., a display device). A user interacts with the system 100,
for example, using the input and output devices 114, 115. The
system 100 includes various hardware elements. The system 100 can
include hardware, software, and combinations of the two.
[0024] The computing device 102 also includes a local storage
device 106 and a graphics module 113 (e.g., a graphics card) for
storing information and generating graphical objects, respectively.
The local storage device 106 can be used to store backup data as
part of a virtual file system. In some implementations, backup data
is stored locally only when the computing device 102 is not
connected to the remote storage 107.
[0025] Though discussion is made with reference representations of
user interfaces, theses visual representations can be based on
various data structures, files, processes, and other aspects of
information management. Modification to file structures, data and
the like is also contemplated in order to achieve various
interactions and displays of the visual representation.
[0026] The computing device 102 includes the backup component 117
that allows for the storage of versions of file system data (e.g.,
files or other items), for example within the local storage 106 or
in an external storage repository (e.g., remote storage 107) as
part of a backup operation. In some implementations, the backup
component 117 also allows a user to select any of the stored
versions and use it to initiate a restoration of backup data
corresponding to that version in the computing device 102 (e.g., a
restoration of a file to the current file system). In some
implementations, separate backup components 117 are used for local
backups and external backups.
[0027] In some implementations, the computing device 102 includes a
search component 118 that allows for searches of the computer's
files or other items, for example within the local storage 106 or
an external storage repository. This can include searching locally
stored backup information within the virtual file system. In some
implementations, the search component 118 can interact with the
backup component 117 to perform searches of stored versions of
files or other items on the computing device 102. Particularly, in
one implementation, the search component 118 provides that a user
can select search results identified in an earlier version and use
them to initiate a restoration of that version in the computing
device 102.
[0028] In some implementations, when a user searches for a file but
the file is not found, the user can invoke the backup component 117
(or a portion thereof) to show one or more previous backup states
corresponding to, for example, the various locations within a
hierarchical file system for a specific earlier point in time. For
example, if the user is looking for content of the C: drive (that
does not currently hold the sought file), the user (or the
computer) can launch a backup component to present visual
representations of previous states of the C: drive to see if the
file has been included in a backup (either locally or, if
connected, on a remote storage device). This operation can be
facilitated by the search environment forwarding information (e.g.,
an identity of the sought file) to the backup environment for
showing the correct archive(s).
[0029] FIG. 2 is a block diagram of an example architecture 200 for
the local backup and restoration of data. The data can include,
e.g., files such as application files or system files, application
data, settings, parameters etc. The backup component 117 provides
backup and restoration capability for the system. Many different
items or elements can be the subject of a backup operation in the
system. For example, folders, files, items, information portions,
directories, images, system parameters, playlists, address books,
e-mails, e-mail folders, a state of an application or state of the
system, preferences (e.g., user or system preferences), etc. all
can be included in one or more backup operations.
[0030] In this example, the backup component 117 includes a local
storage device 204 and an external storage device 232. Backup data
can be stored on either. In particular, backups can be periodically
stored on the external storage device 232 according to particular
backup criteria (e.g., as defined by a backup application or a
user). Additionally, particular backup data can be stored on the
local storage device 204. Specifically, in some implementations, a
delta store 214 can be used to temporarily store local backups when
the user's device is not connected to the external storage device
232. The delta store can be used to generate a virtual file system,
e.g., based on an encoded representation of the file system stored
in the delta store. In particular, the encoded representation of
the file system can encode a particular file system state and
include incremental changes to data items, e.g., changed data for
particular files, added files, deleted files, or moved files. In
some implementations, the virtual file system provides a read-only
synthetic representation of how the backup of the file system would
appear as a full file system backup instead of including just the
changes to the file system. The virtual file system can be
generated on the fly from the delta store's encoded representation
in order to provide a visual representation of the backup, as
described in greater detail below.
[0031] Once the connection to the external storage device 232 has
been reestablished, the temporary backup data can be converted into
one or more backups on the external storage device 232 using a
migration process.
[0032] Various numbers of local and/or external storage devices can
be used by the backup component 117 for storing backup data
corresponding to the versions. In some implementations, the backup
component 117 stores the backup data in a format corresponding to a
file system structure. However, storage on the local storage device
204 can be a reduced representation of the file system hierarchy.
In particular, the local storage device 204 includes the delta
store 214 in which incremental changes to data for local backups
are stored.
[0033] In some implementations, the backup component 117 runs as a
background task on an operating system 230, where the task is
generally not visible to the user. In particular, the backup
component can operate in coordination with a kernel 224 of the
operating system in order to identify triggering events for backup
operations. For example, a particular triggering event can be a
type of file operation, e.g., an incoming write call for a
modification to a file. In response to the trigger, the kernel can
facilitate a copy of the unmodified version of the file being
stored in the local storage prior to allowing the file operation to
proceed. The backup component 117 can be configured to run across
multiple user accounts.
[0034] A backup management engine 216 coordinates the collection,
storage, and retrieval of backups performed by the backup component
117. For example, the backup management engine 216 can manage the
triggering events for storing data, the frequency of performing
backups, as well as determine whether a backup is to be performed
on the external storage device 232 or whether a local backup is to
be generated.
[0035] A backup capture engine 220 stores data to the local storage
204 identified for inclusion of a backup during an epoch from which
a particular virtual file system representation can be generated.
The backup capture engine 220 can also generate and store markers
and other metadata within the local storage 204 providing
information about the data items stored in the delta store 214,
these markers can then be used when generating each particular
virtual file system representation from the delta store 214. The
backup capture engine 220 can also store identified data to the
external storage device 232 during particular backup operations.
The backup capture engine 220 can track multiple local backups
stored in the local storage 204 as well as backups stored on
external storage devices (e.g., external storage device 232).
[0036] The backup component 117 includes a backup restoration
engine 222 to restore particular data from one or more backups,
both remotely stored and locally stored. In some implementations,
the backup restoration engine 222 provides a user interface (e.g.,
a graphical user interface) where a user can select the item(s) to
be restored.
[0037] The search component 118 can search directly within the one
or more applications 228 for current versions of files or other
items. In addition, the search component 118 can search earlier
versions of the files and other items using the backup component
117. For example, the search component 118 can provide a search
interface within a backup user interface that allows searches of
earlier versions of the files or other items. In addition, the
search component 118 can provide a search interface within a user
interface (e.g., a desktop user interface) that allows searches of
the current version of the files or other items.
[0038] For example, the search component 118 can be used to
initiate a search to find a particular item or element, for
example, an image file. If this search finds the sought item, and
if the item meets the user's expectations, there may be no need to
do any further searching at that time. However, if the search does
not find the sought item, or if the item that is found does not
meet the user's expectations, the user can choose to perform a
search of the backup data. In some implementations, the user
activates a backup user interface to search the backup data.
[0039] An overlay engine 218 can generate a virtual file system for
each respective local backup using the delta store 214. The backup
component 117 can use the generated virtual file system to generate
a corresponding visual representation of the local backup, for
example, within the backup interface. The overlay engine 218 can
generate the virtual file system on demand in response to a
request, e.g., a request to display a visual representation of a
particular backup, using the data in the delta store as well as the
data of the current file system.
[0040] FIG. 3 is a flow diagram of an example process 300 for
generating a local backup. The process 300 can be performed by a
system including one or more computing devices, for example, the
computing device 102 of FIG. 1.
[0041] A file operation of a particular type is detected 302. In
particular, files can have associated extended attributes
indicating that a copy of the file should be stored in a backup
prior to particular types of file operations (e.g., the file being
modified or deleted). Additionally, the extended attribute can also
indicate that a record should be made before a file is moved. That
such an extended attribute exists can be indicated in a flag bit of
a file i-node. The i-node is a unique identifier for each file.
[0042] Consequently, when a process calls into the kernel to
perform a particular file operation, e.g., a write operation to
modify the file, the kernel determines whether or not the flag bit
is set for the file. If so, the associated extended attribute is
read which indicates particular actions to be performed before
allowing the write to occur. In particular, the extended attribute
can indicate a file handler associated with the backup to be
requested so that the file can be processed for the backup (e.g., a
copy stored). Once the file handler has performed the requested
action, the write operation on the file can be allowed to proceed.
Additional details can be found in U.S. Provisional Patent
Application No. 61/433,180, filed on Jan. 14, 2010, and entitled
"File System Management" the contents of which are hereby
incorporated by reference.
[0043] An addition is determined to be made to a delta store (304).
For example, the determination can be based on the detection of the
flag bit or the calling of the special file handler by the kernel.
Thus, once the file handler is called, the determination can be
made to store information in the delta store.
[0044] In some other implementations, a further determination is
made based on whether or not there has already been an addition to
the delta store for a particular backup made within a same epoch.
For example, if the file has already been modified once during the
epoch, the delta store is not modified for any subsequent
modifications during the epoch. An epoch can be a period of time
between designated backup points defining the contents of a given
local backup (e.g., an hour). Thus, the file handler for the backup
has been called and no other data associated with the file has been
added to the delta store during the present epoch, then a
determination can be made to make an addition to the delta
store.
[0045] The path of the file and delta store information is
identified (306). The path of the file is the directory path from a
root to the file (e.g., naming directories from a root directory to
the location of the file within the hierarchical file system). For
example, a file path can be home/dir1/dir2/dir3/example.doc. The
delta store information identified depends upon the type of file
operation to be performed on the file. In some implementations, the
delta store information includes the file data captured prior to an
operation on the file being performed. In some other
implementation, the delta store information only includes a marker
or other metadata describing the file operation and allowing the
virtual file system representation to be generated. The marker can
indicate, for example, that the entry corresponds to a modification
to the file, a deletion of the file, or a move of the file to a
different location within the hierarchical file system.
[0046] A delta store entry corresponding to the file is generated
(308). In particular, the delta store contents for a particular
local backup operation can be generated dynamically as items are
added during an epoch. The delta store entry includes data for the
file, e.g., the file system marker and, in some examples, file
data. For example, for files that were being modified, the entry
includes the file data prior to the modification. Similarly, for a
file to be deleted, the entry includes the file data prior to the
deletion. The entry further includes a marker or other metadata
indicating the nature of the entry (e.g., a modification, deletion,
or move).
[0047] Additionally, the delta store entry can identify the portion
of the file system corresponding to the path of the file. In
particular, the local backup is built in the delta store as needed
to store backup data. As a result, in a hierarchical file system,
the directories in the path for the file may not exist in the delta
store. However, when generating the corresponding virtual file
system, fault directories can be generated in order to replicate
the hierarchical file system for the path of the file corresponding
to the current file system. Each fault directory or file can be a
zero data file so that the virtual file system uses less storage
space. Thus, for the example file above, each of dir1, dir2, and
dir3 can be zero data fault files. Consequently, the fault
directories allow for an on-demand directory hierarchy to be
generated for the virtual file system.
[0048] A backup is created for the present epoch (310). For each
epoch time, e.g., an hour, the data added to the delta store is
used to define a particular backup or snapshot. Following creation
of a given backup, backup data added to the delta store is
associated with a next backup.
[0049] Additionally, the backup can add additional information to
the delta store. In particular, additional entries can be added to
the delta store for data items created during the epoch.
[0050] For example, if a new file is created during the epoch an
entry can be made to the delta store including creating any
necessary path directory fault files and including a creation
marker. The creation marker indicates that the virtual file system
generated from the backup should not include the file and any
visual representation of the backup because the file did not exist
prior to the backup. Thus, no file data is included in the entry to
the delta store. New files being created can be identified using
event reporting by applications, for example, though event
notifications provided through the FSEvents API.
[0051] FIGS. 4A-4C are example diagrams showing a file system
structure generated for a virtual file system. The virtual file
system can be generated, for example, using data stored in the
delta store. FIG. 4A shows a portion of a virtual file system
generated when a file is being deleted within a particular epoch.
In particular, FIG. 4A shows three fault directories 402a-c along
the path of the file. The fault directories 402a-c correspond to
the structure of the current file system hierarchy, but can have
zero data.
[0052] The entry for the file 404 includes a deletion marker
indicating that the file is being deleted and therefore should not
be included in later backups. Additionally, the file data for the
file prior to deletion is included in the backup so that it can be
restored. Thus, when displaying a representation of the file system
corresponding to the backup, the file corresponding to the entry
will be presented as present in the file system. This is in
contrast to entries for created items, which do not include the
file data and do not present the newly created items when
displaying a representation of the file system in the backup for
that epoch (but will appear in representations of later backups
unless deleted).
[0053] FIG. 4B shows three fault directories 406a-c along the path
of the file. The fault directories 406a-c correspond to the
structure of the current file system hierarchy, but can have zero
data. The entry for the file 408 includes a change marker
indicating that the file is being modified. Additionally, the file
data for the file prior to modification is included in the backup.
Thus, when displaying a representation of the file system
corresponding to the backup, the unmodified file will be presented
as present in the file system. Additionally, this version of the
file can be restored from the locally stored backup.
[0054] FIG. 4C shows three fault directories 410a-c along the path
of the file. The fault directories 410a-c correspond to the
structure of the current file system hierarchy, but can have zero
data. The entry for the file 412 includes a move marker indicating
that the file is being moved. The move marker can further include a
pointer identifying the moved location of the file. The file data,
however, is not included since the current file system file has the
same data, just the location has been changed.
[0055] FIG. 5 is a flow diagram of an example process 500 for
displaying local backup data. The process 500 can be performed by a
system including one or more computing devices, for example, the
computing device 102 of FIG. 1.
[0056] A request is received to view backup content (502). In some
implementations, a user request to view backup content is submitted
from a user interface window of the current file system (e.g., a
window displaying folders or files of the current file system). For
example, the user can submit the request in order to restore an
earlier version of a file or restore a deleted file that is no
longer present in the current file system. The window displaying
content from the current file system can include an icon or menu
item to enter a backup interface that can be selected by the
user.
[0057] A determination is made as to whether local backups are the
only available or whether backups stored on external storage device
are available (504). For example, when the user's device is
disconnected from an external storage device for storing backup
data, only local backups may be available. Alternatively, when the
user's device is connected to the external storage device,
externally stored backup data is available.
[0058] When externally stored backups are available, a backup
interface is generated including one or more representations of the
backup content from the external storage backups (506). In some
implementations, the backup interface provides one or more visual
representations of the same file system window previously presented
to the user. However, the content in the visual representations of
the file system window correspond to the content present in the
particular backup. For example, the window can display files or
folders present in the backup of the file system.
[0059] In some implementations, the user can interact with the
visual representations to select particular data items (e.g., for
restoration) or to navigate the file system hierarchy (e.g.,
opening a folder to view the contents within another visual
representation. A different visual representation can be presented
for each backup, for example, one at a time or as part of a stack
of visual representations to which the user can navigate. In some
implementations, both any local backups locally stored and the
externally stored local backups are both presented in the backup
interface. The different types of backups can be differentiated in
the backup interface, for example, using different visual cues
(e.g., different colors or different visual effects such as
badging) to distinguish the locally stored and externally stored
backup data.
[0060] When only local backups are available, a first visual
representation of a first local backup is generated (508). The
first visual representation is generated using the virtual file
system generated using data of the most recent local backup as well
as the current file system data. Generating the first visual
representation is described in greater detail below with respect to
FIG. 6.
[0061] The first visual representation is presented, for example,
within a backup interface (510). The first visual representation
can be presented in a similar manner to the visual representations
of externally stored backups. Thus, the first visual representation
can present a file system window corresponding to the file system
window previously presented to the user but with content
corresponding to the particular local backup. The visual
representation is tied to the underlying data of the virtual file
system.
[0062] A user input is received in the backup interface (512). In
particular, the user can interact with the visual representation,
for example, to navigate within the file system of the backup as
well as to select one or more displayed items for restoration. The
user can also provide an input to view another visual
representation corresponding to an earlier local backup. For
example, a particular file the user is looking for may not be in
the most recent local backup. Therefore, the user can look in an
earlier backup.
[0063] A determination is made as to whether the input is a restore
input, a request to view a visual representation of an earlier
local backup, or a navigational input (514). If the input is a
restore input, the virtual file system is used to identify
corresponding data in the delta store to restore (516). The restore
input can be received, for example, according to a user selection
of one or more data items in the first visual representation. For
example, the user can select one or more files for restoration.
Data within the virtual file system corresponding to a selected
file is identified. The data item is then restored to the current
file system (518). Restoring can include replacing a current
version of the data item with the restored version. Alternatively,
restoring the data item can include copying the restored data item
to the current file system such that both the existing version of
the data item and the restored version are retained.
[0064] If the input is a navigation input, a corresponding
modification is performed (520). For example, the navigation input
can be to display a different level of the file system hierarchy of
the backup (e.g., by opening a folder). The visual representation
can be modified to present the selected portion of the file system.
In another example, the navigation input can be to exit the backup
interface. The backup interface can be dismissed (with or without
animation) and the user returned to the same file system window
from which the backup interface was invoked.
[0065] If the input is to view a visual representation of an
earlier local backup, a second visual representation corresponding
to the requested earlier local backup is generated and presented
(520).
[0066] FIG. 6 is a flow diagram of an example process 600 for
generating a visual representation of a particular local backup.
The process 600 can be performed by a system including one or more
computing devices, for example, the computing device 102 of FIG.
1.
[0067] In response to the request to display a visual
representation of the local backup, the contents of the current
file system are identified (602). Data from a first virtual file
system of a local backup is also identified (604). In some
implementations, the first virtual file system data of the most
recent local backup is identified. The first virtual file system
data can be generated on the fly, e.g., in response to a request
for a display of a particular local backup. The first virtual file
system can be generated, for example, using data corresponding to
the local backup located in a particular delta store of a local
storage device. In some alternative implementations, a virtual file
system is generated for each local backup using the delta store and
stored, e.g., in the local storage device.
[0068] The current file system data is compared to the first
virtual file system data (606). In some implementations, one or
more set operations are performed to identify differences between
the two file systems. These differences can indicate content to be
added or removed from the visual representation of the backup
relative to the current file system. For example, if the current
file system does not include a particular file while the virtual
file system does includes a file indicating that the file was
deleted, then the file should be shown in any generated visual
representation. Similarly, if a file exists in the current file
system while a creation marker is present in the virtual file
system, then the file should not be presented (the creation marker
causes the file to be subtracted in the comparison). However, if
the file exists in the current file system and the virtual file
system does not include a marker for that file, then the file
should be presented as the current file is consistent with the
backup.
[0069] Whether to add or remove a particular data item such as a
file as a result of the comparison depends on the particular
virtual file system markers. Thus, starting with the full file
system from the current file system, data items are added or
subtracted based on the markers in the virtual file system. This
allows for the generation of visual representations of the full
backup file system using a reduced representation provided by the
virtual file system.
[0070] A visual representation of the backup is generated from the
result set of the comparison (608). The identified file system
hierarchy of the result set is used to generate the visual
representation of that file system hierarchy, in particular, the
portion corresponding to the file system window that was previously
being presented to the user prior to requesting the backup.
Additional visual representations of different portions of the
backup can be generated from the result set as the user navigates
the visual representation.
[0071] A request is received to view a second visual representation
corresponding to an earlier backup (610). In response to the
request, a second virtual file system corresponding to the earlier
backup is identified (612). In particular, the second virtual file
system can correspond to the next earlier backup relative to the
first virtual file system and can be generated in response to the
request. A comparison is made between the previous result set
(e.g., between the current and first virtual file system) and the
second virtual file system (614). For example, the comparison can
include one or more set operations as described above. A second
visual representation is generated from the second result set.
[0072] In some implementations, the virtual file systems are
cumulative such that in order to identify the content to display in
a visual representation of a given backup, all virtual file system
representations between the current file system and the backup
content to be displayed are traversed. Thus, if the backup content
of a fifth virtual file system corresponding to a fifth backup from
the current file system is to be displayed, the fifth virtual file
system is compared with a result set corresponding to a comparison
of the prior result sets for each step from the current file system
(e.g., between the current file system and the first virtual file
system, between the first result set and the second virtual file
system, etc.). While increasing processing for displaying older
backups, each virtual file system is allowed to be more compact
while being able to fully reconstruct the file system at that point
in time.
[0073] FIG. 7 is an example backup user interface 700. The backup
interface can be generated, for example, within a desktop user
interface of a user's computing device in response to a user
request to view backup data. In some implementations, the user
request is initiated from a user interface window displaying
particular current file system content (e.g., a particular
directory of the file system). In some implementations, the backup
interface is a window presented within the desktop user interface.
In some other implementations, the backup interface is presented as
an overlay to the desktop user interface such that only the backup
user interface is visible.
[0074] The backup user interface 700 includes a first visual
representation 702 of backup data. The first visual representation
702 can correspond to a visual representation of the same user
interface window (e.g., as previously viewed by the user before
initiating the backup interface), but displaying content
corresponding to the backup as defined by the virtual file system.
Thus, the first visual representation 702 presents the user
interface window as it appeared at the time of the backup.
[0075] The first visual representation 702 is not an image;
however, but an interactive representation from which the user can
navigate the file system of the backup (e.g., by opening file 704
to view the corresponding contents) as well as select one or more
items (e.g., item 706) for restoration, for example, by then
selecting a restore button 708. Additional visual representations
corresponding to other backups can be presented (e.g., as
placeholders or actual backup visual representation). For example,
a stack 710 can be used to represent additional backup visual
representations in chronological order. In some implementations,
the contents of each visual representation in the stack are
generated upon selection, or are navigated to, by the user.
[0076] FIG. 8 is a flow diagram of an example process 800 for
migrating local backups to remote backups. The process 800 can be
performed by a system including one or more computing devices, for
example, the computing device 102 of FIG. 1. For example, when a
user reconnects to a remote storage device used for storing
backups, the particular local backups that were generated for local
storage while the remote storage device was disconnected can be
migrated to backups for the remote storage device.
[0077] A connection is made with an external storage device (802).
For example, the user a portable computing device can reconnect
with an external storage location used for backups (e.g., an
external storage disk, a server, a cloud storage location on a
network, etc.).
[0078] A backup is generated of the current file system and stored
on the external storage device (804). Thus, a backup is generated
corresponding to the current file system existing on the user
device (e.g., generated based on all changes between the previous
backup on the external storage device and the current data).
[0079] Local backups for migration are identified (806). Since the
current data has already been backed up, for each local backup
there is already an older and a newer backup on the external
storage device. For example, consider a scenario where the next
newest backup on the remote storage device generated three hours
ago is backup-3 and the newest backup just taken is backup-now.
Additionally, there are two locally stored backups backup-1 and
backup-2, where backup-1 was generated 1 hour ago and backup-2 was
generated two hours ago. In some implementations, there may still
be local backups stored that are older than the next externally
stored backup (e.g., older than three hours in the example). These
can be ignored since they are older than the externally stored
backup.
[0080] Identified local backups are migrated to the external
storage (810). In particular, in some implementations, the local
backups are migrated from newest to oldest (e.g., first backup-1
and then backup-2). In order to migrate the local backups, the
virtual file system entries are examined. For example, when looking
at a particular folder, a determination needs to be made as to
whether that folder has changed or whether anything within that
folder is different than what was in either the latest externally
stored backup or the previously stored external backup (e.g.,
backup-3 and backup-now). Whenever changed information is added to
the virtual file system of a given backup, a marker or extended
attribute is added to the virtual file system as well. This marker
indicates that the item present in the virtual file system is a
copy in the delta store of the local storage, not the original.
Thus, this is likely an item that needs to be migrated to the
external storage. These items are then copied and linked to
identical content in other externally stored backups (e.g., using
hardlinks). In particular, when migrating backup-1, items that are
identified as the same as what is in the current disk (backup-now)
(e.g., there is no corresponding virtual file system entry for
unchanged items and therefore no marker) are linked to the matching
path on the current backup (backup-now).
[0081] Items that are likely to be different based on the existence
of the marker are compared directly to the corresponding item in
the current backup (backup-now) and linked to the corresponding
path in backup-now if they are identical, and then compared to the
prior external backup (backup-3) and linked to the corresponding
path there if identical. If neither matches, the content of the
data is copied to the backup-1 being created (e.g., the data does
not exist on any other backup). The process continues sequentially
for each local backup. However, going back in time the comparison
is not to the current backup but to the most closely generated
external backup following the one being migrated. For example,
after backup-1 has been migrated, when migrating backup-2 the
comparison is between backup-3 and backup-1 instead of backup-3 and
backup-now.
[0082] Embodiments of the subject matter and the operations
described in this specification can be implemented in digital
electronic circuitry, or in computer software, firmware, or
hardware, including the structures disclosed in this specification
and their structural equivalents, or in combinations of one or more
of them. Embodiments of the subject matter described in this
specification can be implemented as one or more computer programs,
i.e., one or more modules of computer program instructions, encoded
on computer storage medium for execution by, or to control the
operation of, data processing apparatus. Alternatively or in
addition, the program instructions can be encoded on an
artificially-generated propagated signal, e.g., a machine-generated
electrical, optical, or electromagnetic signal, that is generated
to encode information for transmission to suitable receiver
apparatus for execution by a data processing apparatus. A computer
storage medium can be, or be included in, a computer-readable
storage device, a computer-readable storage substrate, a random or
serial access memory array or device, or a combination of one or
more of them. Moreover, while a computer storage medium is not a
propagated signal, a computer storage medium can be a source or
destination of computer program instructions encoded in an
artificially-generated propagated signal. The computer storage
medium can also be, or be included in, one or more separate
physical components or media (e.g., multiple CDs, disks, or other
storage devices).
[0083] The operations described in this specification can be
implemented as operations performed by a data processing apparatus
on data stored on one or more computer-readable storage devices or
received from other sources.
[0084] The term "data processing apparatus" encompasses all kinds
of apparatus, devices, and machines for processing data, including
by way of example a programmable processor, a computer, a system on
a chip, or multiple ones, or combinations, of the foregoing The
apparatus can include special purpose logic circuitry, e.g., an
FPGA (field programmable gate array) or an ASIC
(application-specific integrated circuit). The apparatus can also
include, in addition to hardware, code that creates an execution
environment for the computer program in question, e.g., code that
constitutes processor firmware, a protocol stack, a database
management system, an operating system, a cross-platform runtime
environment, a virtual machine, or a combination of one or more of
them. The apparatus and execution environment can realize various
different computing model infrastructures, such as web services,
distributed computing and grid computing infrastructures.
[0085] A computer program (also known as a program, software,
software application, script, or code) can be written in any form
of programming language, including compiled or interpreted
languages, declarative or procedural languages, and it can be
deployed in any form, including as a stand-alone program or as a
module, component, subroutine, object, or other unit suitable for
use in a computing environment. A computer program may, but need
not, correspond to a file in a file system. A program can be stored
in a portion of a file that holds other programs or data (e.g., one
or more scripts stored in a markup language document), in a single
file dedicated to the program in question, or in multiple
coordinated files (e.g., files that store one or more modules,
sub-programs, or portions of code). A computer program can be
deployed to be executed on one computer or on multiple computers
that are located at one site or distributed across multiple sites
and interconnected by a communication network.
[0086] The processes and logic flows described in this
specification can be performed by one or more programmable
processors executing one or more computer programs to perform
actions by operating on input data and generating output. The
processes and logic flows can also be performed by, and apparatus
can also be implemented as, special purpose logic circuitry, e.g.,
an FPGA (field programmable gate array) or an ASIC
(application-specific integrated circuit).
[0087] Processors suitable for the execution of a computer program
include, by way of example, both general and special purpose
microprocessors, and any one or more processors of any kind of
digital computer. Generally, a processor will receive instructions
and data from a read-only memory or a random access memory or both.
The essential elements of a computer are a processor for performing
actions in accordance with instructions and one or more memory
devices for storing instructions and data. Generally, a computer
will also include, or be operatively coupled to receive data from
or transfer data to, or both, one or more mass storage devices for
storing data, e.g., magnetic, magneto-optical disks, or optical
disks. However, a computer need not have such devices. Moreover, a
computer can be embedded in another device, e.g., a mobile
telephone, a personal digital assistant (PDA), a mobile audio or
video player, a game console, a Global Positioning System (GPS)
receiver, or a portable storage device (e.g., a universal serial
bus (USB) flash drive), to name just a few. Devices suitable for
storing computer program instructions and data include all forms of
non-volatile memory, media and memory devices, including by way of
example semiconductor memory devices, e.g., EPROM, EEPROM, and
flash memory devices; magnetic disks, e.g., internal hard disks or
removable disks; magneto-optical disks; and CD-ROM and DVD-ROM
disks. The processor and the memory can be supplemented by, or
incorporated in, special purpose logic circuitry.
[0088] To provide for interaction with a user, embodiments of the
subject matter described in this specification can be implemented
on a computer having a display device, e.g., a CRT (cathode ray
tube) or LCD (liquid crystal display) monitor, for displaying
information to the user and a keyboard and a pointing device, e.g.,
a mouse or a trackball, by which the user can provide input to the
computer. Other kinds of devices can be used to provide for
interaction with a user as well; for example, feedback provided to
the user can be any form of sensory feedback, e.g., visual
feedback, auditory feedback, or tactile feedback; and input from
the user can be received in any form, including acoustic, speech,
or tactile input. In addition, a computer can interact with a user
by sending documents to and receiving documents from a device that
is used by the user; for example, by sending web pages to a web
browser on a user's client device in response to requests received
from the web browser.
[0089] Embodiments of the subject matter described in this
specification can be implemented in a computing system that
includes a back-end component, e.g., as a data server, or that
includes a middleware component, e.g., an application server, or
that includes a front-end component, e.g., a client computer having
a graphical user interface or a Web browser through which a user
can interact with an implementation of the subject matter described
in this specification, or any combination of one or more such
back-end, middleware, or front-end components. The components of
the system can be interconnected by any form or medium of digital
data communication, e.g., a communication network. Examples of
communication networks include a local area network ("LAN") and a
wide area network ("WAN"), an inter-network (e.g., the Internet),
and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
[0090] The computing system can include clients and servers. A
client and server are generally remote from each other and
typically interact through a communication network. The
relationship of client and server arises by virtue of computer
programs running on the respective computers and having a
client-server relationship to each other. In some embodiments, a
server transmits data (e.g., an HTML page) to a client device
(e.g., for purposes of displaying data to and receiving user input
from a user interacting with the client device). Data generated at
the client device (e.g., a result of the user interaction) can be
received from the client device at the server.
[0091] While this specification contains many specific
implementation details, these should not be construed as
limitations on the scope of any inventions or of what may be
claimed, but rather as descriptions of features specific to
particular embodiments of particular inventions. Certain features
that are described in this specification in the context of separate
embodiments can also be implemented in combination in a single
embodiment. Conversely, various features that are described in the
context of a single embodiment can also be implemented in multiple
embodiments separately or in any suitable subcombination. Moreover,
although features may be described above as acting in certain
combinations and even initially claimed as such, one or more
features from a claimed combination can in some cases be excised
from the combination, and the claimed combination may be directed
to a subcombination or variation of a subcombination.
[0092] Similarly, while operations are depicted in the drawings in
a particular order, this should not be understood as requiring that
such operations be performed in the particular order shown or in
sequential order, or that all illustrated operations be performed,
to achieve desirable results. In certain circumstances,
multitasking and parallel processing may be advantageous. Moreover,
the separation of various system components in the embodiments
described above should not be understood as requiring such
separation in all embodiments, and it should be understood that the
described program components and systems can generally be
integrated together in a single software product or packaged into
multiple software products.
[0093] Thus, particular embodiments of the subject matter have been
described. Other embodiments are within the scope of the following
claims. In some cases, the actions recited in the claims can be
performed in a different order and still achieve desirable results.
In addition, the processes depicted in the accompanying figures do
not necessarily require the particular order shown, or sequential
order, to achieve desirable results. In certain implementations,
multitasking and parallel processing may be advantageous.
* * * * *