【意外に】OneDriveのデータをNextcloudに移した【快適】

nextcloud

約 9 分で読めます。



どうやら妻がnextcloudを使いたいらしい。

香港妻
香港妻

OneDriveのデータサイズが100GBを超えそうなの!

もう追加でお金払いたくない!

あんたが使っているストロベリーパイでなんとかしてよ!



ストロベリーパイじゃなくてRaspberry Piですが、まあそこは置いておいて。

妻のOneDriveにある100GB弱のデータを我が家で運用中Raspberry PiのNextcloudに移しました。

これはその作業記録。

似たようなことを考えている方もいるかと思ったのと、途中エラーが出て少し苦労したので、
記事にしました。

作業手順

OneDriveのデータをバックアップ

これは地道にOneDriveからダウンロードしまくるだけでした。

とはいえ、100GBのデータを一度にダウンロードすると途中でネットワークエラーが発生してしまい、また最初からやり直しになったので、数GBごとにフォルダーで分けて落としました。

地味な作業ながら数日かかりました。

REST APIで自動的にやる方法はあるかどうかわかりません。
 あれば簡単だったろうなあ…

バックアップしたデータをNextcloudに移す

手順は大きく以下。

①Nextcloudのユーザーディレクトリにデータをコピー
②Nextcloudにコピーしたデータを認識させる
③画像・動画などのサムネイルを作る



Nextcloudのユーザーディレクトリにデータをコピー

これは何でもいいと思いますが、自分はSFTPでコピーしました。
もともとSSHは有効にさせていて、新しくsambaとか入れるのが面倒だったので。

コピーしたデータはOneDriveからダウンロードした時点でzipになっていると思いますが、これをそのままLinux側でunzipコマンドで解凍すると、日本語フォルダーを解凍できませんでした。

unarコマンドを使うことでうまく解凍できました。
 参考記事

unarコマンドで4GBを超えたファイルを解凍すると、以下のエラーが出ました。

Archive parsing failed! (Data is corrupted.)

これは仕方ないので、

OneDriveからダウンロードするときに4GBを超えないように調整する
 もしくは
ダウンロードしたあとに4GB以下になるよう複数zipファイルに分割する

しかなさそうです。

Nextcloudにコピーしたデータを認識させる

これはoccコマンドで。
 公式ドキュメント

自分が実行したコマンドはこんな感じ。

sudo -u www-data php occ files:scan --path='/UserName/files'



なんかエラー出ました。

An unhandled exception has been thrown:
OC\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)



確かにapcuが無効。

php -i | grep -i apcu
Additional .ini files parsed => /usr/local/etc/php/conf.d/apcu.ini,
apcu
APCu Support => Disabled
APCu Debugging => Disabled



以下を実行して有効化。

echo "apc.enable_cli=1" > /usr/local/etc/php/conf.d/apcu.ini
echo "apc.enable=1" > /usr/local/etc/php/conf.d/apcu.ini



再チャレンジ。
警告は出ていますが、うまくいったようです。

time sudo -u www-data php occ files:scan --path='/UserName/files'
The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see https://www.php.net/manual/en/book.pcntl.php
The current PHP memory limit is below the recommended value of 512MB.
Starting scan for user 1 out of 1 (UserName)
+---------+-------+--------------+
| Folders | Files | Elapsed time |
+---------+-------+--------------+
| 62      | 14356 | 00:02:22     |
+---------+-------+--------------+

real    2m23.709s
user    0m26.062s
sys     0m3.560s



画像・動画などのサムネイルを作る

Nextcloudでフォルダーを見ると正常に認識できていると思いますが、サムネイルはフォルダーを開いたときに動的に作成しているようで、ファイル数が多いフォルダーで下にスクロールさせまくったりすると、CPU使用率がとんでもないことになると思います。

これを避けるためには予めサムネイルを作っておくのが良いです。
 Raspberry Piでは必須とも言える。

Preview-Generatorという便利なアプリを使います。

Nextcloudの管理画面でインストールしてから、Nextcloudのホストで以下のコマンドを実行。

sudo -u www-data php occ preview:generate-all UserName



自分の環境ではメモリが足りないと言われたので、

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 16384 bytes) in /var/www/html/lib/private/legacy/OC_Image.php on line 576



一時的に使用可能メモリを増やして対応しました。

vim.tiny /usr/local/etc/php/php.ini
-memory_limit = 128M
+memory_limit = 512M



ファイル数によっては数時間かかるので、寝る前に実行して翌朝確認、などがいいです。
 自分は5時間かかりました。

画像のサムネイルが作られない

自分の環境ではjpegはheicなどの画像でサムネイルが作られない現象がありました。

こちらの記事に解決方法を書いていますので、一読を。



動画のサムネイルが作られない

日本語などASCII以外の文字で構成されたフォルダー内の動画のサムネイルが作られない現象が。

こちらの記事で解決しています。



終わりに

いかがでしたか。

時間はかかりますが、手間はそこまでかかりませんよ!

この記事を書いた人

組込ソフト歴15年の外資系エンジニア。
前職で組込Linuxを使った商品設計/品質確保の業務に従事。
Raspberry Piが好き。
株式投資で年50万円を稼ぐ。
妻は香港人(国際結婚)。

Please follow me
nextcloud
Please follow me

Comments

タイトルとURLをコピーしました