Abstract:
A file discovery method, comprising receiving file discovery data comprising, for each of a plurality of files, discovery information and signature data, the discovery information for a first file of the plurality of files being indicative of at least one directory to be scanned for another of the plurality of files relative to a first directory, scanning, in a first scanning operation, a file system for the first file, and scanning, in a second scanning operation subsequent to the first scanning operation, the at least one directory for a second file matching signature data comprised by the file discovery data using a path to the first file as the first directory.

Description:
CROSS REFERENCE TO RELATED APPLICATION 
       [0001]    This application claims the benefit of priority to United Kingdom Patent Application Serial No. 1218493.3, filed on Oct. 16, 2012, the contents of which are hereby incorporated by reference. 
       BACKGROUND 
       [0002]    The present disclosure is an invention disclosure relating to a file discovery method, a file discovery system as well as a corresponding computer program product. 
         [0003]    It is known to maintain a catalog of the software installed on a computing device. Such a catalog may be used for determining when it is appropriate to update software installed on the computing device, for determining license fees that may be incurred by virtue of installation of the software on the computing device, etc. For maintaining the catalog, it is likewise known to employ software discovery for determining what software is installed on the computing device. 
         [0004]    The present disclosure expounds upon this background. 
       BRIEF SUMMARY 
       [0005]    Loosely speaking, the present disclosure teaches a software discovery method that scans different portions of a file system at different frequencies. To this aim, a software scanner may receive information that specifies how frequently particular portions of a file system are to be scanned. For example, the information may specify that some directories are to be scanned four times more frequently than some other directories. Such information may be conveyed to the software scanner directly from a user or via the software catalog. Similarly, a software catalog may include information that specifies, in terms of a relative or absolute location, directories that are to be scanned. For example, the information may specify directories to be scanned relative to a location of a given piece of software. Once the piece of software has been discovered, the scanner will scan the directories whose location is specified relative to the location at which the piece of software was discovered. 
         [0006]    By controlling the frequency with which different portions of the file system are scanned, the burden to a (client) machine performing the scans can be reduced without detriment to the quality of the scan results. In fact, the quality of the scan results can be improved. Inter alia, average detection time can be decreased. 
         [0007]    In one aspect, as touched upon supra, the present disclosure relates to a file discovery method, e.g. a software discovery method as described above. 
         [0008]    The method may comprise receiving file discovery data, e.g. a software catalog. In the present disclosure, the term “file discovery data” may be understood as data for monitoring the presence/absence of a plurality of files on (each of) one or more file systems, e.g. for carrying out and/or documenting an inventory of the plurality of files on a (respective) file systems. 
         [0009]    The file discovery data may comprise, e.g. for any (one or more or each) of a plurality of files, discovery information and/or signature data. For example, the file discovery data may comprise at least one of discovery information and signature data for each respective one of any (one or more or each) of a plurality of files. 
         [0010]    Any (one or more or each) of the files may be a software application, i.e. a quantity of code capable of self-contained execution, e.g. that can be executed without requiring code other than that provided by an operating system of a computing entity. Similarly, any (one or more or each) of the files may be a collection of data, e.g. a database required for proper operation of a software application. 
         [0011]    The signature data may (uniquely) identify the respective file. For example, the signature data may comprise any (one or more or all) of a name of the file, a part number of the file/application, a size of the file, a path name identifying a path to the file or to a folder in which the file is stored, etc. Similarly, the signature data may comprise a numeric value (e.g. a binary or hexadecimal value) indicative of or derived/calculated from any (one or more) of an installation time, a size, a content, etc. of the file. 
         [0012]    The discovery information may comprise data specifying how to effect software discovery, e.g. how to effect software discovery subsequent to discovery of a specified file. The discovery information for a (respective) file of the plurality of files may be indicative of one or more directories to be scanned (for one or more other files of the plurality of files). The discovery information may specify the one or more directories in absolute terms (e.g. by specifying a (respective) path from a root volume of a file system to any (one or more or each) of the directories) and/or relative to a (respective) directory. For example, the discovery information for a (first) file of the plurality of files may be indicative of at least one directory to be scanned for another of the plurality of files relative to a (first) directory. The (first) directory may be a directory in which the (first) file is (discovered to be) located. 
         [0013]    The method may comprise scanning (any portion of, e.g. an entirety of) a file system for one or more files, e.g. for any (one or more or all) of the files (respectively) identified by (the signature data in) the file discovery data. As such, the method may comprise scanning the file system for the aforementioned first file. This scanning may be (carried out in) a first scanning operation, e.g. as discussed hereinbelow. 
         [0014]    The file system may be the (local) file system of an operating system operating on a laptop computer, a personal computer or other single end-user computing device. Similarly, the file system may be the (local) file system of an operating system operating in a virtual (computing) environment and/or in a computing environment configured to be accessible only to a single user, e.g. a user account on a personal computer or a user account in a computer network. As such, the file system may be limited to files stored on one or more storage devices attached directly to such a laptop computer, personal computer, etc. Similarly, the file system may comprise one or more files located on remote storage devices, i.e. on storage devices at a location that is remote from (i.e. in a different room/building/town than) the computing device performing the scanning. 
         [0015]    The (process of) scanning, i.e. from onset to termination, can be termed a “scanning operation” to distinguish individual iterations/instances of scanning from one another. Each of the scanning operations may consist of scanning a (respective) portion of a file system. For example, one scanning operation may consist of scanning a (respective) portion of a file system, whereas another scanning operation may consist of scanning the same or a (partially or wholly) different portion of a file system, e.g. the same or a (partially or wholly) different set of directories of the file system. In other words, the scanning, i.e. a respective scanning operation, may be limited to searching through a (respective) portion of a file system only once for files, e.g. for the files (respectively) identified by (the signature data in) the file discovery data. As such, the scanning, i.e. a respective scanning operation, may be limited to searching through each of one or more directories only once for files. As touched upon above, different instances of scanning, i.e. different scanning operations, may search through (respectively) different sets of directories. 
         [0016]    The scanning operations may be temporally distinct from one another. In other words, the scanning operations may be (effected) such that no two scanning operations are carried out contemporaneously. Similarly, the scanning operations may be (effected) such that no two scanning operations are temporally adjacent. In other words, there may be a temporal gap between the end of each respective scanning operation and the beginning of a (respective) next subsequent scanning operation. For example, the method may comprise carrying out (at least) one scanning operation per day, (at least) one scanning operation per week, at least one scanning operation per week and less than one scanning operation per day, at least one scanning operation per fortnight and less than one scanning operation per week or at least one scanning operation per month and less than one scanning operation per fortnight. 
         [0017]    The scanning (of a portion of a file system for files) may comprise comparing, for each of a (specified) set of files stored in that portion of the file system, one or more file parameters of the respective file with the signature data, e.g. with the (respective) signature data for each of the plurality of files (for which the file discovery data comprises signature data). 
         [0018]    The (specified) set of files may comprise any (one or more or each) of the files stored in that portion of the file system. For example, the (specified) set of files may be the set of all executable files stored in that portion of the file system. The set of files may be specified by a user input and/or by one or more stored parameters, e.g. by a set of parameters stored in the file discovery data and/or in a scanner that effects the scanning. 
         [0019]    The comparing (of one or more file parameters of a respective file with the signature data) may comprise comparing each respective file parameter with a respective portion of the signature data. For example, if the signature data comprises (data representative of) a file name and a size of the file, the comparing (of file parameters and signature data) may comprise comparing a file name of the respective file with a portion of the signature data representative of a file name. Similarly, if the signature data comprises (data representative of) a file name and a size of the file, the comparing (of file parameters and signature data) may comprise comparing a file size of the respective file with a portion of the signature data representative of a file size. 
         [0020]    The method may comprise effecting one or more (specified) actions if the comparing (of file parameters and signature data) reveals that a file (stored in the scanned portion of the file system) matches a file for which the file discovery data comprises signature data, e.g. if the comparing reveals that each respective file parameter of a file system file matches (e.g. is identical to) respective signature data. For example, the actions may comprise storing an indication that the respective file has been discovered and/or storing (data representative of) a path to the file. The path may specify a location of the file in the (respective) file system, e.g. specify a path from a root volume of the file system to a directory containing the file. Similarly, the actions may comprise reporting discovery of the respective file to another computing device/environment (than the one hosting the scanned file system), e.g. to a server. The reporting may be limited to files whose discovery has not yet been reported to the (respective) other computing device/environment. The reporting may comprise communicating (data representative of) a path to the file. Furthermore, the reporting may comprise communicating data indicative of an installation time of the file. 
         [0021]    As touched upon above, the discovery information for the (aforementioned) first file may be indicative of at least one directory to be scanned for another of the plurality of files relative to a first directory. 
         [0022]    The method may comprise scanning this at least one directory for a second file matching signature data comprised by said file discovery data using a path to the (aforementioned) first file as the first directory. This scanning may be carried out in a second scanning operation that is subsequent to the aforementioned first scanning operation (that scans for the first file). As such, the method may comprise scanning the at least one directory for a second file having (a set of) file parameters that match signature data of any of the plurality of files (for which the file discovery data comprises signature data). The path to the first file may specify a location at which the first file was discovered in the first scanning operation. 
         [0023]    As touched upon above, the first scanning operation may comprise scanning a first set of directories, e.g. an entirety of the file system, and the second scanning operation may comprise scanning solely a subset of the first set of directories. 
         [0024]    As touched upon above, the discovery information for a (respective) file of the plurality of files may be indicative of one or more directories to be scanned (for one or more other files of the plurality of files), e.g. relative to a (respectively specified) directory. For example, the discovery information for a (respective) file may be indicative of one or more directories to be scanned relative to a directory where the (respective) file is located. The one or more directories may be/comprise the (respectively specified) directory. Similarly, the one or more directories may be/comprise all subdirectories of the (respectively specified) directory. Furthermore, the one or more directories may be/comprise one or more n th -degree parent directories of the (respectively specified) directory, where n=1 specifies a parent directory, n=2 specifies a grandparent directory, n=3 specifies a great grandparent directory, etc. Similarly, the one or more directories may be/comprise all subdirectories of an n th -degree parent directory. The discovery information may specify the one or more directories by a path. For example, the discovery information may specify that a subdirectory “application_XYZ_data” of a directory “application_XYZ” containing an executable file “application_XYZ.exe” is to be scanned by specifying the path “.\application_XYZ_data” (as discovery information in conjunction with the file discovery data for the file “application_XYZ.exe”). 
         [0025]    The method may comprise receiving data indicative of a scanning frequency for any (one or more or each) directory (of the file system). For example, the method may comprise receiving data indicative, for at least one directory, of a scanning frequency for the at least one directory. The scanning frequency may be less than once per scanning operation and greater than never. Similarly, the scanning frequency may be once per scanning operation, once and never again, or never. As such, the method may comprise scanning a first plurality of directories of the file system at a first scanning frequency and scanning a second plurality of directories of the file system at a second scanning frequency. For example, the method may comprise scanning a first plurality of directories of the file system during each scanning operation and scanning a second plurality of directories of the file system (only) during every second/third/fourth/etc. scanning operation. 
         [0026]    The scanning frequency of a (respective) directory may be specified relative to a scanning frequency of another directory. The relative scanning frequency may depend on the location of the (respective) directories to one another. For example, the data indicative of a scanning frequency may specify that a parent directory of a directory comprising a file matching signature data comprised by the file discovery data is to be scanned more frequently (e.g. by a factor x, for example 1.5 or 2 or 3 times more frequently) than (a subdirectory of) the directory comprising the file matching signature data. Similarly, the data indicative of a scanning frequency may specify that a subdirectory of a directory comprising a file matching signature data comprised by the file discovery data is to be scanned less frequently (e.g. by a factor x, for example 1.5 or 2 or 3 times less frequently) than (a parent directory of) the directory comprising the file matching signature data. Similarly, the data indicative of a scanning frequency may specify that directories on remote storage devices are to be scanned less frequently (e.g. by a factor x, for example 1.5 or 2 or 3 times less frequently) than directories on local storage devices (attached directly to the computing device performing the scanning). Furthermore, the relative scanning frequency may depend on the name of the (respective) directories. For example, the data indicative of a scanning frequency may specify that a directory named “tmp” or “lib” is to be scanned less frequently (e.g. by a factor x, for example 1.5 or 2 or 3 times less frequently) than a directory named “opt” or “var.” 
         [0027]    The method may comprise storing a time of scanning for any (one or more or each) directory scanned. For example, the method may comprise storing a time of scanning for each directory scanned during at least one of the first scanning operation and the second scanning operation. The time of scanning may be a time at which the respective directory was scanned. Similarly, the time of scanning may be represented by data indicative of (e.g. a start time, a completion time, a unique ID of) a scanning operation during which the respective directory was scanned. The method may comprise determining, using a time of scanning stored for a respective directory, whether to scan that directory in a respective scanning operation. As such, the method may comprise scanning the respective directory in the respective scanning operation if (and only if) the determination is affirmative. 
         [0028]    The method may comprise storing data designating exclusion of one or more directories from subsequent scans if no files matching the signature data for any of the plurality of files are discovered during two (or three or four) scanning operations (e.g. during any of the first scanning operation and the second scanning operation) that each comprises scanning (each of) the one or more directories. In other words, the method may refrain from scanning a set of one or more directories once a specified number of scans have been carried out on that set of directories without revealing files in those directories belonging to the plurality of files (for which the file discovery data comprises signature data). 
         [0029]    While the teachings of the present disclosure have been discussed hereinabove mainly in the form of a method, the teachings may be embodied, mutatis mutandis, in the form of a system, e.g. a file discovery system, or a computer program product, as will be appreciated by the person skilled in the art. 
         [0030]    The system may be configured and adapted to effect any of the actions described above with respect to the disclosed method. For example, the system may comprise a control component that effects any of the actions described above with respect to the disclosed method. 
         [0031]    The system may comprise a storage device that stores data, e.g. data as described hereinabove. 
         [0032]    The system may comprise a file system scanner that scans a file system, e.g. as described hereinabove. 
         [0033]    The system may comprise a user input device that receives user inputs as discussed hereinabove. 
         [0034]    Any of the aforementioned components of the system may communicate with any other of the aforementioned components of the system. In this respect, the system may comprise one or more communication busses/links interconnecting the respective components. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         [0035]      FIG. 1  schematically shows an embodiment of a file discovery system in accordance with the present disclosure; and 
           [0036]      FIG. 2  schematically shows a flow diagram of an embodiment of a file discovery method in accordance with the present disclosure. 
       
    
    
     DETAILED DESCRIPTION 
       [0037]      FIG. 1  schematically shows an embodiment of a file discovery system  100  in accordance with the present disclosure, e.g. as described above. 
         [0038]    In the illustrated embodiment, file discovery system  100  comprises a storage device  110  and a file system scanner  120 . 
         [0039]      FIG. 2  schematically shows a flow diagram  200  of an embodiment of a file discovery method in accordance with the present disclosure, e.g. as described above. 
         [0040]    In the illustrated embodiment, flow diagram  200  comprises a step  210  of receiving file discovery data, a step  220  of scanning a portion of a file system in a first scanning operation, a step  230  of scanning at least one directory in a second scanning operation, an optional step  240  of receiving data indicative of a scanning frequency for at least one directory, an optional step  250  of scanning a first plurality of directories at a first scanning frequency, an optional step  260  of scanning a second plurality of directories at a second scanning frequency, an optional step  270  of storing a time of scanning of a directory and an optional step  280  of storing data designating exclusion of a directory from subsequent scans. 
         [0041]    As will be appreciated by one skilled in the art, aspects of the present disclosure may be embodied as a system, method or computer program product. Accordingly, aspects of the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. 
         [0042]    Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0043]    A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0044]    Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. 
         [0045]    Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). 
         [0046]    Aspects of the present disclosure are described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the present disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0047]    These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. 
         [0048]    The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0049]    The block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present disclosure. In this regard, each block in the block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions discussed hereinabove may occur out of the disclosed order. For example, two functions taught in succession may, in fact, be executed substantially concurrently, or the functions may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams, and combinations of blocks in the block diagrams, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. 
         [0050]    The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. In the present disclosure, the verb “may” is used to designate optionality/non-compulsoriness. In other words, something that “may” can, but need not. 
         [0051]    In the present disclosure, any “receiving” may be accompanied by a “storing” of the received element/information, e.g. in a computer memory, on a hard disk, in a flash storage device or in any other storage device. In other words, where the method comprises a receiving of an element/information, the method may comprise a storing of the received element/information. 
         [0052]    In the present disclosure, expressions in parentheses are to be understood as being optional. As used in the present disclosure, quotation marks may emphasize that the expression in quotation marks may also be understood in a figurative sense. As used in the present disclosure, quotation marks may identify a particular expression under discussion. 
         [0053]    The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.