dropboxからOneDriveにデータを直接移行してみた
目的というか経緯
- Dropbox FamilyとOffice365 Familyを契約しているので、サブスクとしてどちらかに統合したい
- クラウドストレージとしてはdropboxのほうが機能は豊富だが、差分機能はほとんど現在利用していない
- クラウドストレージを使うアプリがdropbox/onedriveの両方に対応していることを確認
- Office製品を使っているのと、家族全員で利用することを想定すると利用可能ストレージ量からoffice365(onedrive)へ統合することとする
- Dropboxからonedriveへのデータマイグレーションの実施をおこなう
- PC経由でのコピー&ペーストだとローカルの保存領域がそれなりに必要(転送元、転送先それぞれローカルに保存)
- 我が家の有線接続PCはSSDが少なめのため、一括で移行できるツールを探す
- RcloneというOSSのツールがあるので試してみる
おおまかな手順
rcloneのインストール 接続先サーバ、クラウドサービスの登録 同期の実行
Rcloneの設定(Dropbox接続登録)
rclone config
2024/09/16 07:57:20 NOTICE: Config file "C:\\Users\\username\\AppData\\Roaming\\rclone\\rclone.conf" not found - using defaults
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q
>
”n”を押して、リモート名を指定。dropboxなので、そのまま今回はdropboxという名前をつける。
>n
Enter name for new remote.
name> dropbox
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)
(中略)
12 / Dropbox
\ (dropbox)
13 / Encrypt/Decrypt a remote
\ (crypt)
(中略)
\ (premiumizeme)
59 / seafile
\ (seafile)
ストレージ種類の入力一覧がでるため、dropboxの(“12”)を選択。 option client_id,client_secretは選択せず空欄のままエンター。advanced configは設定せず(“n”)、rcloneを実行しているPC上で、今回はブラウザ経由での認証をおこなう(“y”)をそれぞれ選択。
Storage> 12
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
ブラウザが立ち上がる。ブラウザ上で、以下のような画面が表示され”許可"を選択することで、rcloneからdropboxへのアクセスが可能となる。
ブラウザが無い環境(GUIをインストールしていない、またはCLIアクセスしかできないサーバの場合は、最後の質問で"n"を選択すると、別環境でトークンを取得するためのURLが指定される。別環境でトークンを取得し、結果をCLI経由で登録することで、ブラウザのない環境に導入したRcloneでもクラウドサービスに接続することができる。rclone側に正常に登録されると、次のような画面が表示される。
dropbox側のアカウント管理、アプリから接続アプリケーションとして登録されている。RcloneとDropboxの接続を解除したい場合は、Dropboxからリンクを削除する。
Rcloneの設定(OneDrive接続登録)
rclone config実行後、プロンプトから(“n”)を押す。
e/n/d/r/c/s/q> n
Enter name for new remote.
name> onedrive
Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
(中略)
35 / Microsoft OneDrive
\ (onedrive)
Storage> 35
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>
Option region.
Choose national cloud region for OneDrive.
Choose a number from below, or type in your own value of type string.
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> y
dropboxの追加の時と同じようにブラウザが立ち上がって、権限の確認がでてくるので同意を選択。
基本はすべてdefaultの設定にしておく。
2024/09/16 09:40:16 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=Nj-d_xxxxxxxxxxx
2024/09/16 09:40:16 NOTICE: Log in and authorize rclone for access
2024/09/16 09:40:16 NOTICE: Waiting for code...
2024/09/16 09:41:08 NOTICE: Got code
Option config_type.
Type of connection
Choose a number from below, or type in an existing value of type string.
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 value of type string.
Press Enter for the default (ac5a2ce4133294aa).
1 / (personal)
\ (ac5a2ce4133294aa)
config_driveid> 1
Drive OK?
Found drive "root" of type "personal"
URL: https://onedrive.live.com/?cid=xxxxxxxxxxxxx
y) Yes (default)
n) No
y/n> y
Configuration complete.
Options:
- type: onedrive
- token: {"access_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxJEx6J2PE1cfPz9aGv1L0GaPWjevI9ZdsgB0PJmGu7bqiSoe8ZoRu8P5NtKQYcQ9xXfTLsAw1I1H6RG
(中略)
BcN!K9JI05IfG9Sh0Jx15nf6cAcaCLPZbrx!1EfzMswjeteEILrS2AqfP0QI3d*PpCnb6Ji4YsHz","expiry":"2024-09-16T10:41:09.7697697+09:00"}
- drive_id: xxxxxxxxxxxxx
- drive_type: personal
Keep this "onedrive" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
各ストレージクラウドサービスへの接続確認
>rclone lsd dropbox:
-1 2000-01-01 09:00:00 -1 Camera Uploads
-1 2000-01-01 09:00:00 -1 My PC (DESKTOP-734TS1I)
-1 2000-01-01 09:00:00 -1 PC
-1 2000-01-01 09:00:00 -1 aplication
-1 2000-01-01 09:00:00 -1 dev
-1 2000-01-01 09:00:00 -1 family_shared
>rclone lsd onedrive:
-1 2020-03-14 11:15:09 20 Aplications
-1 2019-12-14 11:13:41 7 Personal
-1 2024-09-15 16:02:17 184 family_shared
-1 2020-06-17 17:55:30 59 デスクトップ
-1 2020-06-14 10:17:39 64 ドキュメント
-1 2019-11-22 14:15:08 22 共同開発
-1 2012-11-23 12:44:50 17 画像
- rclone lsd remotename:でルートディレクトリのディレクトリ一覧が参照可能
- rclone ls remotename:remotedir で指定ディレクトリのファイル一覧が参照可能
- 今回は初回データコピーのため、rclone copyを利用。
rclone copy --interactive --ignore-existing dropbox:family_shared onedrive:family_shared
この場合は、dropboxのfamily_sharedのディレクトリそのものではなく、中身が対象となる。なので宛先も格納先のディレクトリ名を指定する。
rclone: copy "xxxx/report.pdf"?
y) Yes, this is OK (default)
n) No, skip this
s) Skip all copy operations with no more questions
!) Do all copy operations with no more questions
q) Exit rclone now.
y/n/s/!/q> !
必要に応じて確認がある。コピー元からの一括上書き処理で問題がなければ、("!")で「確認なしの上書き」を選択する。コピー元、コピー先両方で更新している場合等の場合は、オプションを指定するか、適宜確認しながら(–interactiveを指定)すすめるとよい。
2024/09/16 10:27:16 NOTICE:
Transferred: 16.468 GiB / 156.844 GiB, 10%, 26.192 MiB/s, ETA 1h31m28s
Transferred: 245 / 3149, 8%
Elapsed time: 11m1.7s
Transferring:
一分間隔で進捗状況が表示される。 syncの場合は、コピー元にないファイルはコピー先から消されるため、取り扱いに注意。
付録
Rclone Commands一覧 rclone copy rclone sync
共通でよくつかうオプション
オプション | 説明 |
---|---|
-n, –dry-run | テスト実行する(実際のコピー等はおこなわない) |
-i, –interactive | インタラクティブモードを有効 |
-v, –verbose count | 詳細な情報表示(-vvにするとより詳細情報) |
COPYで指定できるオプション
オプション | 説明 |
---|---|
–check-first | 転送を開始する前にすべてのチェックを行う |
-c, –checksum | サイズとチェックサムで変更を確認する |
–cutoff-mode HARD|SOFT|CAUTIOUS | 最大転送制限に達したときの転送停止モード |
–ignore-case-sync | 大文字小文字を無視する |
–ignore-checksum | チェックサムのチェックを実施しない |
–ignore-existing | ファイルが存在する場合、転送をスキップ |
–ignore-size | 変更時刻 or チェックサムを使用 |
-I, –ignore-times | サイズと時間が一致しても上書き |
–inplace | 宛先ファイルに直接ダウンロードする |
–max-backlog int | 同期またはチェックバックログの最大数(デフォルト10000) |
–max-duration Duration | rcloneがデータを転送する最大期間(デフォルトは制限なし) |
–max-transfer SizeSuffix | 転送するデータの最大サイズ(デフォルトは制限なし) |
-M, –metadata | メタデータを保持する |
–modify-window Duration | 同一時刻と見なされる最大時間差(デフォルトは1ナノ秒) |
–multi-thread-chunk-size SizeSuffix | マルチスレッドダウンロード/アップロードのチャンクサイズ(デフォルトは64M) |
–multi-thread-cutoff SizeSuffix | マルチスレッドダウンロード対象サイズ(デフォルトは256M以上) |
–multi-thread-streams int | マルチスレッドダウンロードのストリーム数(デフォルトは4) |
–multi-thread-write-buffer-size SizeSuffix | マルチスレッドモードのライトバッファサイズ(デフォルトは128K) |
–no-check-dest | コピー先をチェックせず、無条件にコピー |
–no-traverse | コピー時に宛先ファイルシステムをトラバースしない |
–no-update-dir-modtime | ディレクトリの変更時間を更新しない |
–no-update-modtime | ファイルが同一の場合、宛先の変更時間を更新しない |
–order-by string | 転送の順序を指定 |
–partial-suffix string | 一時ファイル名にサフィックスを追加する(デフォルトは".partial") |
–refresh-times | リモートファイルの変更時間を更新する |
–server-side-across-configs | 異なるConfig間でサーバーサイド操作許可する |
–size-only | サイズのみに基づいてスキップ |
-u, –update | 宛先で新しいファイルをスキップする |
SYNCで指定できるオプション
オプション | 説明 |
---|---|
–backup-dir string | バックアップを階層化する |
–delete-after | 転送後に宛先のファイルを削除する(デフォルト) |
–delete-before | 転送前に宛先のファイルを削除する |
–delete-during | 転送中に宛先のファイルを削除する |
–fix-case | ソースに合わせて大文字小文字のリネームをする |
–ignore-errors | I/Oエラーがあっても削除する |
–max-delete int | 同時削除数の最大数(デフォルト1) |
–max-delete-size SizeSuffix | 指定したサイズ以上は削除しない(デフォルトオフ) |
–suffix string | 変更されたファイルに拡張子を追加する |
–suffix-keep-extension | #NAME? |
–track-renames | ファイルのリネームをトラッキングし、可能ならサーバーサイドで移動する |
–track-renames-strategy string | track-renamesを使用する場合のリネーム名の種類(デフォルトは"hash") |