rcloneで共有フォルダのデータをGoogleDriveに移行する

# はじめに
rcloneはいろんなクラウドストレージに対応したファイル操作ツールです

公式サイト
https://rclone.org/

# rcloneのインストール
Windows OSに入れる前提です

Chocolateyをインストールします
https://chocolatey.org/install#individual

rcloneをインストールします
https://rclone.org/install/#windows-chocolatey

# リモートの定義を作る
共有ドライブ1つ　に対して　rcloneのリモート定義を1つ　作る必要があります。

DOSプロンプトを起動して下記を実行します
```
>	rclone config
```

[n]を入力してEnter
```
Current remotes:	
	
Name                 Type	
====                 ====	
	
e) Edit existing remote	
n) New remote	
d) Delete remote	
r) Rename remote	
c) Copy remote	
s) Set configuration password	
q) Quit config	
e/n/d/r/c/s/q>	n
```

リモート定義のお名前をつけます(今回はtest)
```
Enter name for new remote.
name> test
```

Google Driveは18番なので[18]を入力してEnter
```
Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
1 / 1Fichier
～いっぱいあるので省略～
50 / seafile	
\ (seafile)	
Storage>	18
```

新しく作るのが面倒だったので、GAMで作ったものを入力します
```
Option client_id.
Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a value. Press Enter to leave empty.
client_id> GAMで作ったものを入力します

Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret> GAMで作ったものを入力します
```

権限設定
私はsyncでファイル消したりしたかったのでFull Accessを選択しました
```
Option scope.
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
1 / Full access all files, excluding Application Data Folder.
\ (drive)
2 / Read-only access to file metadata and file contents.
\ (drive.readonly)
/ Access to files created by rclone only.
3 | These are visible in the drive website.
| File authorization is revoked when the user deauthorizes the app.
\ (drive.file)
/ Allows read and write access to the Application Data folder.
4 | This is not visible in the drive website.
\ (drive.appfolder)
/ Allows read-only access to file metadata but
5 | does not allow any access to read or download file content.
\ (drive.metadata.readonly)
scope> 1
```

サービスアカウント設定
特に不要なのでEnter
```
Option service_account_file.
Service Account Credentials JSON file path.
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
Enter a value. Press Enter to leave empty.
service_account_file>
```

高度な設定
特に不要なのでEnter
```
Edit advanced config?
y) Yes
n) No (default)
y/n>
```

ブラウザでGoogle認証をするかどうか
rcloneで操作を行うユーザであらかじめGoogleログインしてください。
画面開くので許可を押します。
```
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]を入力してEnter
```
Configure this as a Shared Drive (Team Drive)?
y) Yes
n) No (default)
y/n> y
```

共有ドライブの選択
対象の番号を入力してEnter
```
Option config_team_drive.
Shared Drive
Choose a number from below, or type in your own string value.
～いっぱい出るので省略～
config_team_drive> 番号を入力
```

完了メッセージがでたら[y]を入力してEnter
```
Configuration complete.
Options:
- type: drive
- client_id: 省略
- client_secret: 省略
- scope: drive
- token: 省略
- team_drive: 省略
- root_folder_id:
Keep this "test" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
```

メニューに戻るので[q]を入力してEnter
```
Current remotes:

Name                 Type
====                 ====
test                 drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q
```

# 実際に使ってみる

rcloneのリモート定義を確認する
```
rclone listremotes
```

コピーする
初回コピーはlog level : NOTICE (default) がいいです。
結果が出なくて不安なので、2回目以降はINFOがいいかなって思います
2回目以降は差分があった時だけコピーされます
```
rclone copy コピー元 コピー先定義:パス --progress --log-level INFO --log-file ログファイルパス
```

同期する
コピー元 → コピー先の一方向です
「copy」を「sync」にするだけなのでめっちゃ楽です
```
rclone sync コピー元 コピー先定義:パス --progress --log-level INFO --log-file ログファイルパス
```