U.S. patent application number 12/881603 was filed with the patent office on 2011-01-06 for data backup devices and methods for backing up data.
Invention is credited to Jeffrey Brunet, Yousuf Chowdhary, Ian Collins, Eric Li.
Application Number | 20110004459 12/881603 |
Document ID | / |
Family ID | 37942264 |
Filed Date | 2011-01-06 |
United States Patent
Application |
20110004459 |
Kind Code |
A1 |
Collins; Ian ; et
al. |
January 6, 2011 |
Data Backup Devices and Methods for Backing Up Data
Abstract
A data backup system comprises an emulation component and a
storage device having logical storage areas. The emulation
component is configured to represent a first logical storage area
of the storage device, such as a solid state memory or a disk drive
partition, as if it were an auto-launch device. Accordingly, a data
source, such as a personal computer, will interact with the first
logical storage area as if it were the auto-launch device. As some
operating systems are configured to recognize auto-launch devices
upon connection and automatically execute applications stored
thereon, merely connecting the data backup system to a data source
running such an operating system can cause a backup application
stored by the first logical storage area to automatically execute
on the data source to selectively back up data to a second logical
storage area of the storage device.
Inventors: |
Collins; Ian; (Markham,
CA) ; Li; Eric; (Scarborough, CA) ; Chowdhary;
Yousuf; (Maple, CA) ; Brunet; Jeffrey;
(Richmond, CA) |
Correspondence
Address: |
Gard and Kaslow LLP
4 Main Street, Suite 120
Los Altos
CA
94022
US
|
Family ID: |
37942264 |
Appl. No.: |
12/881603 |
Filed: |
September 14, 2010 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
11506386 |
Aug 18, 2006 |
7818160 |
|
|
12881603 |
|
|
|
|
11492380 |
Jul 24, 2006 |
7813913 |
|
|
11506386 |
|
|
|
|
60725225 |
Oct 12, 2005 |
|
|
|
Current U.S.
Class: |
703/24 ; 707/640;
707/E17.01 |
Current CPC
Class: |
G06F 3/0677 20130101;
G06F 3/0679 20130101; G06F 3/0676 20130101; G06F 11/1456 20130101;
G06F 3/065 20130101; G06F 3/0605 20130101; G06F 11/1461 20130101;
G06F 11/1451 20130101; G06F 3/0632 20130101 |
Class at
Publication: |
703/24 ; 707/640;
707/E17.01 |
International
Class: |
G06F 9/455 20060101
G06F009/455; G06F 17/00 20060101 G06F017/00 |
Claims
1. A data backup system comprising: a communication interface; a
first storage device including a writable data storage medium
comprising first and second logical storage areas; and an emulation
component in communication between the first storage device and the
communication interface and comprising: logic configured to
represent the first logical storage area as an auto-launch device;
and logic configured to represent the second logical storage area
as a second storage device including a writable data storage
medium.
2. The data backup system of claim 1 wherein the communication
interface comprises a USB communication interface.
3. The data backup system of claim 1 wherein the communication
interface comprises a FireWire communication interface.
4. The data backup system of claim 1 wherein the first storage
device comprises a HDD.
5. The data backup system of claim 4 wherein the first and second
logical storage areas comprise first and second partitions.
6. The data backup system of claim 5 wherein the logic configured
to represent the first logical storage area as the auto-launch
device represents the first partition as a CD drive.
7. The data backup system of claim 5 wherein the logic configured
to represent the first logical storage area as the auto-launch
device represents the first partition as a DVD drive.
8. The data backup system of claim 1 wherein the first storage
device comprises solid-state memory.
9. The data backup system of claim 8 wherein the solid-state memory
comprises an SD memory card.
10. The data backup system of claim 8 wherein the solid-state
memory comprises a CF memory card.
11. The data backup system of claim 1 wherein the first storage
device comprises an optical device.
12. The data backup system of claim 11 wherein the optical device
comprises a CD drive.
13. The data backup system of claim 12 wherein the writable data
storage medium comprises a CD-R.
14. The data backup system of claim 12 wherein the writable data
storage medium comprises a CD-RW.
15. The data backup system of claim 11 wherein the optical device
comprises a DVD drive.
16. The data backup system of claim 15 wherein the writable data
storage medium comprises a DVD+R.
17. The data backup system of claim 15 wherein the writable data
storage medium comprises a DVD-R.
18. The data backup system of claim 15 wherein the writable data
storage medium comprises a DVD+RW.
19. The data backup system of claim 15 wherein the writable data
storage medium comprises a DVD-RW.
20. The data backup system of claim 1 wherein the emulation
component further comprises logic configured to receive auto-launch
device commands from the communication interface, translate the
auto-launch device commands to first storage device commands, and
send the first storage device commands to the first logical storage
area, and receive first storage device responses from the first
logical storage area, translate the first storage device responses
into auto-launch device responses, and send the auto-launch device
responses to the communication interface.
21. The data backup system of claim 20 wherein the emulation
component further comprises logic configured to receive second
storage device commands from the communication interface and send
the second storage device commands to the second logical storage
area, and receive second storage device responses from the second
logical storage area, and send the second storage device responses
to the communication interface.
22. The data backup system of claim 1 wherein a data backup
application is stored in the first logical storage area.
23. A method for backing up data stored on a data source, the
method comprising: returning a response to an inquiry from the data
source, the response identifying a first storage device of a first
device type as being of a second device type, where the second
device type belongs to a class of device types that, upon
connection to the data source, will trigger an operating system of
the data source to automatically execute a backup application
stored on the first storage device; and providing the backup
application to the data source to selectively copy data stored on
the data source, providing the backup application including
receiving auto-launch device commands from the data source,
translating the auto-launch device commands into first storage
device commands, and sending the first storage device commands to
the storage device; and receiving first storage device responses
from the first storage device, translating the first storage device
responses into auto-launch device responses, and sending the
auto-launch device responses to the data source.
24. The method of claim 23 further comprising selectively copying
data files to a second storage device.
25. The method of claim 24 wherein selectively copying data files
to the second storage device includes searching one or more storage
devices associated with the data source for data files that meet a
predefined criterion.
26. The method of claim 25 wherein the predefined criterion is that
the data files have not previously been copied to a data backup
system.
27. The method of claim 25 wherein the predefined criterion is that
the data files have one or more file types associated with a type
of content.
28. The method of claim 24 wherein selectively copying data files
to the second storage device includes creating a directory
structure on the second storage device to indicate the location of
a copied file on the data source.
29. The method of claim 24 wherein selectively copying data files
to the second storage device is initiated by a user command.
30. The method of claim 24 wherein selectively copying data files
to the second storage device is initiated by connecting a removable
storage device to a communication port of a data backup system.
31. The method of claim 24 wherein selectively copying data files
to the second storage device includes determining whether a data
source has been previously paired with a data backup system.
32. The method of claim 24 wherein the first storage device
comprises the second storage device.
33. The method of claim 24 wherein selectively copying data files
to the second storage device includes sending copied files to a
web-based storage facility.
34. The method of claim 24 wherein selectively copying data files
to the second storage device includes sending copied files to a
networked drive.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a divisional application of, and claims
priority to, U.S. Non-Provisional patent application Ser. No.
11/492,380 filed on Jul. 24, 2006 and entitled "Emulation Component
for Data Backup Applications" which claims the benefit of U.S.
Provisional Patent Application No. 60/725,225 filed on Sep. 27,
2005 and entitled "A Method, Apparatus and a System for Removable
Media Device Emulation on an External Storage Device via an
Emulation Component for the Purpose of an Electronic Data Backup
Appliance;" this application likewise claims the benefit of U.S.
Provisional Patent Application No. 60/725,225.
BACKGROUND OF THE INVENTION
[0002] 1. Field of the Invention
[0003] The present invention relates generally to the field of
digital data management and more particularly to a system for data
backup applications.
[0004] 2. Description of the Prior Art
[0005] Digital content, represented by digital data files of
various file types, is rapidly replacing other forms of content.
Documents, presentations, photos, movies, and music, for example,
are increasingly produced and stored digitally. A problem for many
individuals and organizations is that digital content, typically
stored on a computer hard drive, can be poorly organized and needs
to be archived to be protected against accidental loss. For
example, digital photo files on a personal computer (PC) are likely
to be found in numerous folders--photos transferred from a digital
camera are stored in one set of folders, photos received as e-mail
attachments are stored in other folders, and photos downloaded from
websites are stored in still other folders.
[0006] One approach to archiving digital content is to periodically
backup all of the data files on the computer, preserving the
existing organizational structure. While this technique is
effective to preserve digital content against accidental loss, the
technique has several shortcomings. For one, the resulting copy is
no better organized than the original, so misplaced or disorganized
content remains misplaced or disorganized. Also, backing up all
data files requires substantial memory capacity to copy numerous
files that are otherwise already preserved elsewhere. Application
specific files, for example, originally loaded onto the computer
from a compact disk (CD) are already archived on the CD and
therefore do not need to be backed up.
[0007] The necessary storage capacity for a complete backup can be
obtained with writable data storage media, such as hard disk drives
(HDDs), however, these require device installation and software
set-up when first connected to a system. In order to complete these
steps, a user may have to provide information about the existing
system, which the user may not readily know. Also, the user may
have to make decisions regarding the configuration of the device
and the software. The number of steps involved with installation
and set-up, as well as the complexity of some of the steps,
dissuades many users from bothering with backup applications. The
expense of a writable data storage media with enough capacity to
perform a complete backup can also dissuade users from performing
complete backups. Furthermore, some users, having bought and
installed the necessary storage capacity, are dissuaded from
performing frequent backups due to the length of time the system is
tied up during complete backup.
[0008] Alternately, a user can manually select a set of files from
a directory and copy the selected files to a storage device. While
this alternative may allow usage of a smaller memory device that
does not require installation and set-up steps, manually selecting
files is time-consuming. Also, manually selecting files creates the
possibility of an accidental omission of some files.
[0009] What is needed, therefore, is the ability to selectively
backup digital content in a manner that is both inexpensive and
convenient.
SUMMARY
[0010] An exemplary data backup system comprises a communication
interface, a first storage device, and an emulation component. The
first storage device includes a writable data storage medium
comprising first and second logical storage areas, and in some
embodiments the first logical storage area stores a data backup
application. The emulation component is in communication between
the first storage device and the communication interface. The
emulation component comprises logic configured to represent the
first logical storage area as an auto-launch device, and additional
logic configured to represent the second logical storage area as a
second storage device including a writable data storage medium. It
will be appreciated that the logic of the emulation component can
be implemented through software, hardware, firmware, or a
combination thereof.
[0011] The emulation component of the exemplary data backup system
can also comprise, in some embodiments, logic configured to receive
auto-launch device commands from the communication interface,
translate the auto-launch device commands to first storage device
commands, and send the first storage device commands to the first
logical storage area, and additional logic configured to receive
first storage device responses from the first logical storage area,
translate the first storage device responses into auto-launch
device responses, and send the auto-launch device responses to the
communication interface. The emulation component can further
comprise logic configured to receive second storage device commands
from the communication interface and send the second storage device
commands to the second logical storage area, and additional logic
configured to receive second storage device responses from the
second logical storage area, and send the second storage device
responses to the communication interface.
[0012] In some embodiments the first storage device comprises a
HDD, and in some of these embodiments the first and second logical
storage areas comprise first and second partitions of the HDD. In
other embodiments the first storage device comprises solid-state
memory or an optical device. Suitable solid state memories include
any solid state memory that can be written at least once, including
a Secure Digital (SD) memory card, a Compact Flash (CF) memory
card, or a memory stick. Suitable optical devices include CD and
Digital Video Disc (DVD) drives. Exemplary writable data storage
media for these drives include Compact Disc-Recordable (CD-R) and
Compact Disc ReWritable (CD-RW) media, and Digital Video
Disc-Recordable (DVD-R and DVD+R) and Digital Video Disc ReWritable
(DVD-RW and DVD+RW) media, respectively.
[0013] An exemplary method for backing up data stored on a data
source comprises returning a response to an inquiry from the data
source. The response identifies a first storage device of a first
device type as instead being of a second device type. Here, the
second device type belongs to a class of device types that, upon
connection to the data source, will trigger an operating system of
the data source to automatically execute a backup application
stored on the first storage device. The exemplary method further
comprises providing the backup application to the data source to
selectively copy data stored on the data source. Providing the
backup application includes receiving auto-launch device commands
from the data source, translating the auto-launch device commands
into first storage device commands, and sending the first storage
device commands to the storage device. Providing the backup
application also includes receiving first storage device responses
from the first storage device, translating the first storage device
responses into auto-launch device responses, and sending the
auto-launch device responses to the data source.
[0014] In some embodiments, the method for backing up data stored
on the data source also comprises selectively copying data files to
a second storage device, and in some embodiments the first storage
device comprises the second storage device. In other embodiments,
selectively copying data files includes sending copied files to a
web-based storage facility. Selectively copying data files can
include searching one or more storage devices associated with the
data source for data files that meet a predefined criterion, for
example, that the data files have not previously been copied to a
data backup system, or that the data files have a file type
associated with a type of content. Selectively copying data files
can also include creating a directory structure on the second
storage device to indicate the location of a copied file on the
data source. Selectively copying data files can further include
determining whether a data source has been previously paired with a
data backup system. Selectively copying data files can be
initiated, in some embodiments, by a user command or by connecting
a removable storage device to a communication port of a data backup
system.
BRIEF DESCRIPTION OF DRAWINGS
[0015] FIG. 1 is a schematic representation of a data backup system
according to an exemplary embodiment of the present invention.
[0016] FIG. 2 is a schematic representation of a data backup system
according to another exemplary embodiment of the present
invention.
[0017] FIG. 3 is a flow-chart representation of a method for
backing up data files on a data source according to an exemplary
embodiment of the present invention.
[0018] FIG. 4 is a flow-chart representation of a process by which
a data backup system can be recognized by the data source as being
two attached devices according to an exemplary embodiment of the
present invention.
DETAILED DESCRIPTION OF THE INVENTION
[0019] A data backup system is provided for personal, as well as
commercial, applications. The data backup system of the present
invention allows files to be selectively copied from a data source,
such as a personal computer, to a storage device according to some
criteria such as file type. For example, the system can be
configured to backup audio files having recognized music file
extensions such as .mp3 and .wav, or image files having recognized
image file extensions such as .jpg, .pct, and .tif. The data backup
system, according to some embodiments, stores a backup application
that automatically launches when the data backup system is
connected to the data source. The backup application can be
configured to require little or no user input to perform the backup
process.
[0020] The data backup system can take a number of different forms.
One example is an appliance that includes both the backup
application and sufficient storage capacity for copied files.
Another example is a device that includes the backup application
and an interface for connecting sufficient storage capacity in the
form of a storage device such as an external HDD or flash memory
device. In both examples, the system includes an emulation
component. The emulation component makes the portion of the data
backup system that contains the backup application appear to the
data source as if it were of a particular device type. More
specifically, the backup application portion of the data backup
system is represented as being one of a class of storage devices
referred to herein as "auto-launch devices." Emulating an
auto-launch device allows the data backup system to take advantage
of automatic execution capabilities of certain operating systems so
that the backup application will automatically be executed when the
device is connected to a data source running the operating
system.
[0021] FIG. 1 provides a schematic representation of an exemplary
embodiment of a data backup system 100 connected to a data source
110 by a connection 120. The data source 110 can be, for example, a
personal computer (PC), a Macintosh computer (Mac), or a Personal
Digital Assistant (PDA) on which data resides. The data source 110
can also comprise a server, a settop box, a television, a cellular
telephone, a Smartphone, a digital still camera or video camera, a
scanner, a digital music or video player, a game console, or a
Personal Video Recorder (PVR). Preferably, the data source 100
includes an operating system (OS), such as Windows XP, that
includes an automatic application launching function, as discussed
in more detail elsewhere herein. Other suitable operating systems
include MacOS, PalmOS, Linux, and Unix, for example. The connection
120 between the backup system 100 and the data source 110 can be
essentially any data transfer mechanism such as an optical or
electrical cable, a wireless link, or a network connection. The
connection 120 is shown with a dashed line in FIG. 1 to indicate
that the connection 120 need only be temporary.
[0022] As shown in FIG. 1, the backup system 100 comprises a
communication interface 130, an emulation component 140, and a
storage device 150 that includes a first logical storage area 160
and second logical storage area 170. The communication interface
130 allows the data source 110 to communicate with the emulation
component 140 of the backup system 100 according to a communication
protocol. The communication interface 130 can be, for example, USB,
FireWire, or a wireless interface such as infrared, Bluetooth, or
WiFi.
[0023] It will be appreciated that the backup system 100 can
include a plurality of communication interfaces 130, of the same or
of different types, to accommodate multiple and/or different data
sources 110. Depending on the type of communication. interface 130,
the communication interface 130 can include a communication port
through which the connection 120 to the data source 110 is made.
For instance, a USB communication interface 130 can include a USB
communication port, and a FireWire communication interface 130 can
include a FireWire communication port. Alternatively, the
communication interface 130 can include a wireless antennae or an
infrared transmitter/receiver unit for sending and receiving
infrared signals.
[0024] The storage device 150 comprises a writable data storage
medium and can be, for example, a HDD that has been partitioned
into at least two logical storage areas. In this instance, each
logical storage area is a partition of the HDD. Suitable HDDs for
the storage device 150 include 1.0 inch, 1.8 inch, 2.5 inch, and
3.5 inch hard drives having capacities of 20 to 60 gigabytes (GB)
or more. Other suitable storage devices 150 that include rewritable
media are solid-state memory devices, such as SD memory cards and
CF memory cards. The storage device 150 can also be an optical
device such as a CD drive or a DVD drive where the writable data
storage medium within such an optical storage device 150 can be
either a write-once medium, such as a CD-R, DVD-R, or DVD+R, or a
rewritable medium such as a CD-RW, DVD-RW, or DVD+RW.
[0025] The storage device 150 can also be implemented by two
different devices, one dedicated to each of the two logical storage
areas 160, 170. For example, the first logical storage area 160 can
be implemented by a CD drive with any CD media, while the second
logical storage area 170 is implemented by a HDD. In a further
example, the first logical storage area 160 can be implemented by a
solid state memory while the second logical storage area 170 is
implemented by an optical device with a writable data storage
medium. In this further example, the two different devices could be
contained within a common housing. It will be understood that the
device types, form factors, and capacities provided herein are
merely exemplary and not intended to be limiting.
[0026] In some embodiments, the backup system 100 further comprises
a memory device interface 190 that allows the first and second
logical storage areas 160 and 170 to communicate with the emulation
component 140. In these embodiments the memory device interface 190
is of a type that is appropriate to the type of storage device 150.
For instance, an Integrated Drive Electronics (IDE) interface 190
can be used with an IDE HDD storage device 150, and a Small
Computer System Interface (SCSI) interface 190 can be used with a
SCSI HDD storage device 150. Alternately, the memory device
interface 190 can be a SD memory card host interface where the
storage device 150 is a SD memory card. The interface 190 can also
be a wireless interface such as infrared, WiFi, and Bluetooth. The
memory device interface 190 can be implemented in the backup system
100 by an integrated circuit (IC) chip or through the use of
discrete components. The memory device interface 190 is integrated
into the memory device 150, in some embodiments. It will be
appreciated that in the embodiments noted above that employ
multiple storage devices 150, the backup system 100 can include
multiple memory device interfaces 190 as appropriate.
[0027] The first logical storage area 160 represents a logical area
of the memory device 150 that is meant to be inaccessible to the
user and safe from accidental erasure. The first logical storage
area 160 can contain, for example, a backup application, system
files, drivers, and other setup and configuration software. The
first logical storage area 160 is represented to the data source
110 by the emulation component 140 as being an auto-launch device.
As used herein, auto-launch devices are those devices that will
trigger the automatic execution functionalities of certain
operating systems, such as the AutoRun function of the Microsoft
Windows operating system. Examples of device types that will
trigger AutoRun of Windows include CD and DVD drives when a CD or
DVD medium is contained therein. In these examples, the Windows
AutoRun functionality is triggered either when the CD/DVD is placed
in the CD/DVD drive already connected to the data source 110, or
when the CD/DVD drive, already containing the CD/DVD medium, is
connected to the data source 110.
[0028] The second logical storage area 170 represents a logical
area of the memory device 150 that is dedicated to storing
backed-up data. Accordingly, the emulation component 140 represents
the second logical storage area 170 to the data source as being a
device type that includes a writable data storage medium. The
second logical storage area 170 can be represented as a HDD, CF, or
a SD memory card, for example. In some embodiments, the second
logical storage area 170 can be represented as the same type of
device as the storage device 150. In other embodiments the second
logical storage area 170 can be represented to be a different
device type than the storage device 150.
[0029] The emulation component 140 provides certain functions to
the backup system 100 and can be implemented through logic such as
software, firmware, hardware, or any combination of these. It will
be understood that within an embodiment different functions of the
emulation component can be implemented with different forms of
logic. Thus, while one function of the emulation component 140 is
implemented through firmware, for example, another function can be
implemented through software.
[0030] In one embodiment, the emulation component 140 includes an
IC. For example, the emulation component 140 can be implemented
using software, firmware, hardware, or some combination thereof,
incorporated in a USB controller chipset. In some USB-specific
embodiments, the emulation component 140 implements some or all of
a number of layered industry standards. Examples of such standards
include USB Specification--Revision 2.0, USB Mass Storage
Class--Bulk Only Transport--Revision 1.0, SCSI Primary Commands--3
(SPC-3), SCSI Block Commands--2 (SBC-2), Multimedia Commands--4
(MMC-4), and AT Attachment with Packet Interface--6 (ATA/ATAPI-6).
It should be noted that in some embodiments the emulation component
140 may only support subsets of the commands of these industry
standards.
[0031] Functions provided by the emulation component 140 can
include representing the first logical storage area 160 as an
auto-launch device and representing the second logical storage area
170 as a device including a writable data storage medium.
Accordingly, the data source 110 will recognize the data backup
system 100 as two attached devices when connected to the backup
system 100. It should be noted, however, that in some embodiments
the contents of these two devices are not accessible to the user of
the data source but are accessible by the backup application which
is configured with appropriate application programming interface
(API) calls. This serves to protect the contents of both the first
and second logical storage areas from accidental modification or
erasure. To access the backed up data from the second logical
storage area 170 in some embodiments, the data backup system 100
restores the data to the data source or copies the data to yet
another device. In other embodiments, the virtual device that
represents the second logical storage area 170 is accessible to the
user while the virtual device that represents the first logical
storage area 160 is not accessible. In these embodiments, the user
is allowed direct access to the contents of the second logical
storage area 170 but not the first logical storage area 160.
[0032] Another function that can be provided by the emulation
component 140 is translating commands and responses between
formats, such as between the command sets for a HDD and a CD drive.
In this way, when the data source 110 sends a command to the backup
system 100 addressed to the auto-launch device (as the first
logical storage area 160 is represented to be), the emulation
component 140 translates the command from an auto-launch device
format to the appropriate format for the storage device 150, before
sending the command to the first logical storage area 160.
Similarly, responses from the first logical storage area 160, in
the format of the storage device 150, are translated into the
auto-launch device format and sent to the data source 110 so the
response appears to have come from an auto-launch device.
[0033] It should be noted that translation between CD drive and HDD
formats is but one example, and in some embodiments the emulation
component 140 can implement one or more analogous format
translations. As used herein, a "storage device command" refers to
a command in an appropriate format for the specific storage device,
and a "storage device response" refers to a response in the same
format. As a specific example, an "auto-launch device command"
refers to a command in an appropriate format for a specific
auto-launch device, and an "auto-launch device response" refers to
a response in the same format.
[0034] Still another function that can be provided by the emulation
component 140 is to pass commands and responses between the data
source 110 and the second logical storage area 170. When the
commands received by the emulation component 140 are already in the
proper format for the storage device 150, the emulation component
140 does not have to translate commands or responses. Here, the
emulation component 140 receives commands from the data source 110
addressed to the device that includes the writable data storage
medium and passes the commands to the second logical storage area
170. In a similar fashion, responses are relayed back to the data
source 110 without translation. It will be appreciated that the
emulation component 140 can be configured to represent the second
logical storage area 170 as being of a different type of device
than the memory device 150. In these embodiments, the emulation
component 140 is configured to translate between the formats of the
memory device 150 and the device type of the representation of the
second logical storage area 170.
[0035] FIG. 2 provides a schematic representation of another
exemplary embodiment of a data backup system 200 that, like the
data backup system 100, is connected to the data source 110 by the
connection 120. Also like the data backup system 100, the backup
system 200 comprises the communication interface 130, and the
emulation component 140. In this embodiment, the backup system 200
also comprises storage device 210 including a writable data storage
medium and an appropriate memory device interface 220. Since the
writable data storage medium of the storage device 210 only needs
to include enough memory capacity to store a backup application and
the like, the backup system 200 can be of a fairly small form
factor, such as pocket-sized or a dongle, or be embedded in some
other device configuration such as a dock or a cradle.
[0036] The backup system 200 can also comprise a removable storage
device interface 230 to allow a removable storage device 240,
including a writable data storage medium, to be attached externally
to the data backup system 200 by way of a communication port 250.
The removable storage device interface 230 provides communication
between the emulation component 140 and the removable storage
device 240. In some embodiments the removable storage device
interface 230 is configured to support a removable device with an
integrated medium such as a flash memory device or a HDD. In other
embodiments, the removable device can be one that accepts removable
media, such as a CD drive.
[0037] It will be appreciated that the removable storage device
interface 230 is optional as the copied files do not necessarily
have to be stored to a memory device that is associated with the
data backup system 200. Alternately, the backup application can
direct copied files to be stored to an existing internal or
external drive of the data source or to a networked drive. In still
another option, the backup application can send copied files over
an Internet connection to be stored at a web-based storage
facility.
[0038] It should be noted that the backup systems 100, 200 can
include a display or other visual indicator such as a light
emitting diode (LED) to show files being copied, for instance,
though some embodiments do not include the display to lower the
cost and increase the durability of the backup systems 100, 200.
The backup systems 100, 200 can run off of a battery, an external
power source (e.g., an AC power outlet), or off of power supplied
by the data source 110. In some embodiments, the connection 120 is
a cable that is part of the backup system 100, 200. The backup
systems 100, 200 can also be configured as a cradle designed to
receive the removable storage device 240 or the data source 110
where the data source 110 is a consumer electronic device such as a
digital camera.
[0039] FIG. 3 is a flow-chart representation of an exemplary method
300 for backing up data files from a data source. The method 300
comprises providing 310 a data backup system including a storage
device storing a backup application, connecting 320 the data backup
system to the data source to automatically launch the backup
application, and selectively copying 330 the data files from the
data source.
[0040] Providing 310 the data backup system can include providing
data backup system 100 or data backup system 200, for example. In
those embodiments in which the data backup system 200 is provided,
providing 310 the data backup system 200 can include, for example,
connecting a removable storage device 240 to the communication port
250. Where the removable storage device 240 is, for example, a SD
or CF memory card, connecting the removable storage device 240 to
the communication port 250 can include inserting the memory card
into the communication port 250. Alternately, where the removable
storage device 240 is a HDD, connecting the removable storage
device 240 to the communication port 250 can include coupling the
communication port 250 to the removable storage device 240 with a
connection such as a cable or a wireless link.
[0041] With reference to data backup systems 100, 200, connecting
320 the data backup system 100, 200 to the data source 110 can
include coupling the communication interface 130 to the data source
110 with the connection 120. Connecting 320 the data backup system
to the data source also includes the data source recognizing the
data backup system as two new devices. For example, some operating
systems periodically query unused ports for newly attached
hardware. An exemplary process by which the data backup system 100,
200 can be recognized by the data source 110 as being two attached
devices is described below with respect to FIG. 4.
[0042] Connecting 320 the data backup system to the data source
automatically launches a backup application. Operating systems that
include an automatic execution function, such as the AutoRun
capability of the Windows operating system, can execute
applications that are resident on an auto-launch device. Here, the
automatic execution function of the data source's operating system
recognizes the backup application as an application to be launched,
and automatically launches the backup application to run on the
data source.
[0043] Connecting 320 the data backup system to the data source can
also comprise translating commands and responses between device
formats as communications are passed between the data source and
the data backup system, as discussed above with respect to the
functionality of the emulation component 140. Thus, for example, CD
read commands sent to the backup system 100 are translated to HDD
read commands before being sent to the first logical storage area
160.
[0044] Selectively copying 330 the data files from the data source
can include running the backup application on the data source,
where the backup application is configured to search one or more
storage devices associated with the data source. The backup
application can, in some embodiments, search directories of
internal storage devices, external storage devices, and network
drives that are accessible to the data source. The backup
application selectively copies files to a storage device including
a writable data storage medium such as the second logical storage
area 170 or the removable storage device 240.
[0045] The backup application selects files that meet certain
predefined criteria, such as file type (e.g., .jpg) or type of
content (e.g., audio files), and in some embodiments only copies
the files that have not previously been copied. Other examples of
types of content include e-mails, business application data (e.g.,
Accpac and Simply Accounting files), digital video files, ebook
files, contacts files, calendar files, text files, tasks files,
settings files, bookmark files, and password files. Selectively
copying 330 the data files can also include searching for files
that meet the predefined criteria by searching e-mail attachments
and files embedded within other files, such as compressed files
within a .zip file.
[0046] The backup application can, in some embodiments, create a
file path or directory structure on the writable data storage
medium of the data backup system to indicate the location where a
copied file was located on the data source. In other embodiments,
the backup application creates a new directory structure based on
chronological order, alphabetical order, file size, or some other
criteria. Another alternative is for the backup application to
create a monolithic file that includes all of the backed up files.
Yet another alternative is for the backup application to store on
the writable data storage medium the backed up files in a common
directory (i.e., a flat structure) and to create an index (e.g. an
XML index) that stores the information on file locations. In these
embodiments, when the backed up files are restored the index is
used to re-create the directory structure on the data source.
[0047] It will be appreciated that according to the method 300,
user involvement can be reduced to simply making a physical
connection between a data backup system and a data source. While
user involvement can be reduced to one or more simple operations,
it will be appreciated that options can be provided to the user
through a graphical user interface (GUI) provided by the backup
application on a display device of the data source. In this way the
user, if desired, can customize the backup process by specifying
search criteria such as a type of content or a file type to be
copied. Additionally, the user can limit the scope of the backup
process by drive, directory, folder, file type, file size, or
date/time stamp, or the user can deselect a type of content or a
specific file, drive, directory, or folder such as a temporary
folder or an Internet Explorer directory.
[0048] As noted, selectively copying 330 the data files from the
data source can include running the backup application on the data
source. In addition to the above functions of the backup
application, the backup application can also be configured to
perform the following functions as part of selectively copying 330
the data files. For example, the backup application can wait a
predetermined length of time and then repeat the backup process so
long as the backup system remains connected to the data source 110.
The backup application can also perform a self-diagnostic routine
at predetermined intervals. The backup application can also be
configured to wait for a predetermined period of time before
performing an automatic backup to provide the user an opportunity
to customize the backup process. Additionally, the backup
application can be configured to selectively copy 330 the data
files only upon a user command, rather than automatically. The user
command can be entered through the GUI on the data source, or can
be provided by a button or switch on the data backup system.
Alternately, the backup application can be configured to
selectively copy 330 the data files whenever a removable storage
device 240 is connected to the communication port 250.
[0049] Copying 330 the data files, in some embodiments, includes
determining whether the data source has been previously paired with
the data backup system (e.g., the data source was previously backed
up with the data backup system). This can include, for example,
searching for a marker that was previously left on the data source,
or comparing a marker saved on the data backup system with an
identifier of the data source such as a volume label. The marker
allows the backup application to recognize the data source. In some
embodiments, the backup application determines a course of action
based on whether the data source has been previously paired with
the data backup system and if so, whether the data backup system
already stores data associated with the data source. For instance,
the course of action can be an automatic backup of the data source,
either full or incremental, a restoration of backed up data to the
data source, or a query to the user to make a selection between
these or other alternatives.
[0050] FIG. 4 is a flow-chart representation of an exemplary method
400 by which the data backup system, once detected, becomes
recognized as two attached devices by the data source. Although
this exemplary method 400 is described with reference to USB
protocols, it will be understood that other protocols such as
FireWire follow analogous processes. The method 400 comprises the
data source enumerating 410 the data backup system, followed by the
emulation component of the data backup system representing 420 two
Logical Unit Numbers (LUNs) through initialization.
[0051] Enumerating 410 the data backup system is performed to
identify the newly attached hardware, in this case the data backup
system, and how the hardware is configured for communication.
Enumerating 410 comprises the data source assigning a unique device
number and querying the data backup system for a device descriptor.
The emulation component responds by providing a device descriptor
to the data source. Enumerating 410 further comprises the data
source setting an address for the data backup system. Once the
address has been set, the data backup system obtains communication
frames assigned to the address. Enumerating 410 can also comprise
the data source requesting and receiving detailed device
information from the data backup system, specifically the emulation
component, such as class, subclass, and protocol.
[0052] Enumerating 410 also comprises the data source starting an
appropriate USB mass storage class driver, and the USB mass storage
class driver requesting the number of LUNs from the data backup
system with a "GET MAX LOGICAL UNIT NUMBER" command. Enumerating
410 also comprises the data backup system, and more specifically
the emulation component, responding to the "GET MAX LOGICAL UNIT
NUMBER" command by communicating two LUNs to the data source.
[0053] Representing 420 the two LUNs through initialization
comprises the emulation component receiving a number of SCSI
commands directed to each LUN from the data source. The emulation
component handles each LUN independently. The emulation component
responds to those SCSI commands that it recognizes, and generates a
standard error condition in response to SCSI commands that are not
recognized. Each SCSI command, and any errors that are generated,
are typically handled before the next SCSI command is issued to
either LUN. In will be understood that the sequence of SCSI
commands sent to the LUN representing a storage device including a
writable data storage medium can be different from those sent to
the LUN representing an auto-launch device. Additionally, SCSI
commands, or a sequence of SCSI commands, may be repeated multiple
times by the data source, and sequences of SCSI commands directed
to the two LUNs can be interlaced.
[0054] For both LUNs, the sequence of SCSI commands starts with the
USB mass storage class driver issuing an "INQUIRY" command to
identify the device type. The emulation component returns a
response to represent a storage device, such as second logical
storage area 170 (FIG. 1), as a storage device that can include a
writable data storage medium. A response of "0.times.00," for
example, indicates that the storage device is a HDD. Similarly, the
emulation component returns a response to represent a storage
device, such as first logical storage area 160 (FIG. 1) as an
auto-launch device. A response of "0.times.05," for instance,
indicates that the auto-launch device is a CD drive. The storage
device that can include a writable data storage medium can
additionally be marked as either "removable" or "non-removable,"
while the auto-launch device can be marked as "removable." After
this point, the sequence of SCSI commands for the two LUNs diverge.
It will be appreciated that the order of SCSI commands in the
sequences described below are exemplary, and the order of the SCSI
commands will vary with different data sources. Also, in some
instances one or more of the SCSI commands provided below are
omitted, and/or other SCSI commands are included.
[0055] An exemplary sequence of SCSI commands directed to the
storage device that includes the writable data storage medium
continues with a "READ FORMAT CAPACITIES" request that the data
source uses to determine whether the writable data storage medium
is unformatted. Ordinarily, the medium of the storage device being
represented is already formatted, and the emulation component
responds accordingly. Otherwise, the data source will attempt to
format the medium of the storage device. Next, the data source
issues a "READ CAPACITY" request to identify the capacity of the
writable data storage medium and its block size, and the emulation
component returns this information as well. A "READ(10)" command is
issued to read the first block on the writable data storage medium.
The first block has a logical block addressing (LBA) value of zero
(LBA=0) and contains the Master Boot Record (MBR), which itself
contains the partition table for the writable data storage medium.
The emulation component responds with the contents of the requested
block.
[0056] A "MODE SENSE(6)" command is then used to extract the
capabilities of the storage device including the writable data
storage medium, such as whether the storage device contains a disk
cache. The emulation component replies as appropriate to the
capabilities of the storage device being represented. Another
"READ(10)" command is issued to recover the first block of the file
system that contains the root directory. The first block of the
file system can located at LBA=0.times.3F, for example, but can
vary depending on the particular type of file system being
represented. The emulation component returns the first block of the
file system. Finally, the data source can issue a "TEST UNIT READY"
request before reading the full contents of the root directory,
etc. Here, the emulation component responds affirmatively so that
the data source will regard the storage device that includes the
writable data storage medium as operational. The data source
thereafter issues more read/write requests as necessary.
[0057] An exemplary sequence of SCSI commands directed to the
auto-launch device continues with a "GET CONFIGURATION" request to
obtain information about the capabilities of the auto-launch device
and its ability to read or write different types of optical media,
e.g., CD-R, CD-RW, DVD-R, DVD+R, DVD-RW, DVD+RW, etc. The emulation
component responds with capabilities that are appropriate for the
auto-launch device being represented to the data source. This can
be followed by a "READ CAPACITY" request to discover if there is a
medium present in the auto-launch device. The emulation component
is configured to respond by failing the initial attempt. In
response, the data source will issue a "REQUEST SENSE" command to
access the extended error information. In the reply, the emulation
component sets the "Sense Key" to "UNIT ATTENTION," and sets the
"Additional Sense Code" to "POWER ON." The data source will then
repeat the "READ CAPACITY" request, and the emulation component
will respond with a capacity, such as the size of the first logical
storage area 160 (FIG. 1).
[0058] To learn what types of status change events the read-only
media device supports, the data source issues an initial "GET EVENT
STATUS NOTIFICATION" request, and the emulation component responds
with a set of coded status fields. The data source can then repeat
the "GET EVENT STATUS NOTIFICATION" request, with a field set to a
status entry to be checked. If the operational status field is
enabled, for example, the emulation component will respond with an
operational change event, and a status code representing a feature
change. This response can trigger the data source to issue further
"GET CONFIGURATION" request(s), to discover which feature, if any,
has changed.
[0059] The data source can also issue a "MODE SENSE(10)" request
for Page Code (0.times.2A), known as the "MM Capabilities and
Mechanical Status Page." The emulation component will respond with
information that is typical for a simple auto-launch device that
includes read-only support for CD-R and CD-RW media. This echoes
the information that is returned in response to the "GET
CONFIGURATION" request.
[0060] At this point, the data source can issue a "TEST UNIT READY"
command. This triggers two sequences of request/response events in
the emulation component that can support the automatic execution
functionality of different operating systems. The commands in the
two sequences can be interlaced, and the events will remain pending
until the emulation component has passed through all of the
expected states. As outlined below, both sequences are typical for
an operating system such as Windows XP. The sequences, below, do
not account for the number of times that a request, or a sequence
of requests, can be repeated. Also, the particular sequence of
events can vary depending on the type and version of the operating
system executing on the data source. Additional or substitute
commands can also be issued.
[0061] The first sequence comprises a series of "TEST UNIT READY"
commands from the data source to the auto-launch device. The
emulation component is configured to fail the first request. The
data source then sends a "REQUEST SENSE" command to obtain the
extended error information, and the emulation component sets the
sense key to "NOT READY," with an additional sense code of "MEDIUM
NOT PRESENT." The data source then repeats the "TEST UNIT READY"
command, which the emulation component again fails. The data source
again sends a "REQUEST SENSE" command and the emulation component
responds with a sense key set to "UNIT ATTENTION," and an
additional sense code of "MEDIUM MAY HAVE CHANGED." All subsequent
"TEST UNIT READY" commands are typically responded to without
error.
[0062] The second sequence comprises a series of "GET EVENT STATUS
NOTIFICATION" requests from the data source to the auto-launch
device. Following the first "TEST UNIT READY" command that triggers
the first sequence, the data source issues a "GET EVENT STATUS
NOTIFICATION" request with the operational change field enabled.
The emulation component responds with an operational change event
and a status code representing a feature change. On the following
"GET EVENT STATUS NOTIFICATION" request the media status field is
enabled. The emulation component responds with a media event, a
status code representing new media, and a flag set to indicate that
the media is present. On all subsequent "GET EVENT STATUS
NOTIFICATION" requests where the media status field is enabled, the
emulation component responds with a media event and with the media
present flag set, but the status code will not indicate new media.
In the case where a "GET EVENT STATUS NOTIFICATION" request is
issued, and the expected status field is not enabled, the emulation
component responds as appropriate for the current state of that
event.
[0063] At the end of either or both of these sequences, the data
source can send a "READ TOC/PMA/ATIP" request to read the Table Of
Contents (TOC) from the medium of the auto-launch device. The TOC
includes information on the number of tracks on the medium, and the
start position of each. The emulation component responds with
entries for a default configuration, namely, a single data track
that starts immediately after the "lead-in" area. The default TOC
declares that the first block of data on the medium starts at
address zero. The position of a last track is fixed in the
emulation component and represents the space allocated to the data
on the auto-launch device, such as the backup application.
[0064] When the data source makes a read request of the auto-launch
device, the emulation component automatically translates the
logical address into a corresponding physical address of the
storage device (e.g., first logical storage area 160 (FIG. 1)) that
is being represented as the auto-launch device. In addition, where
the block sizes of the storage device (e.g., a HDD partition) that
is being represented as the auto-launch device (e.g., a CD drive)
are different, the emulation component also translates the required
amount of auto-launch device data into the appropriate number of
blocks on the storage device.
[0065] After the method 400 has been completed, the data source
recognizes one LUN as an auto-launch device and another LUN as a
storage device including a writable data storage medium and is
properly configured to communicate independently with each.
Thereafter, selectively copying 330 the data files from the data
source can commence. As described above, this can include the
operating system of the data source automatically launching a
backup application from the LUN being represented as the
auto-launch device, and writing selected data from the data source
to the LUN being represented as the storage device including a
writable data storage medium.
[0066] In the foregoing specification, the invention is described
with reference to specific embodiments thereof, but those skilled
in the art will recognize that the invention is not limited
thereto. Various features and aspects of the above-described
invention may be used individually or jointly. Further, the
invention can be utilized in any number of environments and
applications beyond those described herein without departing from
the broader spirit and scope of the specification. The
specification and drawings are, accordingly, to be regarded as
illustrative rather than restrictive. It will be recognized that
the terms "comprising," "including," and "having," as used herein,
are specifically intended to be read as open-ended terms of
art.
* * * * *