Abstract:
A method for restoring a content management system is disclosed. A virtual file system exposing backup data of a content management system stored in a backup data storage is created. The backup data is exposed without retrieving the backup data from the backup data storage. A selection of a portion of the backup data to be restored to the content management system is received via an interface associated with the virtual file system. The selected portion of the backup data is caused to be granularly restored to the content management system without restoring one or more unselected portions of the backup data.

Description:
BACKGROUND OF THE INVENTION 
     Content management systems enable people to work efficiently together. For example, content management systems allow people belonging to an organization or a group to manage workflows in a collaborative environment, set up web sites to share information with others, manage documents from start to finish, or publish reports to help the organization make better decisions. 
     The contents and data of a content management system can be lost after a data loss event. Restoring lost data in a content management system can be performed in a number of ways. One approach is to perform an image-based full restore. In an image-based full-restore, all the content databases and configuration databases are restored at once. However, during the full-restore, the availability of the content management system to the users of the system will be compromised. Since doing a full-restore is time-consuming, the content management system can potentially be down for a long time. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings. 
         FIG. 1  is a block diagram illustrating an embodiment of a content management system  100 . 
         FIG. 2  is a block diagram illustrating an embodiment of a content management system connected with a backup and restore system. 
         FIG. 3  is a flow chart illustrating an embodiment of a restore process  300 . 
         FIG. 4  is a flow chart illustrating an embodiment of a granular-level restore process  400 . 
         FIG. 5  is a block diagram illustrating an embodiment of an Avamar client with its virtual file system AxionFS. 
     
    
    
     DETAILED DESCRIPTION 
     The invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. Unless stated otherwise, a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. As used herein, the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions. 
     A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured. 
     Granular-level restore of a content management system, such as a SharePoint farm, is disclosed. In various embodiments, a virtual file system is created to expose backup data of a content management system stored in a backup data storage. In various embodiments, a selection of a portion of the backup data to be restored to the content management system is received. In various embodiments, the selected portion of the backup data is caused to be restored to the content management system. In some embodiments, the content management system is a SharePoint system. In some embodiments, the selected portion of the backup data to be restored to the content management system comprises an individual SharePoint object, such as a document, list, library, folder, attachment, and SharePoint site. In some embodiments, access of the virtual file system is provided to a granular search and recovery application. 
     Content management systems enable people to work efficiently together. For example, content management systems allow people belonging to an organization or a group to manage workflows in a collaborative environment, set up web sites to share information with others, manage documents from start to finish, or publish reports to help the organization make better decisions. Different types of content management systems include enterprise content management system, web content management system, web group content management system, and the like. 
     One example of content management systems is Microsoft SharePoint. SharePoint provides a multi-purpose platform for various applications. For example, SharePoint provides an infrastructure for an organization or a group to build its intranet and extranet portals and Internet sites. The infrastructure allows people belonging to the organization to share documents with other people within the organization, manage projects with partners, or publish information to customers. SharePoint can also be used as an enterprise collaboration tool. It allows people to share ideas and work together the way they want. SharePoint also provides search capabilities. In addition, SharePoint supports the managing and provisioning of social networking tools, enterprise search, business intelligence tooling, process/information integration, third-party developed solutions, and the like. 
     Microsoft SharePoint is used hereinafter as an example for the content management system described above. SharePoint is selected for illustration purposes only; accordingly, the present application is not limited to this specific example only. 
       FIG. 1  is a block diagram illustrating an embodiment of a content management system  100 . As shown in  FIG. 1 , a client  102  (e.g., client  1 ) is connected to a content management system server  104  via a network  106 . In some embodiments, client  102  may be in communication with content management system server  104  using a dedicated communication link, one or more networks, a local area network, a wide area network, a storage area network, the Internet, a wired network, a wireless network, and the like. Content management system server  104  is used to service multiple clients  102  (e.g., client  1  to client M) in parallel. The contents and data shared between clients  102  and managed by content management system server  104  are stored in a data storage  108 , wherein the data may be organized in a plurality of content databases and configuration databases. 
     Continuing with the SharePoint illustrative example above, a plurality of SharePoint clients  102  are connected to a SharePoint server  104  via network  106 . The contents and data shared between the plurality of SharePoint clients  102  and managed by SharePoint server  104  may include documents, images, movies, web pages, software project files and data, metadata, and the like. In some embodiments, the content databases and configuration databases located in data storage  108  are structured query language (SQL) databases. 
     The contents and data of content management system  100  can be lost after a data loss event. For example, the contents and data of content management system  100  may be accidently deleted by end-users, intentionally corrupted by malicious efforts of outsiders, or destroyed by a disaster, such as a fire or earthquake. Therefore, the contents and data of content management system  100  should be backed up periodically, such that they may be restored after a data loss event. 
       FIG. 2  is a block diagram illustrating an embodiment of a content management system connected with a backup and restore system. One example of the backup and restore system is EMC Corporation&#39;s Avamar backup and restore system. As shown in  FIG. 2 , a backup and restore server  202  (e.g., an Avamar backup and restore server) is connected to content management system  100  via network  106 . A system administrator of content management system  100  (e.g., a SharePoint administrator) may use a backup and restore client  206  (e.g., an Avamar client) to configure backup and restore server  202  to periodically backup the contents and data of content management system  100  into a backup data storage  204 . For example, backup data storage  204  may include hard disks, solid state storages, virtual tape libraries (VTL), magnetic tapes, and the like. 
     Restoring lost data of content management system  100  can be performed in a number of ways. One approach is to perform an image-based full restore. In an image-based full-restore, all the content databases and configuration databases in data storage  108  are restored at once. For example, the entire backup of the various databases may be restored directly to content management system server  104  and data storage  108 . However, during the full-restore, the availability of content management system  100  to the users of the system will be compromised. Since doing a full-restore is time-consuming, content management system  100  can potentially be down for a long time. 
     Another way to restore lost data of content management system  100  is a granular-level restore approach. In a granular-level restore, as will be described in greater details below, only the lost data items are located and restored back to content management system server  104  and data storage  108 . For example, in our SharePoint illustrative example, SharePoint contents including documents, lists, libraries, folders, or sites can be individually restored. 
     In some embodiments, a backup process includes multiple passes. Such a backup process is referred to as a multi-pass backup process. In the first pass of the multi-pass backup process, an image-based backup is obtained and stored in backup data storage  204 . This image-based backup can be used subsequently for restoring all the content databases and configuration databases in data storage  108  in an image-based full-restore. For example, an image-based full-restore can be used to recover from a disk crash or other disasters. 
     In the second pass of the multi-pass backup process, a granular-level backup is obtained and stored in backup data storage  204 . This granular-level backup can be used subsequently for a granular-level restore. For example, a granular-level restore can be used to recover a few lost data items that were accidentally deleted by an end-user. In this case, the end-user will request the system administrator to restore a few lost data items, and the system administrator may choose to do a granular-level restore instead of an image-based full-restore, which requires more time and resources. 
     In some embodiments, a single-pass backup process may be used. In a single-pass backup process, only one single backup is obtained and stored in backup data storage  204 . This single backup can be used subsequently for either an image-based full restore or a granular-level restore. 
     Both the multi-pass backup process and the single-pass backup process described above may include data deduplication features. During backup, data deduplication divides files or streams of data (e.g., files that are backed up) into chunks of data. Each chunk of data is assigned an identification, which may be calculated using cryptographic hash functions. The identification is known as a signature, or fingerprint, for the chunk of data. If the signature of the current chunk of data is identical to the signature corresponding to another chunk of data previously stored in a data storage (the latter implemented, for example, as a storage disk), then a duplicate is detected. Accordingly, the duplicated chunk of data is not stored again in the data storage; instead, the duplicated chunk of data is replaced by a reference or a link to the chunk of data previously stored in the data storage. Conversely, if the signature of the current chunk of data is different from all the signatures corresponding to chunks of data that have been previously stored in the data storage, then the current chunk of data is a unique new chunk of data and is stored in the data storage. The signature of the current chunk of data is also stored in an index. During restore, data deduplication reconstructs files that have been backed up by reading chunks of data stored in the data storage and concatenating them together. Whenever a link or a reference is found, the link or reference is replaced with the referenced data chunk. 
       FIG. 3  is a flow chart illustrating an embodiment of a restore process  300 . At  302 , either an image-based full-restore or a granular-level restore may be selected. For example, a SharePoint administrator may elect to do an image-based full-restore after a disk crash or disaster. At  304 , an image-based full-restore is performed, and all contents and data for content management system  100  are restored. If the SharePoint administrator elects to do a granular-level restore at  302 , then only a portion of the contents and data for content management system  100  is restored at  306 . 
       FIG. 4  is a flow chart illustrating an embodiment of a granular-level restore process  400 . In some embodiments, process  400  can be used to implement step  306  of process  300  as shown in  FIG. 3 . 
     At  402 , a virtual file system (VFS) is created on a computer system on which backup and restore client  206  is run. The virtual file system exposes the backup data stored in backup data storage  204  as if the backup data are accessible on a local disk of the computer system. This is achieved by mounting the backup data stored in backup data storage  204  onto the virtual file system. 
     One example of the virtual file system is AxionFS in EMC Corporation&#39;s Avamar File System (AvFs). AxionFS is a virtual file system created on a computer system on which an Avamar client is run. The virtual file system exposes the backup data stored in the data storage of an Avamar backup and restore server as if the backup data are accessible on a local disk of the computer system. In some embodiments, AvFs utilizes EldoS Corporation&#39;s Callback File System (hereinafter referred to as EldoS CbFS) to create a virtual file system that exposes the backup data to a Microsoft Windows operating system. 
       FIG. 5  is a block diagram illustrating an embodiment of an Avamar client with its virtual file system AxionFS. As illustrated in  FIG. 5 , EldoS CbFS provides a kernel-mode filter driver to expose the disks, volumes, and file system objects of the data storage of an Avamar backup and restore server. EldoS CbFS also provides a user-mode CbFS library. This CbFS library allows developers to specify callback functions that are invoked by the EldoS kernel-mode driver when file system calls are being serviced. For example, EldoS CbFS provides directory enumeration callback functions, and AvFS would implement these functions to “fill-in” the directory contents with the directory elements from the Avamar backup. 
     In some embodiments, the backup data mounted on AxionFS are deduplicated. In some embodiments, the backup data mounted on AxionFS are readable and writeable by a user of a computer system running the Avamar client. 
     Because AxionFS exposes the backup data stored in the data storage of an Avamar backup and restore server as if the backup data are accessible on a local disk of the computer system, an application or end-user may access the backup data as files or folders on a local virtual disk. In some embodiments, a software recovery tool may be used to display and provide access to the backup data mounted on AxionFS. For example, Kroll Ontrack&#39;s PowerControls is a granular search and recovery tool that may be used to access SQL database files mounted on AxionFS. In some embodiments, Kroll Ontrack&#39;s PowerControls interprets the mounted backup data and displays a list of SharePoint objects that may be restored by a user. For example, PowerControls may display a list of items that can be restored individually, such as documents, lists, libraries, folders, attachments, and SharePoint sites. In some embodiments, PowerControls allows a user to granularly search for and restore individual SharePoint objects. 
     With continued reference to  FIG. 4 , a selection of a portion of the backup data to be restored to content management system server  104  and data storage  108  is received at  404 . For example, a SharePoint administrator may select one or more SharePoint objects to be restored to SharePoint server  104  and data storage  108 . 
     At  406 , the selected portion of the backup data is restored back to content management system server  104  and data storage  108 . For example, after Avamar client  206  has received the selection of SharePoint objects from a SharePoint administrator, Avamar client  206  may request Avamar backup and restore server  202  to restore those SharePoint objects back to SharePoint server  104  and data storage  108 . 
     As illustrated above, granular-level restore using a virtual file system saves both time and resources compared to image-based full-restore. The virtual file system exposes the backup data stored in backup data storage  104  without actually retrieving the backup data. Backup data are read and transferred through the network on demand based on the specific needs of the end-users. 
     The backup and restore system disclosed in the present application can be used to backup and restore a SharePoint farm as well. A SharePoint farm includes more than one SharePoint servers. In some SharePoint farms, one or more SharePoint servers and one or more SQL servers are collectively used to provide SharePoint services bound together by a SharePoint configuration database. Some SharePoint farms include one or more SharePoint web servers, one or more SQL database servers, and one or more search content index servers. 
     Some of SharePoint&#39;s customization is stored not in databases, but in files in the file systems of the different SharePoint servers. Therefore, to fully backup a SharePoint farm, in addition to the various databases, file system data on different SharePoint servers are backed up as well. 
     To restore a SharePoint farm, a virtual file system for the entire SharePoint farm is created. The virtual file system aggregates the backup views of all the file systems of the different SharePoint servers into a single file system. 
     Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.