クラウドストレージに便利なrcloneとは

rcloneはコマンドラインを使用して、様々なクラウドストレージサービス間でファイルを同期したり管理したりするためのオープンソースのツールです。Google Drive、Amazon S3、Dropbox、OneDriveなど、多数のクラウドストレージプロバイダーをサポートしています。Linux、Windows、macOSなど、複数のプラットフォームで利用可能です。80以上ありました。

  1. 1Fichier
  2. Akamai Netstorage
  3. Alibaba Cloud (Aliyun) Object Storage System (OSS)
  4. Amazon Drive (See note)
  5. Amazon S3
  6. Backblaze B2
  7. Box
  8. Ceph
  9. China Mobile Ecloud Elastic Object Storage (EOS)
  10. Arvan Cloud Object Storage (AOS)
  11. Citrix ShareFile
  12. Cloudflare R2
  13. DigitalOcean Spaces
  14. Digi Storage
  15. Dreamhost
  16. Dropbox
  17. Enterprise File Fabric
  18. Fastmail Files
  19. FTP
  20. Google Cloud Storage
  21. Google Drive
  22. Google Photos
  23. HDFS
  24. Hetzner Storage Box
  25. HiDrive
  26. HTTP
  27. ImageKit
  28. Internet Archive
  29. Jottacloud
  30. IBM COS S3
  31. IDrive e2
  32. IONOS Cloud
  33. Koofr
  34. Levvia Object Storage
  35. Liara Object Storage
  36. Linkbox
  37. Linode Object Storage
  38. Mail.ru Cloud
  39. Memset Memstore
  40. Mega
  41. Memory
  42. Microsoft Azure Blob Storage
  43. Microsoft Azure Files Storage
  44. Microsoft OneDrive
  45. Nextcloud
  46. OVH
  47. Blomp Cloud Storage
  48. OpenDrive
  49. OpenStack Swift
  50. Oracle Cloud Storage Swift
  51. Oracle Object Storage
  52. ownCloud
  53. pCloud
  54. Petabox
  55. PikPak
  56. premiumize.me
  57. put.io
  58. Proton Drive
  59. QingStor
  60. Qiniu Cloud Object Storage (Kodo)
  61. Quatrix by Maytech
  62. Rackspace Cloud Files
  63. rsync.net
  64. Scaleway
  65. Seafile
  66. Seagate Lyve Cloud
  67. SeaweedFS
  68. SFTP
  69. Sia
  70. SMB / CIFS
  71. StackPath
  72. Storj
  73. Synology
  74. SugarSync
  75. Tencent Cloud Object Storage (COS)
  76. Uptobox
  77. Wasabi
  78. WebDAV
  79. Yandex Disk
  80. Zoho WorkDrive
  81. The local filesystem

主な特徴としては以下のような点が挙げられます。

  • データ同期: ローカルファイルとクラウドストレージ間、または異なるクラウドストレージサービス間でのデータ同期を簡単に行うことができます。
  • バックアップ: ファイルを定期的にバックアップするために使用でき、コマンドラインオプションを通じて細かい設定が可能です。
  • ファイル転送の最適化: 転送速度の向上や、転送データ量の削減を目的とした機能が含まれています。
  • セキュリティ: データを暗号化して転送および保存することができます。
  • 多機能性: コピー、移動、削除、サイズ確認、リスト表示など、多くの操作をサポートしています。

rcloneを使用する基本的な流れは以下の通りです。

  1. インストール: 公式ウェブサイトからrcloneをダウンロードして、お使いのオペレーティングシステムに合わせてインストールします。
  2. 設定: rclone config コマンドを使用して、使用したいクラウドストレージプロバイダーの設定を行います。これには、APIキーの入力やアクセス許可の設定が含まれることがあります。
  3. 操作の実行: ファイルの同期、コピー、移動など、必要な操作をコマンドラインから実行します。例えば、rclone copy /path/to/local/folder remote:folder はローカルのフォルダからクラウド上のフォルダへファイルをコピーします。

rcloneの使用にあたっては、コマンドライン操作に慣れることが重要ですが、非常に強力で柔軟なツールであるため、一度習得すれば多くの場面で役立ちます。各コマンドの詳細やオプションについては、rcloneの公式ドキュメントやヘルプコマンド(rclone help)を参照すると良いでしょう。

実際に確認してみましょう。最初は、わかりやすいようにWindows版をダウンロードします。

https://rclone.org/

ファイルをダウンロードしたら解凍して、適当なフォルダに配置しておきます。コマンドを使用するのでCドライブ直下にフォルダを作成し、解凍したいくつかのファイルがこのフォルダにあるようにしておきます。以下のコマンドでクラウドストレージに設定をします。確認するクラウドストレージはyandex diskにします。

rclone config

何もないはずなので、nを選択し接続をします。

No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/ s/ q> n

次にこの設定に名前(エイリアス)を付けます。testという名前にしました。

Enter name for new remote.
name> test

たくさん表示されます。Yandex Diskを使用したいので53またはyandexと入力します。

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
1 / 1Fichier
(fichier)
2 / Akamai NetStorage
(netstorage)
3 / Alias for an existing remote
(alias)
4 / Amazon Drive
(amazon cloud drive)
5 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, ArvanCloud, Ceph, ChinaMobile, Cloudflare, DigitalOcean, Dreamhost, GCS, HuaweiOBS, IBMCOS, IDrive, IONOS, LyveCloud, Leviia, Liara, Linode, Minio, Netease, Petabox, RackCorp, Rclone, Scaleway, SeaweedFS, StackPath, Storj, Synology, TencentCOS, Wasabi, Qiniu and others
(s3)
6 / Backblaze B2
(b2)
7 / Better checksums for other remotes
(hasher)
8 / Box
(box)
9 / Cache a remote
(cache)
10 / Citrix Sharefile
(sharefile)
11 / Combine several remotes into one
(combine)
12 / Compress a remote
(compress)
13 / Dropbox
(dropbox)
14 / Encrypt/Decrypt a remote
(crypt)
15 / Enterprise File Fabric
(filefabric)
16 / FTP
(ftp)
17 / Google Cloud Storage (this is not Google Drive)
(google cloud storage)
18 / Google Drive
(drive)
19 / Google Photos
(google photos)
20 / HTTP
(http)
21 / Hadoop distributed file system
(hdfs)
22 / HiDrive
(hidrive)
23 / ImageKit.io
(imagekit)
24 / In memory object storage system.
(memory)
25 / Internet Archive
(internetarchive)
26 / Jottacloud
(jottacloud)
27 / Koofr, Digi Storage and other Koofr-compatible storage providers
(koofr)
28 / Linkbox
(linkbox)
29 / Local Disk
(local)
30 / Mail.ru Cloud
(mailru)
31 / Mega
(mega)
32 / Microsoft Azure Blob Storage
(azureblob)
33 / Microsoft Azure Files
(azurefiles)
34 / Microsoft OneDrive
(onedrive)
35 / OpenDrive
(opendrive)
36 / OpenStack Swift (Rackspace Cloud Files, Blomp Cloud Storage, Memset Memstore, OVH)
(swift)
37 / Oracle Cloud Infrastructure Object Storage
(oracleobjectstorage)
38 / Pcloud
(pcloud)
39 / PikPak
(pikpak)
40 / Proton Drive
(protondrive)
41 / Put.io
(putio)
42 / QingCloud Object Storage
(qingstor)
43 / Quatrix by Maytech
(quatrix)
44 / SMB / CIFS
(smb)
45 / SSH/SFTP
(sftp)
46 / Sia Decentralized Cloud
(sia)
47 / Storj Decentralized Cloud Storage
(storj)
48 / Sugarsync
(sugarsync)
49 / Transparently chunk/split large files
(chunker)
50 / Union merges the contents of several upstream fs
(union)
51 / Uptobox
(uptobox)
52 / WebDAV
(webdav)
53 / Yandex Disk
(yandex)
54 / Zoho
(zoho)
55 / premiumize.me
(premiumizeme)
56 / seafile
(seafile)
Storage> 53

クライアントIDやクライアントシークレットは何も入力せずEnterキーを押します。ブラウザを使用するか問われたらyを選択します。

Option client_id.
OAuth Client Id.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_id>

Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret>

Edit advanced config?
y) Yes
n) No (default)
y/n> n

Use web browser to automatically authenticate rclone with remote?

  • Say Y if the machine running rclone has a web browser you can use
  • Say N if running rclone on a (remote) machine without web browser access
    If not sure try Y. If Y failed, try N.

y) Yes (default)
n) No
y/n> y

すると、ブラウザが起動してyandexのログイン画面が表示されるので指示に従います。うまくいけば以下のように表示されるはずです。

Success!
All done. Please go back to rclone.

ここからはコマンドでストレージを操作します。

rclone lsd test:
rclone mkdir test:dic1
rclone ls test:dic1
rclone sync --interactive c:temp1 test:dic1

1. rclone lsd test:

このコマンドは、test:リモート(rcloneで設定したストレージサービスのエイリアス)のルートディレクトリにあるディレクトリ(フォルダ)の一覧を表示します。lsdは “list directories" の略で、ファイルは表示されず、ディレクトリ(フォルダ)のみがリストされます。

2. rclone mkdir test:dic1

mkdirコマンドは、指定されたリモートストレージ上に新しいディレクトリ(この例ではdic1という名前)を作成します。この例ではtest:リモートにdic1ディレクトリを作成しています。

3. rclone ls test:dic1

lsコマンドは、指定されたディレクトリ内のファイルをリストします。このコマンドは、test:dic1ディレクトリ内のファイル一覧を表示します。ただし、dic1が新しく作成されたばかりで、何もアップロードされていない場合は、何も表示されない可能性があります。

4. rclone sync --interactive c:temp1 test:dic1

syncコマンドは、ソース(この例ではローカルのc:temp1ディレクトリ)とデスティネーション(test:dic1ディレクトリ)間でファイルを同期します。--interactiveオプションは、ファイルを削除する前にユーザーの確認を求めるようにします。このコマンドにより、c:temp1内のすべてのファイルとディレクトリがtest:dic1にコピーされ、両方の場所の内容が一致するようになります。なお、syncはデスティネーションにのみ存在するファイルを削除するため、使用する際は注意が必要です。

これらのコマンドを使って、rcloneを用いた基本的なファイル操作や同期のプロセスを説明しました。特にsyncコマンドは便利であるため、実行前にはオプションや影響をよく理解しておくことが重要です。

Windows版のrcloneではGUIを介してストレージの認証が行えるため、比較的簡単に設定を完了できます。しかし、コマンドラインベースでの設定、特にリモートのクラウドストレージにアクセスする場合には、APIトークンやアクセスキーなどの認証情報が必要になることがあります。

rcloneの設定プロセスでは、以下のステップが含まれます。

  1. rclone configの実行: このコマンドを実行すると、rcloneの設定ウィザードが開始されます。
  2. ストレージプロバイダーの選択: サポートされているストレージプロバイダーのリストから、設定したいプロバイダーを選択します。
  3. 認証情報の入力: プロバイダーによっては、APIキー、アクセストークン、クライアントID、クライアントシークレットなどの情報を入力する必要があります。この情報は、プロバイダーの開発者コンソールやAPI管理ページで取得できます。
  4. 認証プロセス: 認証情報を入力した後、rcloneはブラウザを開いて認証プロセスを完了させることがあります。このステップでは、ユーザーがクラウドストレージアカウントにログインし、rcloneにアクセス権を与える必要があります。

コマンドラインでの設定は少し複雑に感じられるかもしれませんが、正確に認証情報を入力し、指示に従えば、ほとんどのユーザーが成功することができます。また、一度設定を完了すれば、その後はコマンドラインから簡単にファイルの同期やバックアップを行うことができるようになります。

OneDriveでも確認します。今度は、SSH接続したubuntu22.04でrcloneをインストールします。最新版をインストールしたいのでダウンロードするファイルのリンクを取得しておきます。

Ubuntuでsudo apt install rcloneを使用してrcloneをインストールすると、リポジトリのバージョンが古い場合があります。このため、最新版をインストールするには、rcloneの公式ウェブサイトから直接.debパッケージをダウンロードしてインストールする方法が推奨されます。

sudo dpkg -iコマンドはローカルにダウンロードされた.debパッケージファイルのインストールに使用されます。しかし、直接URLを指定してdpkg -iコマンドを実行することはできません。代わりに、まずwgetcurlコマンドを使って.debファイルをダウンロードし、次にdpkg -iでインストールする必要があります。以下に手順を示します。

  1. .debファイルのダウンロード:
    wget https://downloads.rclone.org/v1.65.2/rclone-v1.65.2-linux-amd64.deb

    上記のURLは例であり、rcloneのダウンロードページから最新または必要なバージョンの正確なリンクを取得してください。
  2. .debパッケージのインストール:
    sudo dpkg -i rclone-v1.65.2-linux-amd64.deb

    このコマンドはダウンロードしたパッケージファイル名に置き換えてください。

もし依存関係に関するエラーが発生した場合は、sudo apt -f installを実行して、不足している依存関係を解決できます。

途中までは先と同じです。ブラウザを使用するか問われたら、今度はnを選択します。

rclone config

Option region.
Choose national cloud region for OneDrive.
Choose a number from below, or type in your own string value.
Press Enter for the default (global).
1 / Microsoft Cloud Global
(global)
2 / Microsoft Cloud for US Government
(us)
3 / Microsoft Cloud Germany
(de)
4 / Azure and Office 365 operated by Vnet Group in China
(cn)
region> 1

Edit advanced config?
y) Yes
n) No (default)
y/n> n

Use web browser to automatically authenticate rclone with remote?

  • Say Y if the machine running rclone has a web browser you can use
  • Say N if running rclone on a (remote) machine without web browser access
    If not sure try Y. If Y failed, try N.

y) Yes (default)
n) No
y/n> n

Option config_token.
For this to work, you will need rclone available on a machine that has
a web browser available.
For more help and alternate methods see: https://rclone.org/remote_setup/
Execute the following on the machine with the web browser (same rclone
version recommended):
rclone authorize “onedrive"
Then paste the result.
Enter a value.
config_token>

SSH接続を使用してリモートマシンでrcloneを設定している場合で、そのリモートマシンにウェブブラウザがインストールされていない(またはアクセスできない)場合には、nを選択するのが正しい選択です。

この選択をすることで、rcloneはウェブブラウザを使用せずに認証を進める方法を提案します。具体的には、ローカルマシン(ウェブブラウザが使用可能なマシン)でrclone authorize "onedrive"のようなコマンドを実行し、その結果として表示される認証トークンをリモートマシンのconfig_token>プロンプトに入力する必要があります。先ほどWindows版をインストールしたので、これを使用します。表示されたrclone authorize "onedrive"とコマンドプロンプトで入力するとなにやら長い文字列が表示されます。

C:rclone>rclone authorize “onedrive"
2024/02/15 20:08:09 NOTICE: If your browser doesn’t open automatically go to the following link: http://127.0.0.1:53682/auth?state=IRGcdby8T8u_pPJa-dX19Q
2024/02/15 20:08:09 NOTICE: Log in and authorize rclone for access
2024/02/15 20:08:09 NOTICE: Waiting for code…
2024/02/15 20:08:59 NOTICE: Got code
Paste the following into your remote machine —>
{“access_token":"EwBwA8l6BAAUs5+HQn0N+h2FxWzLS31ZgQVuHsYAAfGHM/cK5wvWkfFzU9A0X5/1DqjxLSL0mbfQUVqLEvvawlE3b8J83A30TS/+Y
省略
Cj!zbiplyDpWjrZNwdrIhmgUknYApZ6BnTBKbD4sxj1w6t3EoZ8iQz2SVJwyuTN9MpAzqO6jcIX2G6mGIYB0BddwwAoVqpn8VES26Dinu3aGWk3EgnWx5brFu3jumAiFBaAVF8ADBIjmno4Hjvwfwfd5hpgJFyV2dEWYfUyt1gMQqdrTy4k6″,"expiry":"2024-02-15T21:09:01.627858+09:00″}
<—End paste

このプロセスは、リモートマシン上でrcloneを設定している際に、クラウドストレージプロバイダ(この例ではOneDrive)への認証を行うために必要です。認証トークンをローカルマシンで取得し、それをリモートマシンのrclone設定に手動で入力することで、リモートマシンからクラウドストレージへのアクセス権を確立できます。

この表示されたトークン情報は、One Driveへのアクセスを認証するために使用する認証トークンです。これをリモートマシン(SSH接続されたCUI環境)でrcloneの設定に適用する必要があります。以下の手順で進めます。

  1. 上記で表示されたJSON形式のトークン情報({"access_token":"EwBwA8l6...から始まる部分)を全てコピーします。省略された部分も含めて、表示された全ての情報が必要です。
  2. SSHで接続されたリモートマシンに戻り、rcloneの設定プロセスを続けている場所にこのトークン情報をペーストします。具体的には、config_token>のプロンプトが表示された場所に、コピーしたトークン情報を貼り付けてEnterキーを押します。

config_token> {“access_token":"EwBwA8l6BAAUs5+HQn0N+h2FxWzLS31ZgQVuHsYAAfGHM/cK5wvWkfFzU9Cj!zbiplyDpWjrZNwdrIhmgUknYApZ6BnTBKbD4sxj1w6t3EoZ8iQz2SVJwyuTN9MpAzqO6jcIX2G
省略
zHxUPv4ZbPxnVZS!U8xGZKE4LRajj5brFu3jumAiFBaAVF8ADBIjmno4Hjvwfwfd5hpgJFyV2dEWYfUyt1gMQqdrTy4k6″,"expiry":"2024-02-15T21:09:01.627858+09:00″}

Option config_type.
Type of connection
Choose a number from below, or type in an existing string value.
Press Enter for the default (onedrive).
1 / OneDrive Personal or Business
(onedrive)
2 / Root Sharepoint site
(sharepoint)
/ Sharepoint site name or URL
3 | E.g. mysite or https://contoso.sharepoint.com/sites/mysite
(url)
4 / Search for a Sharepoint site
(search)
5 / Type in driveID (advanced)
(driveid)
6 / Type in SiteID (advanced)
(siteid)
/ Sharepoint server-relative path (advanced)
7 | E.g. /teams/hr
(path)
config_type> 1

Option config_driveid.
Select drive you want to use
Choose a number from below, or type in your own string value.
Press Enter for the default (10aeefd6b862db5f).
1 / (personal)
(10aeefd6b862db5f)
config_driveid> 1

Drive OK?

Found drive “root" of type “personal"
URL: https://onedrive.live.com/?cid=10aeefd6b862db5f

y) Yes (default)
n) No
y/n> y

Configuration complete.

これにより、リモートマシン上のrcloneがOne Driveにアクセスするための認証情報を得られ、設定が完了します。この認証情報を使用して、One Driveのファイルやフォルダにアクセスするコマンドを実行できるようになります。

メモ
例:rclone copy oned:youtube /home/mamushi/test
rclone copy コマンドを使用する場合、宛先のディレクトリ(この例では /home/mamushi/test)が存在しない場合でも、rcloneはそのディレクトリを自動的に作成してからコピー操作を行います。つまり、oned:youtube から /home/mamushi/test へのコピー操作を実行する際、test ディレクトリが事前に存在しなくても問題ありません。

このコマンドは、OneDrive(oned とラベル付けされたリモート)の youtube ディレクトリから、ローカルシステムの /home/mamushi/test ディレクトリへファイルをコピーします。もし /home/mamushi/test ディレクトリが存在しなければ、rcloneはこのディレクトリを作成し、その後ファイルのコピーを行います。

rcloneは非常に柔軟で便利なツールであり、このようなディレクトリの自動作成機能により、ユーザーはファイルの同期やバックアップをより簡単に行うことができます。もしコピー先のディレクトリ構造が複雑であっても、rcloneは必要な全ての中間ディレクトリを自動的に作成します。

新しいディレクトリに直接コピーする際にrcloneが自動でディレクトリを作成する場合、rcloneはそのディレクトリに対して適切なパーミッションを設定し、コピー操作をスムーズに行うことができます。一方で、既存のディレクトリにコピーしようとした場合にパーミッションのエラーが発生するのは、そのディレクトリが持つパーミッション設定がrcloneの操作と競合している可能性があります。

パーミッションのエラーは、特にUNIX系のオペレーティングシステム(LinuxやmacOSなど)でよく見られます。これは、ファイルシステムのセキュリティモデルの一部として、ファイルやディレクトリが特定のユーザーやグループによる読み書きや実行を許可するかどうかを制御するためです。rcloneを使用して既存のディレクトリにアクセスしようとする際には、次の点を確認することが重要です。

  • ディレクトリのパーミッション: ls -l コマンドを使用して、ディレクトリのパーミッションを確認します。必要に応じて、chmod コマンドを使用してパーミッションを変更することができます。
  • 操作を行うユーザー: rcloneが実行されるユーザーが、コピー先のディレクトリに対して適切なアクセス権を持っているか確認します。不足している場合は、ディレクトリの所有者を変更するか、パーミッションを調整する必要があります。

Uncategorized

Posted by mamu