Class Synchronize


  • public class Synchronize
    extends Object
    Console application to synchronize the local file system with a storage service. For more information and help please see the Synchronize Guide.
    Author:
    James Murty
    • Field Detail

      • APPLICATION_DESCRIPTION

        public static final String APPLICATION_DESCRIPTION
        String provided to service as User-Agent description.
        See Also:
        Constant Field Values
    • Constructor Detail

      • Synchronize

        public Synchronize​(StorageService service,
                           boolean doAction,
                           boolean isQuiet,
                           boolean isNoProgress,
                           boolean isForce,
                           boolean isKeepFiles,
                           boolean isNoDelete,
                           boolean isMoveEnabled,
                           boolean isBatchMode,
                           boolean isGzipEnabled,
                           boolean isEncryptionEnabled,
                           int reportLevel,
                           Jets3tProperties properties)
        Constructs the application with a pre-initialised service and the user-specified options.
        Parameters:
        service - a pre-initialised service (including Provider credentials)
        doAction - Files will only be transferred if true.
        isQuiet - Report will only include summary of actions if true.
        isNoProgress - Upload/download progress updates will not be printed.
        isForce - Files will be overwritten when unchanged if true.
        isKeepFiles - Files will not be replaced/deleted if true.
        isMoveEnabled - If true, items will be moved rather than just copied. Files will be deleted after they have been uploaded, and objects will be deleted after they have been downloaded.
        isBatchMode - If true, uploads or downloads will proceed in batches rather than all at once. This mode is useful for large buckets where listing all the objects and their details at once may consume a large amount of time and memory.
        isNoDelete - Files will not be deleted if true, but may be replaced.
        isGzipEnabled - Files will be gzipped prior to upload if true.
        isEncryptionEnabled - Files will be encrypted prior to upload if true.
        reportLevel - The level or amount of reporting to perform. The default value is REPORT_LEVEL_ALL.
        properties - The configuration properties that will be used by this instance.
    • Method Detail

      • uploadLocalDirectory

        public void uploadLocalDirectory​(Map<String,​String> objectKeyToFilepathMap,
                                         StorageBucket bucket,
                                         String rootObjectPath,
                                         String aclString,
                                         BytesProgressWatcher md5GenerationProgressWatcher)
                                  throws Exception
        Copies the contents of a local directory to a service, storing them in the given root path.

        A set of comparisons is used to determine exactly how the local files differ from the contents of the service location, and files are transferred based on these comparisons and options set by the user.

        The following object properties are set when a file is uploaded:

        • The object's key name
        • Content-Length: The size of the uploaded file. This will be 0 for directories, and will differ from the original file if gzip or encryption options are set.
        • Content-Type: Mimetypes.MIMETYPE_BINARY_OCTET_STREAM for directories, otherwise a mimetype determined by Mimetypes.getMimetype(java.lang.String) unless the gzip option is set, in which case the Content-Type is set to application/x-gzip.

        The following jets3t-specific metadata items are also set:

        Parameters:
        objectKeyToFilepathMap - map of '/'-delimited object key names to local file absolute paths
        bucket - the bucket to put the objects in (will be created if necessary)
        rootObjectPath - the root path where objects are put (will be created if necessary)
        aclString - the ACL to apply to the uploaded object
        md5GenerationProgressWatcher - a class that reports on the progress of this method
        Throws:
        Exception
      • restoreToLocalDirectory

        public void restoreToLocalDirectory​(Map<String,​String> objectKeyToFilepathMap,
                                            String rootObjectPath,
                                            File localDirectory,
                                            StorageBucket bucket,
                                            BytesProgressWatcher md5GenerationProgressWatcher)
                                     throws Exception
        Copies the contents of a root path in service to the local file system.

        A set of comparisons is used to determine exactly how the service objects differ from the local target, and files are transferred based on these comparisons and options set by the user.

        If an object is gzipped (according to its Content-Type) and the gzip option is set, the object is inflated. If an object is encrypted (according to the metadata item Constants.METADATA_JETS3T_CRYPTO_ALGORITHM) and the crypt option is set, the object is decrypted. If encrypted and/or gzipped objects are restored without the corresponding option being set, the user will be responsible for inflating or decrypting the data.

        Note: If a file was backed-up with both encryption and gzip options it cannot be restored with only the gzip option set, as files are gzipped prior to being encrypted and cannot be inflated without first being decrypted.

        Parameters:
        objectKeyToFilepathMap - map of '/'-delimited object key names to local file absolute paths
        rootObjectPath - the root path in service where backed-up objects were stored
        localDirectory - the directory to which the objects will be restored
        bucket - the bucket into which files were backed up
        md5GenerationProgressWatcher - a class that reports on the progress of this method
        Throws:
        Exception
      • run

        public void run​(String servicePath,
                        File[] files,
                        String actionCommand,
                        String cryptoPassword,
                        String aclString,
                        String providerId)
                 throws Exception
        Runs the application, performing the action specified on the given service and local directory paths.
        Parameters:
        servicePath - the path in service (including the bucket name) to which files are backed-up, or from which files are restored.
        files - an array of one or more File objects for Uploads, or a single target directory for Downloads.
        actionCommand - the action to perform, UP(load) or DOWN(load)
        cryptoPassword - if non-null, an EncryptionUtil object is created with the provided password to encrypt or decrypt files.
        aclString - the ACL to apply to the uploaded object
        providerId - service provider name: "S3" or "GS"
        Throws:
        Exception
      • run

        public void run​(String servicePath,
                        List<File> files,
                        String actionCommand,
                        String cryptoPassword,
                        String aclString,
                        String providerId)
                 throws Exception
        Runs the application, performing the action specified on the given service and local directory paths.
        Parameters:
        servicePath - the path in service (including the bucket name) to which files are backed-up, or from which files are restored.
        files - a set of one or more of File objects for Uploads, or a single target directory for Downloads.
        actionCommand - the action to perform, UP(load) or DOWN(load)
        cryptoPassword - if non-null, an EncryptionUtil object is created with the provided password to encrypt or decrypt files.
        aclString - the ACL to apply to the uploaded object
        providerId - service provider name: "S3" or "GS"
        Throws:
        Exception
      • main

        public static void main​(String[] args)
                         throws Exception
        Runs this application from the console, accepts and checks command-line parameters and runs an upload or download operation when all the necessary parameters are provided.
        Parameters:
        args -
        Throws:
        Exception