dropboxからOneDriveにデータを直接移行してみた

Page content

目的というか経緯

  • 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へのアクセスが可能となる。

image-20240916081055635

ブラウザが無い環境(GUIをインストールしていない、またはCLIアクセスしかできないサーバの場合は、最後の質問で"n"を選択すると、別環境でトークンを取得するためのURLが指定される。別環境でトークンを取得し、結果をCLI経由で登録することで、ブラウザのない環境に導入したRcloneでもクラウドサービスに接続することができる。rclone側に正常に登録されると、次のような画面が表示される。

image-20240916083414258

dropbox側のアカウント管理、アプリから接続アプリケーションとして登録されている。RcloneとDropboxの接続を解除したい場合は、Dropboxからリンクを削除する。

image-20240916090638099

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の追加の時と同じようにブラウザが立ち上がって、権限の確認がでてくるので同意を選択。

image-20240916094047073

image-20240916094122357

基本はすべて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")

関連記事