github.com/10XDev/rclone@v1.52.3-0.20200626220027-16af9ab76b2a/docs/content/overview.md (about)

     1  ---
     2  title: "Overview of cloud storage systems"
     3  description: "Overview of cloud storage systems"
     4  type: page
     5  ---
     6  
     7  # Overview of cloud storage systems #
     8  
     9  Each cloud storage system is slightly different.  Rclone attempts to
    10  provide a unified interface to them, but some underlying differences
    11  show through.
    12  
    13  ## Features ##
    14  
    15  Here is an overview of the major features of each cloud storage system.
    16  
    17  | Name                         | Hash        | ModTime | Case Insensitive | Duplicate Files | MIME Type |
    18  | ---------------------------- |:-----------:|:-------:|:----------------:|:---------------:|:---------:|
    19  | 1Fichier                     | Whirlpool   | No      | No               | Yes             | R         |
    20  | Amazon Drive                 | MD5         | No      | Yes              | No              | R         |
    21  | Amazon S3                    | MD5         | Yes     | No               | No              | R/W       |
    22  | Backblaze B2                 | SHA1        | Yes     | No               | No              | R/W       |
    23  | Box                          | SHA1        | Yes     | Yes              | No              | -         |
    24  | Citrix ShareFile             | MD5         | Yes     | Yes              | No              | -         |
    25  | Dropbox                      | DBHASH †    | Yes     | Yes              | No              | -         |
    26  | FTP                          | -           | No      | No               | No              | -         |
    27  | Google Cloud Storage         | MD5         | Yes     | No               | No              | R/W       |
    28  | Google Drive                 | MD5         | Yes     | No               | Yes             | R/W       |
    29  | Google Photos                | -           | No      | No               | Yes             | R         |
    30  | HTTP                         | -           | No      | No               | No              | R         |
    31  | Hubic                        | MD5         | Yes     | No               | No              | R/W       |
    32  | Jottacloud                   | MD5         | Yes     | Yes              | No              | R/W       |
    33  | Koofr                        | MD5         | No      | Yes              | No              | -         |
    34  | Mail.ru Cloud                | Mailru ‡‡‡  | Yes     | Yes              | No              | -         |
    35  | Mega                         | -           | No      | No               | Yes             | -         |
    36  | Memory                       | MD5         | Yes     | No               | No              | -         |
    37  | Microsoft Azure Blob Storage | MD5         | Yes     | No               | No              | R/W       |
    38  | Microsoft OneDrive           | SHA1 ‡‡     | Yes     | Yes              | No              | R         |
    39  | OpenDrive                    | MD5         | Yes     | Yes              | No              | -         |
    40  | OpenStack Swift              | MD5         | Yes     | No               | No              | R/W       |
    41  | pCloud                       | MD5, SHA1   | Yes     | No               | No              | W         |
    42  | premiumize.me                | -           | No      | Yes              | No              | R         |
    43  | put.io                       | CRC-32      | Yes     | No               | Yes             | R         |
    44  | QingStor                     | MD5         | No      | No               | No              | R/W       |
    45  | Seafile                      | -           | No      | No               | No              | -         |
    46  | SFTP                         | MD5, SHA1 ‡ | Yes     | Depends          | No              | -         |
    47  | SugarSync                    | -           | No      | No               | No              | -         |
    48  | Tardigrade                   | -           | Yes     | No               | No              | -         |
    49  | WebDAV                       | MD5, SHA1 ††| Yes ††† | Depends          | No              | -         |
    50  | Yandex Disk                  | MD5         | Yes     | No               | No              | R/W       |
    51  | The local filesystem         | All         | Yes     | Depends          | No              | -         |
    52  
    53  ### Hash ###
    54  
    55  The cloud storage system supports various hash types of the objects.
    56  The hashes are used when transferring data as an integrity check and
    57  can be specifically used with the `--checksum` flag in syncs and in
    58  the `check` command.
    59  
    60  To use the verify checksums when transferring between cloud storage
    61  systems they must support a common hash type.
    62  
    63  † Note that Dropbox supports [its own custom
    64  hash](https://www.dropbox.com/developers/reference/content-hash).
    65  This is an SHA256 sum of all the 4MB block SHA256s.
    66  
    67  ‡ SFTP supports checksums if the same login has shell access and `md5sum`
    68  or `sha1sum` as well as `echo` are in the remote's PATH.
    69  
    70  †† WebDAV supports hashes when used with Owncloud and Nextcloud only.
    71  
    72  ††† WebDAV supports modtimes when used with Owncloud and Nextcloud only.
    73  
    74  ‡‡ Microsoft OneDrive Personal supports SHA1 hashes, whereas OneDrive
    75  for business and SharePoint server support Microsoft's own
    76  [QuickXorHash](https://docs.microsoft.com/en-us/onedrive/developer/code-snippets/quickxorhash).
    77  
    78  ‡‡‡ Mail.ru uses its own modified SHA1 hash
    79  
    80  ### ModTime ###
    81  
    82  The cloud storage system supports setting modification times on
    83  objects.  If it does then this enables a using the modification times
    84  as part of the sync.  If not then only the size will be checked by
    85  default, though the MD5SUM can be checked with the `--checksum` flag.
    86  
    87  All cloud storage systems support some kind of date on the object and
    88  these will be set when transferring from the cloud storage system.
    89  
    90  ### Case Insensitive ###
    91  
    92  If a cloud storage systems is case sensitive then it is possible to
    93  have two files which differ only in case, eg `file.txt` and
    94  `FILE.txt`.  If a cloud storage system is case insensitive then that
    95  isn't possible.
    96  
    97  This can cause problems when syncing between a case insensitive
    98  system and a case sensitive system.  The symptom of this is that no
    99  matter how many times you run the sync it never completes fully.
   100  
   101  The local filesystem and SFTP may or may not be case sensitive
   102  depending on OS.
   103  
   104    * Windows - usually case insensitive, though case is preserved
   105    * OSX - usually case insensitive, though it is possible to format case sensitive
   106    * Linux - usually case sensitive, but there are case insensitive file systems (eg FAT formatted USB keys)
   107  
   108  Most of the time this doesn't cause any problems as people tend to
   109  avoid files whose name differs only by case even on case sensitive
   110  systems.
   111  
   112  ### Duplicate files ###
   113  
   114  If a cloud storage system allows duplicate files then it can have two
   115  objects with the same name.
   116  
   117  This confuses rclone greatly when syncing - use the `rclone dedupe`
   118  command to rename or remove duplicates.
   119  
   120  ### Restricted filenames ###
   121  
   122  Some cloud storage systems might have restrictions on the characters
   123  that are usable in file or directory names.
   124  When `rclone` detects such a name during a file upload, it will
   125  transparently replace the restricted characters with similar looking
   126  Unicode characters.
   127  
   128  This process is designed to avoid ambiguous file names as much as
   129  possible and allow to move files between many cloud storage systems
   130  transparently.
   131  
   132  The name shown by `rclone` to the user or during log output will only
   133  contain a minimal set of [replaced characters](#restricted-characters)
   134  to ensure correct formatting and not necessarily the actual name used
   135  on the cloud storage.
   136  
   137  This transformation is reversed when downloading a file or parsing
   138  `rclone` arguments.
   139  For example, when uploading a file named `my file?.txt` to Onedrive
   140  will be displayed as `my file?.txt` on the console, but stored as
   141  `my file?.txt` (the `?` gets replaced by the similar looking `?`
   142  character) to Onedrive.
   143  The reverse transformation allows to read a file`unusual/name.txt`
   144  from Google Drive, by passing the name `unusual/name.txt` (the `/` needs
   145  to be replaced by the similar looking `/` character) on the command line.
   146  
   147  #### Default restricted characters {#restricted-characters}
   148  
   149  The table below shows the characters that are replaced by default.
   150  
   151  When a replacement character is found in a filename, this character
   152  will be escaped with the `‛` character to avoid ambiguous file names.
   153  (e.g. a file named `␀.txt` would shown as `‛␀.txt`)
   154  
   155  Each cloud storage backend can use a different set of characters,
   156  which will be specified in the documentation for each backend.
   157  
   158  | Character | Value | Replacement |
   159  | --------- |:-----:|:-----------:|
   160  | NUL       | 0x00  | ␀           |
   161  | SOH       | 0x01  | ␁           |
   162  | STX       | 0x02  | ␂           |
   163  | ETX       | 0x03  | ␃           |
   164  | EOT       | 0x04  | ␄           |
   165  | ENQ       | 0x05  | ␅           |
   166  | ACK       | 0x06  | ␆           |
   167  | BEL       | 0x07  | ␇           |
   168  | BS        | 0x08  | ␈           |
   169  | HT        | 0x09  | ␉           |
   170  | LF        | 0x0A  | ␊           |
   171  | VT        | 0x0B  | ␋           |
   172  | FF        | 0x0C  | ␌           |
   173  | CR        | 0x0D  | ␍           |
   174  | SO        | 0x0E  | ␎           |
   175  | SI        | 0x0F  | ␏           |
   176  | DLE       | 0x10  | ␐           |
   177  | DC1       | 0x11  | ␑           |
   178  | DC2       | 0x12  | ␒           |
   179  | DC3       | 0x13  | ␓           |
   180  | DC4       | 0x14  | ␔           |
   181  | NAK       | 0x15  | ␕           |
   182  | SYN       | 0x16  | ␖           |
   183  | ETB       | 0x17  | ␗           |
   184  | CAN       | 0x18  | ␘           |
   185  | EM        | 0x19  | ␙           |
   186  | SUB       | 0x1A  | ␚           |
   187  | ESC       | 0x1B  | ␛           |
   188  | FS        | 0x1C  | ␜           |
   189  | GS        | 0x1D  | ␝           |
   190  | RS        | 0x1E  | ␞           |
   191  | US        | 0x1F  | ␟           |
   192  | /         | 0x2F  | /           |
   193  | DEL       | 0x7F  | ␡           |
   194  
   195  The default encoding will also encode these file names as they are
   196  problematic with many cloud storage systems.
   197  
   198  | File name | Replacement |
   199  | --------- |:-----------:|
   200  | .         | .          |
   201  | ..        | ..         |
   202  
   203  #### Invalid UTF-8 bytes {#invalid-utf8}
   204  
   205  Some backends only support a sequence of well formed UTF-8 bytes
   206  as file or directory names.
   207  
   208  In this case all invalid UTF-8 bytes will be replaced with a quoted
   209  representation of the byte value to allow uploading a file to such a
   210  backend. For example, the invalid byte `0xFE` will be encoded as `‛FE`.
   211  
   212  A common source of invalid UTF-8 bytes are local filesystems, that store
   213  names in a different encoding than UTF-8 or UTF-16, like latin1. See the
   214  [local filenames](/local/#filenames) section for details.
   215  
   216  #### Encoding option {#encoding}
   217  
   218  Most backends have an encoding options, specified as a flag
   219  `--backend-encoding` where `backend` is the name of the backend, or as
   220  a config parameter `encoding` (you'll need to select the Advanced
   221  config in `rclone config` to see it).
   222  
   223  This will have default value which encodes and decodes characters in
   224  such a way as to preserve the maximum number of characters (see
   225  above).
   226  
   227  However this can be incorrect in some scenarios, for example if you
   228  have a Windows file system with characters such as `*` and `?` that
   229  you want to remain as those characters on the remote rather than being
   230  translated to `*` and `?`.
   231  
   232  The `--backend-encoding` flags allow you to change that. You can
   233  disable the encoding completely with `--backend-encoding None` or set
   234  `encoding = None` in the config file.
   235  
   236  Encoding takes a comma separated list of encodings. You can see the
   237  list of all available characters by passing an invalid value to this
   238  flag, eg `--local-encoding "help"` and `rclone help flags encoding`
   239  will show you the defaults for the backends.
   240  
   241  | Encoding  | Characters |
   242  | --------- | ---------- |
   243  | Asterisk | `*` |
   244  | BackQuote | `` ` `` |
   245  | BackSlash | `\` |
   246  | Colon | `:` |
   247  | CrLf | CR 0x0D, LF 0x0A |
   248  | Ctl | All control characters 0x00-0x1F |
   249  | Del | DEL 0x7F |
   250  | Dollar | `$` |
   251  | Dot | `.` |
   252  | DoubleQuote | `"` |
   253  | Hash | `#` |
   254  | InvalidUtf8 | An invalid UTF-8 character (eg latin1) |
   255  | LeftCrLfHtVt | CR 0x0D, LF 0x0A,HT 0x09, VT 0x0B on the left of a string |
   256  | LeftPeriod | `.` on the left of a string |
   257  | LeftSpace | SPACE on the left of a string |
   258  | LeftTilde | `~` on the left of a string |
   259  | LtGt | `<`, `>` |
   260  | None | No characters are encoded |
   261  | Percent | `%` |
   262  | Pipe | \| |
   263  | Question | `?` |
   264  | RightCrLfHtVt | CR 0x0D, LF 0x0A, HT 0x09, VT 0x0B on the right of a string |
   265  | RightPeriod | `.` on the right of a string |
   266  | RightSpace | SPACE on the right of a string |
   267  | SingleQuote | `'` |
   268  | Slash | `/` |
   269  
   270  To take a specific example, the FTP backend's default encoding is
   271  
   272      --ftp-encoding "Slash,Del,Ctl,RightSpace,Dot"
   273  
   274  However, let's say the FTP server is running on Windows and can't have
   275  any of the invalid Windows characters in file names. You are backing
   276  up Linux servers to this FTP server which do have those characters in
   277  file names. So you would add the Windows set which are
   278  
   279      Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,Ctl,RightSpace,RightPeriod,InvalidUtf8,Dot
   280  
   281  to the existing ones, giving:
   282  
   283      Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,Ctl,RightSpace,RightPeriod,InvalidUtf8,Dot,Del,RightSpace
   284  
   285  This can be specified using the `--ftp-encoding` flag or using an `encoding` parameter in the config file.
   286  
   287  Or let's say you have a Windows server but you want to preserve `*`
   288  and `?`, you would then have this as the encoding (the Windows
   289  encoding minus `Asterisk` and `Question`).
   290  
   291      Slash,LtGt,DoubleQuote,Colon,Pipe,BackSlash,Ctl,RightSpace,RightPeriod,InvalidUtf8,Dot
   292  
   293  This can be specified using the `--local-encoding` flag or using an
   294  `encoding` parameter in the config file.
   295  
   296  ### MIME Type ###
   297  
   298  MIME types (also known as media types) classify types of documents
   299  using a simple text classification, eg `text/html` or
   300  `application/pdf`.
   301  
   302  Some cloud storage systems support reading (`R`) the MIME type of
   303  objects and some support writing (`W`) the MIME type of objects.
   304  
   305  The MIME type can be important if you are serving files directly to
   306  HTTP from the storage system.
   307  
   308  If you are copying from a remote which supports reading (`R`) to a
   309  remote which supports writing (`W`) then rclone will preserve the MIME
   310  types.  Otherwise they will be guessed from the extension, or the
   311  remote itself may assign the MIME type.
   312  
   313  ## Optional Features ##
   314  
   315  All the remotes support a basic set of features, but there are some
   316  optional features supported by some remotes used to make some
   317  operations more efficient.
   318  
   319  | Name                         | Purge | Copy | Move | DirMove | CleanUp | ListR | StreamUpload | LinkSharing | About | EmptyDir |
   320  | ---------------------------- |:-----:|:----:|:----:|:-------:|:-------:|:-----:|:------------:|:------------:|:-----:| :------: |
   321  | 1Fichier                     | No    | No   | No   | No      | No      | No    | No           | No           |   No  |  Yes |
   322  | Amazon Drive                 | Yes   | No   | Yes  | Yes     | No [#575](https://github.com/rclone/rclone/issues/575) | No  | No  | No [#2178](https://github.com/rclone/rclone/issues/2178) | No  | Yes |
   323  | Amazon S3                    | No    | Yes  | No   | No      | No      | Yes   | Yes          | No [#2178](https://github.com/rclone/rclone/issues/2178) | No  | No |
   324  | Backblaze B2                 | No    | Yes  | No   | No      | Yes     | Yes   | Yes          | Yes | No  | No |
   325  | Box                          | Yes   | Yes  | Yes  | Yes     | No [#575](https://github.com/rclone/rclone/issues/575) | No  | Yes | Yes | No  | Yes |
   326  | Citrix ShareFile             | Yes   | Yes  | Yes  | Yes     | No      | No    | Yes          | No          | No  | Yes |
   327  | Dropbox                      | Yes   | Yes  | Yes  | Yes     | No [#575](https://github.com/rclone/rclone/issues/575) | No  | Yes | Yes | Yes | Yes |
   328  | FTP                          | No    | No   | Yes  | Yes     | No      | No    | Yes          | No [#2178](https://github.com/rclone/rclone/issues/2178) | No  | Yes |
   329  | Google Cloud Storage         | Yes   | Yes  | No   | No      | No      | Yes   | Yes          | No [#2178](https://github.com/rclone/rclone/issues/2178) | No  | No |
   330  | Google Drive                 | Yes   | Yes  | Yes  | Yes     | Yes     | Yes   | Yes          | Yes         | Yes | Yes |
   331  | Google Photos                | No    | No   | No   | No      | No      | No    | No           | No          | No | No |
   332  | HTTP                         | No    | No   | No   | No      | No      | No    | No           | No [#2178](https://github.com/rclone/rclone/issues/2178) | No  | Yes |
   333  | Hubic                        | Yes † | Yes  | No   | No      | No      | Yes   | Yes          | No [#2178](https://github.com/rclone/rclone/issues/2178) | Yes | No |
   334  | Jottacloud                   | Yes   | Yes  | Yes  | Yes     | Yes     | Yes   | No           | Yes                                                   | Yes | Yes |
   335  | Mail.ru Cloud                | Yes   | Yes  | Yes  | Yes     | Yes     | No    | No           | Yes                                                   | Yes | Yes |
   336  | Mega                         | Yes   | No   | Yes  | Yes     | Yes     | No    | No           | No [#2178](https://github.com/rclone/rclone/issues/2178) | Yes | Yes |
   337  | Memory                       | No    | Yes  | No   | No      | No      | Yes   | Yes          | No          | No | No |
   338  | Microsoft Azure Blob Storage | Yes   | Yes  | No   | No      | No      | Yes   | Yes          | No [#2178](https://github.com/rclone/rclone/issues/2178) | No  | No |
   339  | Microsoft OneDrive           | Yes   | Yes  | Yes  | Yes     | No [#575](https://github.com/rclone/rclone/issues/575) | No | No | Yes | Yes | Yes |
   340  | OpenDrive                    | Yes   | Yes  | Yes  | Yes     | No      | No    | No           | No                                                    | No  | Yes |
   341  | OpenStack Swift              | Yes † | Yes  | No   | No      | No      | Yes   | Yes          | No [#2178](https://github.com/rclone/rclone/issues/2178) | Yes | No |
   342  | pCloud                       | Yes   | Yes  | Yes  | Yes     | Yes     | No    | No           | No [#2178](https://github.com/rclone/rclone/issues/2178) | Yes | Yes |
   343  | premiumize.me                | Yes   | No   | Yes  | Yes     | No      | No    | No           | Yes         | Yes | Yes |
   344  | put.io                       | Yes   | No   | Yes  | Yes     | Yes     | No    | Yes          | No [#2178](https://github.com/rclone/rclone/issues/2178) | Yes | Yes |
   345  | QingStor                     | No    | Yes  | No   | No      | Yes     | Yes   | No           | No [#2178](https://github.com/rclone/rclone/issues/2178) | No  | No |
   346  | Seafile                      | Yes   | Yes  | Yes  | Yes     | Yes     | Yes   | Yes          | Yes         | Yes | Yes |
   347  | SFTP                         | No    | No   | Yes  | Yes     | No      | No    | Yes          | No [#2178](https://github.com/rclone/rclone/issues/2178) | Yes  | Yes |
   348  | SugarSync                    | Yes   | Yes  | Yes  | Yes     | No      | No    | Yes          | Yes         | No  | Yes |
   349  | Tardigrade                   | Yes † | No   | No   | No      | No      | Yes   | Yes          | No          | No  | No  |
   350  | WebDAV                       | Yes   | Yes  | Yes  | Yes     | No      | No    | Yes ‡        | No [#2178](https://github.com/rclone/rclone/issues/2178) | Yes  | Yes |
   351  | Yandex Disk                  | Yes   | Yes  | Yes  | Yes     | Yes     | No    | Yes          | Yes         | Yes | Yes |
   352  | The local filesystem         | Yes   | No   | Yes  | Yes     | No      | No    | Yes          | No          | Yes | Yes |
   353  
   354  ### Purge ###
   355  
   356  This deletes a directory quicker than just deleting all the files in
   357  the directory.
   358  
   359  † Note Swift, Hubic, and Tardigrade implement this in order to delete
   360  directory markers but they don't actually have a quicker way of deleting
   361  files other than deleting them individually.
   362  
   363  ‡ StreamUpload is not supported with Nextcloud
   364  
   365  ### Copy ###
   366  
   367  Used when copying an object to and from the same remote.  This known
   368  as a server side copy so you can copy a file without downloading it
   369  and uploading it again.  It is used if you use `rclone copy` or
   370  `rclone move` if the remote doesn't support `Move` directly.
   371  
   372  If the server doesn't support `Copy` directly then for copy operations
   373  the file is downloaded then re-uploaded.
   374  
   375  ### Move ###
   376  
   377  Used when moving/renaming an object on the same remote.  This is known
   378  as a server side move of a file.  This is used in `rclone move` if the
   379  server doesn't support `DirMove`.
   380  
   381  If the server isn't capable of `Move` then rclone simulates it with
   382  `Copy` then delete.  If the server doesn't support `Copy` then rclone
   383  will download the file and re-upload it.
   384  
   385  ### DirMove ###
   386  
   387  This is used to implement `rclone move` to move a directory if
   388  possible.  If it isn't then it will use `Move` on each file (which
   389  falls back to `Copy` then download and upload - see `Move` section).
   390  
   391  ### CleanUp ###
   392  
   393  This is used for emptying the trash for a remote by `rclone cleanup`.
   394  
   395  If the server can't do `CleanUp` then `rclone cleanup` will return an
   396  error.
   397  
   398  ### ListR ###
   399  
   400  The remote supports a recursive list to list all the contents beneath
   401  a directory quickly.  This enables the `--fast-list` flag to work.
   402  See the [rclone docs](/docs/#fast-list) for more details.
   403  
   404  ### StreamUpload ###
   405  
   406  Some remotes allow files to be uploaded without knowing the file size
   407  in advance. This allows certain operations to work without spooling the
   408  file to local disk first, e.g. `rclone rcat`.
   409  
   410  ### LinkSharing ###
   411  
   412  Sets the necessary permissions on a file or folder and prints a link
   413  that allows others to access them, even if they don't have an account
   414  on the particular cloud provider.
   415  
   416  ### About ###
   417  
   418  This is used to fetch quota information from the remote, like bytes
   419  used/free/quota and bytes used in the trash.
   420  
   421  This is also used to return the space used, available for `rclone mount`.
   422  
   423  If the server can't do `About` then `rclone about` will return an
   424  error.
   425  
   426  ### EmptyDir ###
   427  
   428  The remote supports empty directories. See [Limitations](/bugs/#limitations)
   429   for details. Most Object/Bucket based remotes do not support this.