The invention relates generally to file synchronization systems and more particularly to a system, method, and computer program product for ranking files in a user computer memory so that the most useful files stored thereon, and ranking files in a company computer memory so that the most useful files to the users connecting to the company computer are stored thereon.
In a typical computer, file synchronization (or syncing) is the process of ensuring that computer files in two or more locations are updated via certain rules.
Computer users are creating ever increasing volumes of data files, which can easily overwhelm the memory of each user's computer. To ease the burden on user computer memory, these data files are often stored in remote or networked storage (e.g., a file server). However, to obtain the data files from the remote or networked computer storage, the user must establish a connection to the remote or networked storage through a communications network, which can delay file access. To speed up access, many companies use file synchronization software that copies each user's important data files to the user computer memory for ease of access. In some instances, the file synchronization software will manage only the files that belong to a single user. Typically, however, the data files stored on the network are also available, through the file-synchronization software, to other user computers. For example, a file synchronization software within a company may synchronize all of the company's documents with all of the user computers served by the company's network. This allows, for example, users in a department to access the data files of other users in the same department.
There are many benefits to file synchronization. Because data files are locally available, the data files may be opened more quickly, they are automatically kept up-to-date, and the user's computer does not need to maintain a permanent connection to network storage to obtain a frequently accessed data file. However, the network storage can store more data files than the storage capacity of the user computer, so there is a risk that the data file the user needs will not be stored in the user's computer memory. Such delivery can be optimized by requiring the user to configure the file-synchronization software, or by only synchronizing file contents when the user tries to open a file stored on the network. In prior art file-synchronization systems, therefore, the user selectively chooses which data files and/or folders having data files should be synchronized locally from the files the user accesses on the server.
There are disadvantages to the above methods of file synchronization. For instance, the user may access files that it needs temporarily, forcing files it needs more often to be removed from user computer storage in favor of a file that has been opened more recently (but is less important to the user). Moreover, if a user must preconfigure the file synchronization system to synchronize certain data files, often the user will not do so, leading the user to circumvent the file synchronization software and access files ‘on-demand.’ For example, the user will typically only request files at the time he wants to access them. Therefore, the user will still need a permanent network connection and will experience delays in accessing data files because those data files must be obtained from the server.
Moreover, in some applications, the company server is implemented as a mesh of application servers networked over a communications network, or “the cloud.” In such implementations, the user computer may need to synchronize files that may be stored in multiple servers in different locations, including different cities, states, countries and continents. In this regard, the system needs to determine which of the servers are storing the needed files, and then synchronize such files with the user computer. Because of the complexity of the file transfer process through the cloud, and potential delay in synchronizing data files stored in remote company computers, prior art synchronization systems may only synchronize the files located in memory at a particular company computer (e.g., the company computer that is local to the user computer). This means that users needing a particular data file from a remote computer needs to request the data file “on-demand,” negating the benefits of file synchronization.
A need exists, therefore, for a system, method and computer program product that solves the issues identified above.
In accordance with the disclosed subject matter, a system, method and computer program product are provided for synchronizing data files.
Embodiments of the invention include a system for synchronizing data files on a company computer. The system may comprise a computer having a processor and a tangible, non-transitory computer memory with instructions operable therein for performing on the processor a process of determining whether a data file should be synchronized with the computer and a process of synchronizing the data file. The instructions comprising the steps of: receiving a request for the data file from a user computer; responsive to receiving the request for the data file, determining whether the data file is located in the computer memory; responsive to determining that the data file is not located in the computer memory, determining whether the file is stored in a remote computer memory; responsive to determining that the data file is stored in the remote computer memory, requesting the data file from the remote computer; determining a rank for the data file retrieved from the remote computer based on at least one of: whether the data file is associated with a plurality of users accessing the computer, and whether the data file can be downloaded within a predefined time period.
Some embodiments of the invention include a computer program product operable on a computer having a tangible, non-transitory computer memory for synchronizing data files on a company computer. The computer program product may cause the computer to perform a process of determining whether a data file should be synchronized with the computer and a process of synchronizing the data file. The computer program product may execute instructions comprising the steps of: receiving a request for the data file from a user computer; responsive to receiving the request for the data file, determining whether the data file is located in the computer memory; responsive to determining that the data file is not located in the computer memory, determining whether the file is stored in a remote computer memory; responsive to determining that the data file is stored in the remote computer memory, requesting the data file from the remote computer; determining a rank for the data file retrieved from the remote computer based on at least one of: whether the data file is associated with a plurality of users accessing the computer, and whether the data file can be downloaded within a predefined time period.
Embodiments of the invention include a computer implemented method causing a computer to perform a process of determining data files that should be synchronized with a company computer and a process of synchronizing the data files. The computer-implemented method may comprise the steps of: receiving a request for the data file from a user computer; responsive to receiving the request for the data file, determining whether the data file is located in the computer memory; responsive to determining that the data file is not located in the computer memory, determining whether the file is stored in a remote computer memory; responsive to determining that the data file is stored in the remote computer memory, requesting the data file from the remote computer; determining a rank for the data file retrieved from the remote computer based on at least one of: whether the data file is associated with a plurality of users accessing the computer, and whether the data file can be downloaded within a predefined time period.
There has thus been outlined, rather broadly, the features of the disclosed subject matter in order that the detailed description thereof that follows may be better understood, and in order that the present contribution to the art may be better appreciated. There are, of course, additional features of the disclosed subject matter that will be described hereinafter and which will form the subject matter of the claims appended hereto.
In this respect, before explaining at least one embodiment of the disclosed subject matter in detail, it is to be understood that the disclosed subject matter is not limited in its application to the details of construction and to the arrangements of the components set forth in the following description or illustrated in the drawings. The disclosed subject matter is capable of other embodiments and of being practiced and carried out in various ways. Also, it is to be understood that the phraseology and terminology employed herein are for the purpose of description and should not be regarded as limiting.
As such, those skilled in the art will appreciate that the conception, upon which this disclosure is based, may readily be utilized as a basis for the designing of other structures, methods and systems for carrying out the several purposes of the disclosed subject matter. It is important, therefore, that the claims be regarded as including such equivalent constructions insofar as they do not depart from the spirit and scope of the disclosed subject matter.
These together with the other objects of the disclosed subject matter, along with the various features of novelty which characterize the disclosed subject matter, are pointed out with particularity in the claims annexed to and forming a part of this disclosure. For a better understanding of the disclosed subject matter, its operating advantages and the specific objects attained by its uses, reference should be had to the accompanying drawings and descriptive matter in which there are illustrated preferred embodiments of the disclosed subject matter.
So that the features and advantages of the invention may be understood in more detail, a more particular description of the invention briefly summarized above may be had by reference to the appended drawings, which form a part of this specification. It is to be noted, however, that the drawings illustrate only various embodiments of the invention and are therefore not to be considered limiting of the invention's scope as it may include other effective embodiments as well.
In the following description, numerous specific details are set forth regarding the systems and methods of the disclosed subject matter and the environment in which such systems and methods may operate, etc., in order to provide a thorough understanding of the disclosed subject matter. It will be apparent to one skilled in the art, however, that the disclosed subject matter may be practiced without such specific details, and that certain features, which are well known in the art, are not described in detail in order to avoid complication of the disclosed subject matter. In addition, it will be understood that the examples provided below are exemplary, and that it is contemplated that there are other systems and methods that are within the scope of the disclosed subject matter.
To address the needs discussed above, embodiments of the invention include a system for allowing a company or organization to synchronize data files between a company computer storage, such as a computer memory or a file server, and various user computers networked to the company computer. Embodiments of the invention may also synchronize data files between two or more company computers, or between remote company computer storage and the company computer, networked over a communications network so that each company computer stores the data files most relevant to its local user computers. As such, the system provides a method for determining which data files are most likely to be needed by local users, and copying data files that are the most needed by local users to the company computer memory. In the process of copying the files to the user computer, the system determines which data files are no longer needed on the company computer, and replaces the data files that are no longer needed on the company computer with new data files that the system has determined are more likely to be needed by the company computer's local users.
As will be understood by those of skill in the art, the term “company computer” may be one or more computers, computer servers or computer networks associated with a particular company, or organization. As such, the term company computer is not limited to commercial companies, but may include other organizations such as education institutions, charities, non-profit groups, government entities, financial institutions, etc. Moreover, the terms “company” and “organization” should not be limited to a single entity, but can include multiple entities, corporations, organizations, charities and/or individuals having access to a secure server and database. As such, in some embodiments, the company computer may be a shared server where one or more users can upload computer content. As used in some embodiments herein, the term “user computer” may refer to one or more computers associated with one or more users, and in some embodiments may include a set of user computers accessing a common company computer. In this regard, the term “company computer” may refer to one or more computers associated with the company at a particular location (e.g., city, state, country, continent, etc.) that connects to the user computer. As such, the term “remote company computer” may refer to one or more computers (i.e., operating as a company computer or remote storage) associated with the company that are at a different location from the company computer and connect to a different user computer (e.g., a set of user computers local to the remote computer).
A communications network 104 is positioned between the user computer 102 and the company computer 106 to provide the user, via user computer 102, local or remote access to the company computer 106 (e.g., so that the user and the company computer can be located in same physical location or in different physical locations). As will be understood by those in the art, the mesh of application servers implementing the company computer may also be connected to one another, and to remote storage, “in the cloud,” or over the same communications network 104. Each of the application servers implementing the company computer 106 may connect to storage 108 (e.g., file servers 108-1, . . . , 108-N), although it should be understood that storage 108 may also be connected to each remote company computer through the cloud. The company storage 108 stores company data files that the user can access through the communications network.
As one skilled in the art will appreciate, in some embodiments, one or more user computers 102, are associated with one or more company computers 106 at a single physical location. In such embodiments, each of the company computers 106 at a physical location may be connected to remote company computers 106 and storage 108 at other physical locations. Moreover, in such implementations, the one or more user computers 102 can connect to its local one or more company computers 106. In some embodiments of such systems, the company computer 106 in the physical location closest to the one or more user computer will store data files that are most relevant to the user. For example, user computers located in California may connect to company computers located in California that store data files relevant to California operations, while user computers in England may connect to company computers also located in England that store data files relevant to operations in England. The company computers in California can connect to the company computer in England or other remote storage to transfer any data files stored thereon to users through the system. In such embodiments, the company computer will periodically synchronize respective data files stored thereon with one or more remote company computers or storage. In this way, embodiments of the invention may optimize the files stored on the user computers and the company computer in the closest physical proximity to the user computers.
As one skilled in the art will appreciate, the user computer 102 can be any computing device capable of connecting to the communications network 104 and receiving data from same. As such, the user computer 102 enables the user to interact with the company computer 106 to view, store and retrieve data files. For example, the user computer 102 may be a desktop, laptop, personal digital assistant (PDA), cellular telephone such as a Smartphone, computer tablet, networked computer display, computer server, WebTV, as well as any other electronic device. As such, the user computer 102 is connected to the company computer 106 via communications network 104, which may be a single communications network or comprised of several different communications networks, to connect the system.
As one skilled in the art will appreciate, in one embodiment, communications network 104 establishes a computing cloud. A computing cloud can be, for example, the software implementing one or more of the company computer, third party database and application that is hosted by a cloud provider and exists in the cloud. The communications network 104 can also be a combination of a public or private network, which can include any combination of the Internet and intranet systems that allow a plurality of system users to access the company computer 106, and for the company computer 106 to connect to remote company computers. For example, communications network 104 can connect all of the system components using the internet, a local area network (“LAN”) such as Ethernet or Wi-Fi, or wide area network (“WAN”) such as LAN to LAN via internet tunneling, or a combination thereof, using electrical cable such as HomePNA or power line communication, optical fiber, or radio waves such as wireless LAN, to transmit data. As one skilled in the art will appreciate, in some embodiments, user computer 102 and company computers 106-1, . . . 106-N, may be connected to the communications network using a wireless LAN, but other users may be connected to the company computer 106 via a wired connection to the internet. In other embodiments, a user may connect to the company computer 106 using a wireless LAN and the internet. Moreover, the term “communications network” is not limited to a single communications network system, but may also refer to several separate, individual communications networks used to connect the user computer 102 to company computer 106. Accordingly, though each of the user computer 102 and company computer 106 is depicted as connected to a single communications network, such as the internet, an implementation of the communications network 104 using a combination of communications networks is within the scope of the invention.
As one skilled in the art will appreciate, in cloud implementations, the communications network 104 interfaces with company computer 106, preferably via a firewall and web server (both not shown) to provide a secure access point for users 101 and to prevent users 101 from accessing the various protected portions of the storage 108 in the system. The firewall may be, for example, a conventional firewall as discussed in the prior art.
Storage 108 communicates with and uploads and stores data files to the user computer 102 via the company computer 106 and communications network 104. As one skilled in the art will appreciate, though storage 108 is depicted as a database, storage 108 may be implemented in, one or more computers, file servers and/or database servers. As such, the storage 108 may be implemented as network attached storage (NAS), storage area network (SAN), direct access storage (DAS), or any combination thereof, comprising for example multiple hard disk drives. Moreover, each of these file servers or database servers may allow a user 101 to upload or download data files to the database. For example, a user may have an associated username, password, RSA code, etc., that allows the user to store or retrieve various files to storage 108. These files can be stored in one or more computers comprising the storage 108 in a plurality of software databases, tables, or fields in separate portions of the file server memory (e.g., employee records, corporate records, projects, meeting items and agendas, memos, email, letters, financial and account information, payroll records, HR records, etc.). Accordingly, as is known in the art, the computer implementing storage 108 may have stored thereon a database management system (e.g., a set of software programs that controls the organization, storage, management, and retrieval of data in the computer). As one skilled in the art will appreciate, in some embodiments, storage 108 may be a software database stored in the company computer memory (to be discussed below). As one skilled in the art will also appreciate, though storage 108 is depicted as connected to, or as a part of, the company computer 106 (and not the communications network 104), the storage 108 may be, for example, a remote storage connected to the company computer 106 via the cloud or connected to the company computer 106 via a privately networked system.
Company computer 106 will now be described with reference to
Processor 204A is the “brains” of the company computer 106, and as such executes program product 208A and works in conjunction with the I/O device 202A to direct data to memory 206A and to send data from memory 206A to the various file servers and communications network. Processor 204A can be, for example, any commercially available processor, or plurality of processors, adapted for use in company computer 106 (e.g., Intel® Xeon® multicore processors, Intel® micro-architecture Nehalem, AMD Opteron™ multicore processors, etc.). As one skilled in the art will appreciate, processor 204A may also include components that allow the company computer 106 to be connected to a display, keyboard, mouse, trackball, trackpad and/or any other user input/output device (not shown), that would allow, for example, an administrative user direct access to the processor 204A and memory 206A.
Memory 206A may store the algorithms forming the computer instructions of the instant invention and data. Memory 206A may include both non-volatile memory such as hard disks, flash memory, optical disks, and the like, and volatile memory such as SRAM, DRAM, SDRAM, and the like, as required by embodiments of the instant invention. As one skilled in the art will appreciate, though memory 206A is depicted on, for example, the motherboard of the company computer 106, memory 206A may also be a separate component or device connected to the company computer 106. For example, memory 206A may be flash memory, external hard drive, or other storage.
As shown in
The retrieve list module 302 can include instructions that enable company computer 106 to connect to and download a list of files stored in user computer memory of the user computer 102. For example, the retrieve list module 302 may be called when the user connects to the company computer 106 to retrieve a file. In some embodiments, the retrieve list module may be called at regular time intervals, which would require the company computer 106 to establish a connection through the communication network 104.
The determination module 304 can include instructions so that company computer 106 can determine whether a new list of files the user computer 102 has stored thereon are most relevant to the user. The retrieve file module 306 can include instructions to retrieve files from memory and works with the transmit files module 308 to send to the user computer 102 a list of files that should be stored on the user computer 102 and any data files that are on the list that are not currently stored on the user computer 102. In some embodiments, the retrieve file module 306 may determine whether the file is located on the company computer 106, storage 108 associated with the company computer 106, or a remote company computer (i.e., a remote company computers 106), and then retrieve the file from the proper storage device. In such embodiments, the company computer may also determine whether the file should be stored in the company computer memory to thereby optimize the company computer to store the data files most relevant to local user computers. The update module 310 can include instructions so that company computer 106 can synchronize data files stored in memory thereon with remote company computers 106 or storage 108. In some embodiments the update module may be called to synchronize the data files on the company computer 106 periodically (i.e., after the passage of one or more minutes, hours, days, weeks, etc.). In some embodiments, the update module may be called by the company computer 106 when a data file stored in a remote company computer 106 or storage 108 is updated. For example, a company computer in California may update data files stored thereon if mirror image of the data file stored on a remote company computer in London is updated. In some embodiments, the update module may be called by when a user requests a data file from a remote company computer 106 or storage 108 (e.g., to make sure the data file is a data file that should be stored in the company computer memory 106).
An exemplary embodiment of the computer program flow for the instructions implementing the retrieve list module 302, the determination module 304, the retrieve file module 306, the transmit files module 308, and the update module 310 will now be described with reference to
In general, the software flow for the server begins at step 502. In step 504, the company computer 106 queries the user computer 102 for a list of files stored thereon. For example, the company computer 106 may query the user computer 102 for the list of files in response to a request to save or download a file from the user computer 102. In some embodiments, the company computer 106 may query the user computer 102 at regular intervals or poll the user computer for file updates. In other embodiments, when the user computer connects to the company computer (e.g., when a user logs into the company computer 106 via the user computer 102), the company computer 106 may request the list of files stored on the user computer 102. Embodiments of step 504 are described in more detail in
LIF=(ImportanceOfTheFile[0.0<-->1.0]+Max(0,(1.0−(FileSize/Quota)))+Max(0,(1.0−(DaysSinceLastUsed/30)))+Max(0,(1.0−(DaysSinceCreated/180))))×UserDownloadedWeighting[1.0=Yes,0.1=No]×(1/DownloadEstimate[in seconds]) (Eq. 1)
In some embodiments, the equation can include additional variables, fewer variables, or any suitable combination of variables. For example, other variables may be defined for files that are templates or forms for a department that are associated with the user, the number of users that have accessed the file, whether the user and their supervisor are accessing the same document, the folder or drive the user has used to save the file, etc. In other embodiments, the equation can provide any suitable weighting factors or no weighting factors to each of the variables in the equation.
In step 534, the instructions include computing, for the files associated with the user, the ranking of the file, LIF, using in some embodiments the same or different equation, variables, and/or weighting factors as defined above. To reduce the number of files for ranking, in some embodiments, the system may narrow the number of files associated with the user to those that the user has identified as an associated file, those saved by other users that are in the user's department or office location, files the user has accessed, files that the user has edited, files related to forms and templates that are used by the user, or any other suitable criteria or combination of criteria. After the number of files that may be ranked for a particular user are filtered, in such embodiments, the variables in the algorithm that determine the rankings may be optimized to take account of documents that are most frequently accessed by users with a certain title or in a certain department, that are most frequently accessed by the user and/or the user's supervisors, or any other suitable criteria or combination of criteria (e.g., as described in connection with Eq. 1 above or Eq. 2 below). In this regard, an embodiment of an algorithm for computing the ranking of a file, with the range of possible weighting factors for each variable, may be:
LIF=(ImportanceOfTheFile[0.0<-->1.0]+Max(0,(1.0−(FileSize/Quota)))+Max(0,(1.0−(DaysSinceLastUsed/30)))+Max(0,(1.0−(DaysSinceCreated/180))))×UserDownloadedWeighting[1.0=Yes,0.1=No]×(1/DownloadEstimate) (Eq. 2)
In some embodiments, the equation can include additional variables, fewer variables, or any suitable combination of variables and weighting factors. For example, other variables may be defined for files that are templates or forms for a department that are associated with the user, the number of users that have accessed the file, whether the user and their supervisor are accessing the same document, the folder or drive the user has used to save the file, etc. To determine files to which the user is associated, in some embodiments the process will determine all files that the user has accessed or created within a particular time period, or files that are associated with a group or department of which the user is a member. In this way, the process can reduce the number of possible files that may be associated with the user, before running the aforementioned calculations. In step 536, the process creates a new list based upon the highest LIF value, or ranking, for each file on the list and the number of files that the user computer 102 is able to store. For example, the user computer may only have a limited amount of memory, or only a specific amount of memory reserved for files from the company computer 106. In step 538, the process ends.
Turning to
Turning to
After the number of files that may be ranked for the company computer are filtered, in such embodiments, the variables in the algorithm that determine the rankings may be optimized to take account of documents that are most frequently accessed by users with a certain title or in a certain department, that are most frequently accessed by the user and/or the user's supervisors, or any other suitable criteria or combination of criteria (e.g., as described in connection with Eq. 3 below). The files are ranked according to a particular criterion to determine which files should be synchronized, and thereby stored, on the company computer 106. For example, the process can be set for a company or organization to optimize a rank for the files that are most likely to be needed by its employees when accessing the company computer at a particular location. In such embodiments, the variables that determine the rankings may be optimized to take account of documents that are most frequently accessed by users with a certain company location (e.g., campus, building, city, state, country, etc.), that are most frequently accessed by the users of the company computer, or any other suitable criteria or combination of criteria (e.g., as described in connection with Eq. 3 below). An algorithm, based on a combination of different criteria and different weighting factors applied to each criterion, is used to determine a rank for each file. A weighting factor is a numerical value, between one and zero, that is assigned to a particular criterion. For example, if a criterion is considered very important to the ranking, it may be assigned a weight of 0.9, while another criterion, considered less important to the ranking, may be assigned a weight of 0.2. In this way, the synchronization software can be customized for the company computers and company computer locations. In this regard, an embodiment of an algorithm for computing the ranking of a file, with the range of possible weighting factors for each variable, may be:
LIF=(CompanyComputerImportanceOfTheFile[0.0<-->1.0]+Max(0,(1.0−(FileSize/Quota)))+Max(0,(1.0−(CompanyComputerDaysSinceLastUsed/30)))+Max(0,(1.0−(CompanyComputerAcccessFrequency/180))))×UserDownloadedWeighting[1.0=Yes,0.1=No]×(1/DownloadEstimate[in seconds]) (Eq. 3)
In some embodiments, the equation can include additional variables, fewer variables, or any suitable combination of variables. For example, other variables may be defined for files that are templates or forms for a department that are associated with the user, the number of users that have accessed the file, whether the user and their supervisor are accessing the same document, the folder or drive the user has used to save the file, etc. In other embodiments, the equation can provide any suitable weighting factors or no weighting factors to each of the variables in the equation.
In step 590, the instructions include computing, for the files received from the remote computer, the ranking of the file, LIF, using in some embodiments the same or different equation, variables, and/or weighting factors as defined above. In this regard, an embodiment of an algorithm for computing the ranking of a file, with the range of possible weighting factors for each variable, may be:
LIF=(CompanyComputerImportanceOfTheFile[0.0<-->1.0]+Max(0,(1.0−(FileSize/Quota)))+Max(0,(1.0−(CompanyComputerDaysSinceLastUsed/30)))+Max(0,(1.0−(CompanyComputerAcccessFrequency/180))))×UserDownloadedWeighting[1.0=Yes,0.1=No]×(1/DownloadEstimate[in seconds] (Eq. 4)
In some embodiments, the equation can include additional variables, fewer variables, or any suitable combination of variables and weighting factors. For example, other variables may be defined for files that are templates or forms for departments that are associated with the company computer, the number of users that have accessed the file, whether users and their supervisors are accessing the same document, the folder or drive the user has used to save the file, etc. In step 592, the process determines, based upon the LIF of the requested file, whether or not to store the requested file on the company computer. In some embodiments, the process may also determine whether or not the company computer has the storage capacity for the requested file. If the process determines that the company computer does not have storage space for the requested file, the process may erase a data file stored in the company computer memory with a lower LFI than the requested file. In this regard, in some embodiments, the process may copy the data file with the lower LFI to a remote company computer, backup memory, or other available storage space prior to erasing the data file from the company computer memory. As one skilled in the art will appreciate, the company computer memory. In step 594, the process ends.
User computer 102 will now be described with reference to
As can be seen, the I/O device 202B is connected to the processor 204B. Processor 204B is the “brains” of the user computer 102, and as such executes program product 208B and works in conjunction with the I/O device 202B to direct data to memory 206B and to send data from memory 206B to the various file servers and communications network. Processor 204B can be, for example, any commercially available processor, or plurality of processors, adapted for use in user computer 102 (e.g., Intel® Xeon® multicore processors, Intel® micro-architecture Nehalem, AMD Opteron™ multicore processors, etc.). As one skilled in the art will appreciate, processor 204B may also include components that allow the user computer 102 to be connected to a display (not shown), keyboard, mouse, trackball, trackpad and/or any other user input device, that would allow, for example, an administrative user direct access to the processor 204B and memory 206B.
Memory 206B may store the algorithms forming the computer instructions of the instant invention and data, and such memory 206B may include both non-volatile memory such as hard disks, flash memory, optical disks, and the like, and volatile memory such as SRAM, DRAM, SDRAM, and the like, as required by embodiments of the instant invention. As one skilled in the art will appreciate, though memory 206B is depicted on, for example, the motherboard of the user computer 102, memory 206B may also be a separate component or device connected to the user computer 102. For example, memory 206B may be flash memory or other storage.
As shown in
The connection module 402 can include instructions that enable the user computer 102 to connect to the company computer 106 through the communication network 104. The transmission module 404 can include instructions that enable the user computer to transmit a list of files stored thereon to the company computer 106. For example, the transmission module 404 can transmit a list of all files stored in all or a portion of the memory of the user computer 102 (e.g., the user computer may have a portion of its memory dedicated to receiving files from and synchronizing files with the company computer 106).
The comparison module 406 can include instructions that enable the user computer 102 to compare a list of files received from the company computer 106 with a list of files currently stored thereon, and to delete from memory those files that are no longer needed in user computer 102. For example, as part of the process of deleting files, the user computer 102 can transmit the files to be deleted prior to deleting same so that the latest version of the deleted file is stored in with the company computer 106 or the attached storage 108. As one skilled in the art will appreciate, the user may also be asked whether or not to delete the file and/or whether to transmit the file to the company computer 106. The update module 408 can include instructions to update the files stored on the user computer 102 by copying files received from the company computer 106.
An exemplary embodiment of the computer program flow for processes implementing a connection module 402, a transmission module 404, a comparison module 406, and an update module 408 will now be described with reference to
An exemplary embodiment of the connection module 402 is described with reference to
An exemplary embodiment of the transmission module 404 is described with reference to
Turning to
Turning to
An exemplary list of files is shown in
It is to be understood that the disclosed subject matter is not limited in its application to the details of construction and to the arrangements of the components set forth in the following description or illustrated in the drawings. The disclosed subject matter is capable of other embodiments and of being practiced and carried out in various ways. Also, it is to be understood that the phraseology and terminology employed herein are for the purpose of description and should not be regarded as limiting.
As such, those skilled in the art will appreciate that the conception, upon which this disclosure is based, may readily be utilized as a basis for the designing of other structures, methods, and systems for carrying out the several purposes of the disclosed subject matter. It is important, therefore, that the claims be regarded as including such equivalent constructions insofar as they do not depart from the spirit and scope of the disclosed subject matter.
Although the disclosed subject matter has been described and illustrated in the foregoing exemplary embodiments, it is understood that the present disclosure has been made only by way of example, and that numerous changes in the details of implementation of the disclosed subject matter may be made without departing from the spirit and scope of the disclosed subject matter, which is limited only by the claims which follow.