今はクラウドストレージサービスが多数存在します。幾つものサービスを使い分けていたり、会社と個人、プロジェクトなどでストレージサービスが異なるといった方も多いのではないでしょうか。 そんな方にお勧めなのがrcloneです。複数のクラウドストレージをコマンドラインから操作できる便利ツールです。

rcloneの使い方

例えばDropboxであれば次のようにコマンドを打つと内包しているファイルが一覧できます。

$ rclone ls Dropbox:/
2016/05/24 11:42:42 
Transferred:            0 Bytes (   0.00 kByte/s)
Errors:                 0
Checks:                 0
Transferred:            0
Elapsed time:      1m0.9s

     2925 .emacs.d/elisp/el-get/.loaddefs.el
       25 .emacs.d/elisp/el-get/el-get/.git/HEAD
       :

設定を作るので、複数のDropboxアカウントでも扱えるでしょう。対応しているサービスは以下の通りです。

  • Google Drive
  • Amazon Cloud Drive
  • S3
  • Dropbox
  • Backblaze B2
  • One Drive
  • Swift
  • Hubic
  • Cloudfiles
  • Google Cloud Storage
  • Yandex Files

コマンドは次の通りですが、クラウドストレージ間でファイルを同期させるといった操作もできます。

rclone
Sync files and directories to and from local and remote object stores - v1.29.

Syntax: [options] subcommand <parameters> </parameters><parameters ...>

Subcommands:

   copy source:path dest:path

       Copy the source to the destination.  Doesn't transfer
       unchanged files, testing by size and modification time or
       MD5SUM.  Doesn't delete files from the destination.

   sync source:path dest:path

       Sync the source to the destination, changing the destination
       only.  Doesn't transfer unchanged files, testing by size and
       modification time or MD5SUM.  Destination is updated to match
       source, including deleting files if necessary.  Since this can
       cause data loss, test first with the --dry-run flag.

   move source:path dest:path

       Moves the source to the destination.  This is equivalent to a
       copy followed by a purge, but may use server side operations
       to speed it up. Since this can cause data loss, test first
       with the --dry-run flag.

   ls remote:path

       List all the objects in the the path with size and path.

   lsd remote:path

       List all directories/containers/buckets in the the path.

   lsl remote:path

       List all the objects in the the path with modification time,
       size and path.

   md5sum remote:path

       Produces an md5sum file for all the objects in the path.  This
       is in the same format as the standard md5sum tool produces.

   sha1sum remote:path

       Produces an sha1sum file for all the objects in the path.  This
       is in the same format as the standard sha1sum tool produces.

   size remote:path

       Returns the total size of objects in remote:path and the number
       of objects.

   mkdir remote:path

       Make the path if it doesn't already exist

   rmdir remote:path

       Remove the path.  Note that you can't remove a path with
       objects in it, use purge for that.

   purge remote:path

       Remove the path and all of its contents.  Does not obey
       filters - use remove for that.

   delete remote:path

       Remove the contents of path.  Obeys include/exclude filters.

   check source:path dest:path

       Checks the files in the source and destination match.  It
       compares sizes and MD5SUMs and prints a report of files which
       don't match.  It doesn't alter the source or destination.

   dedupe remote:path

       Interactively find duplicate files and offer to delete all
       but one or rename them to be different. Only useful with
       Google Drive which can have duplicate file names.

   config 

       Enter an interactive configuration session.

   authorize 

       Remote authorization. Used to authorize a remote or headless
       rclone from a machine with a browser - use as instructed by
       rclone config.

   help 

       This help.

Options:
     --acd-templink-threshold value   Files >= this size will be downloaded via their tempLink. (default 9G)
     --ask-password                   Allow prompt for password for encrypted configuration. (default true)
     --bwlimit value                  Bandwidth limit in kBytes/s, or use suffix k|M|G
     --checkers int                   Number of checkers to run in parallel. (default 8)
 -c, --checksum                       Skip based on checksum & size, not mod-time & size
     --config string                  Config file. (default "/Users/nakatsugawa/.rclone.conf")
     --contimeout duration            Connect timeout (default 1m0s)
     --cpuprofile string              Write cpu profile to file
     --dedupe-mode string             Dedupe mode interactive|skip|first|newest|oldest|rename. (default "interactive")
     --delete-after                   When synchronizing, delete files on destination after transfering
     --delete-before                  When synchronizing, delete files on destination before transfering
     --delete-during                  When synchronizing, delete files during transfer (default)
     --delete-excluded                Delete files on dest excluded from sync
     --drive-auth-owner-only          Only consider files owned by the authenticated user. Requires drive-full-list.
     --drive-chunk-size value         Upload chunk size. Must a power of 2 >= 256k. (default 8M)
     --drive-formats string           Comma separated list of preferred formats for downloading Google docs. (default "docx,xlsx,pptx,svg")
     --drive-full-list                Use a full listing for directory list. More data but usually quicker. (obsolete)
     --drive-upload-cutoff value      Cutoff for switching to chunked upload (default 8M)
     --drive-use-trash                Send files to the trash instead of deleting permanently.
     --dropbox-chunk-size value       Upload chunk size. Max 150M. (default 128M)
 -n, --dry-run                        Do a trial run with no permanent changes
     --dump-bodies                    Dump HTTP headers and bodies - may contain sensitive info
     --dump-filters                   Dump the filters to the output
     --dump-headers                   Dump HTTP headers - may contain sensitive info
     --exclude string                 Exclude files matching pattern
     --exclude-from string            Read exclude patterns from file
     --files-from string              Read list of source-file names from file
 -f, --filter string                  Add a file-filtering rule
     --filter-from string             Read filtering patterns from a file
     --ignore-existing                Skip all files that exist on destination
 -I, --ignore-times                   Don't skip files that match size and time - transfer all files
     --include string                 Include files matching pattern
     --include-from string            Read include patterns from file
     --log-file string                Log everything to this file
     --low-level-retries int          Number of low level retries to do. (default 10)
     --max-age string                 Don't transfer any file older than this in s or suffix ms|s|m|h|d|w|M|y
     --max-size value                 Don't transfer any file larger than this in k or suffix k|M|G
     --memprofile string              Write memory profile to file
     --min-age string                 Don't transfer any file younger than this in s or suffix ms|s|m|h|d|w|M|y
     --min-size value                 Don't transfer any file smaller than this in k or suffix k|M|G
     --modify-window duration         Max time diff to be considered the same (default 1ns)
     --no-check-certificate           Do not verify the server SSL certificate. Insecure.
     --no-gzip-encoding               Don't set Accept-Encoding: gzip.
     --onedrive-chunk-size value      Above this size files will be chunked - must be multiple of 320k. (default 10M)
     --onedrive-upload-cutoff value   Cutoff for switching to chunked upload - must be <= 100MB (default 10M)
 -q, --quiet                          Print as little stuff as possible
     --retries int                    Retry operations this many times if they fail (default 3)
     --size-only                      Skip based on size only, not mod-time or checksum
     --stats duration                 Interval to print stats (0 to disable) (default 1m0s)
     --swift-chunk-size value         Above this size files will be chunked into a _segments container. (default 5G)
     --timeout duration               IO idle timeout (default 5m0s)
     --transfers int                  Number of file transfers to run in parallel. (default 4)
 -u, --update                         Skip files that are newer on the destination.
 -v, --verbose                        Print lots more stuff
 -V, --version                        Print the version number

It is only necessary to use a unique prefix of the subcommand, eg 'mo'
for 'move'.
No command supplied

クラウドストレージサービスは専用のクライアントアプリを提供していますが、常駐するのが嫌だという声もあります。rcloneを使えばディレクトリを作ったり、ファイルをコピーしたりする操作がコマンドから簡単にできます。クラウドストレージを多数使っている方はぜひお使いください。

rcloneはWindows/Mac OSX/Linux用のオープンソース・ソフトウェア(MIT License)です。

rclone - rsync for cloud storage ncw/rclone: Sync files to and from Google Drive, Amazon Cloud Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Cloudfiles, Google Cloud Storage, Yandex Files