約 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以外の文字で構成されたフォルダー内の動画のサムネイルが作られない現象が。
こちらの記事で解決しています。
終わりに
いかがでしたか。
時間はかかりますが、手間はそこまでかかりませんよ!
Comments