ストレージを壊さずにNextcloudデータを外部ドライブに移動する方法

通常の Linux インストールの場合、外部ドライブを永続的にマウントし、Nextcloud がオフラインのときにデータディレクトリ全体をコピーしてから、元のパスを新しい場所にシンボリックリンクします。単純にパスを変更しないでくださいdatadirectory。Nextcloudconfig.phpはローカルストレージを絶対パスで追跡するため、直接パスを変更するとファイルや共有が孤立する可能性があります。

この例では、パッケージまたはアーカイブのインストールを想定しています。Docker、Snap、およびアプライアンスのインストールでは、パスのマッピング方法が異なるため、ホストパスをそのままコピーするのではなく、それぞれのデプロイメントに合わせてマウントを調整してください。

何が確定していて、何がサーバーに依存するのか

ポイントどうすればよいか
検証済み:Nextcloudはローカルストレージを識別するために絶対パスを使用します。不注意な操作によって、ファイルや共有フォルダが孤立してしまう可能性があります。シンボリックリンクを使用して設定されたパスを安定させ、すべてのコンテンツを保持します.ncdata。
設定に依存します。データパス、HTTPユーザー、ファイルシステム、サービス名はそれぞれ異なります。有効な設定を確認し、ディスクが必要なLinuxの所有権とパーミッションを保持していることを確認してください。
ディスクに依存するため、起動時のマウントや電源供給が確実に行われるとは限りません。UUIDでマウントし、再起動後にマウントをテストし、データディスクが存在しない場合にNextcloudが起動しないようにします。

ファイルアプリの外部ストレージマウント機能は、セカンダリの保存場所を追加するものであり、プライマリデータディレクトリを移動するものではありません。追加のフォルダや共有フォルダとして利用し、サーバー自身のファイルやメタデータをドライブ上に保存する必要がある場合は、データディレクトリを移行してください。

1. Nextcloudをバックアップし、ソースパスを特定する

データベース、config/データディレクトリ、カスタムアプリ、テーマをバックアップしてください。データベースのバックアップが復元可能であることを確認してください。ファイルのコピーだけでは完全なロールバックにはなりません。

データパスを またはconfig/config.phpを使用して見つけocc config:system:get datadirectory、HTTP ユーザーを特定します。例ではwww-dataとを使用していますが/var/www/nextcloud/data、実際の値に置き換えてください。必要なファイルが含まれているドライブはフォーマットしないでください。

選択された外部ドライブ、ext4ファイルシステム、およびマウントポイントフィールドを表示するLinuxディスクユーティリティ
図:ディスクユーティリティの画面には、Nextcloudにマウントする前に確認するための外付けドライブとファイルシステムの詳細が表示されます。

2. ドライブを安定した場所に取り付ける

を実行してlsblk -f、パーティションのファイルシステムUUIDをメモしてください。 のような名前は/dev/sdb1変更される可能性があるため、マウント設定ではUUIDを使用してください。

ext4を使用するLinuxサーバーの場合、マウントポイントを作成し、次のような行をに追加します/etc/fstab。サンプルUUIDを実際のUUIDに置き換えてください。

UUID=YOUR-DRIVE-UUID /srv/nextcloud-disk ext4 defaults 0 2

パーティションに既に存在するタイプを使用します。この行はフォーマットを行いません。ファイルシステムがNextcloudに必要な所有権と権限を保持していることを確認してください。

データを保存する前に、マウントして動作確認を行ってください。

sudo mkdir -p /srv/nextcloud-disk
sudo mount /srv/nextcloud-disk
findmnt /srv/nextcloud-disk

出力で外部パーティションが識別されていることを確認してください。 を使用する場合はnofail、マウントされた Web/PHP サービスもゲートしてください。そうしないと、ディスクが見つからない場合に、書き込みを受け付ける空のマウントポイントディレクトリが残ってしまう可能性があります。 systemd ドロップインでは を使用できますRequiresMountsFor=/srv/nextcloud-disk。 Nextcloud の実行中はドライブを接続したままにしてください。

マウントされた外部ボリュームのUUIDベースのファイルシステムエントリを表示するターミナルエディタ
図解:ファイルシステムテーブルのUUIDエントリは、デバイス名のショートカットではなく、永続的なマウント構成を表します。

3. Nextcloudをメンテナンスモードにしてデータをコピーする

メンテナンスモードではログインはブロックされますが、すべてのスケジュール済みジョブが停止されるわけではありません。Nextcloudのcronまたはsystemdタイマーを一時停止し、同期クライアントを停止し、Web/PHPサービスを停止してからコピーを開始してください。そうすることで、移動中にリクエストによってファイルが変更されるのを防ぐことができます。

sudo -E -u www-data php /var/www/nextcloud/occ maintenance:mode --on

スケジューラを無効にし、Web/PHPサービスを停止した状態で、所有権、権限、ACL、および隠しファイルを保持するために、データディレクトリをroot権限でコピーします。

sudo mkdir -p /srv/nextcloud-disk/data
sudo rsync -Aavx --numeric-ids /var/www/nextcloud/data/ /srv/nextcloud-disk/data/

末尾のスラッシュはディレクトリの内容をコピーします。古いコピーはそのまま残し、rsyncエラーがないか確認し、.ncdata新しいディレクトリの最上位レベルに存在することを確認してください。

ファイルコピーコマンドの進行状況を示す行が表示された暗いターミナルウィンドウ
図:端末上のコピー画面は、Nextcloudが停止している状態でデータディレクトリ全体を転送している様子を表しています。

4. シンボリックリンクを使用して古いパスを保持する

Nextcloudのトラブルシューティングマニュアルでは、元のパスを新しいディレクトリにリンクすることを推奨しています。コピーを確認した後、ロールバック用に古いディレクトリの名前を変更し、リンクを作成します。

sudo mv /var/www/nextcloud/data /var/www/nextcloud/data.pre-move
sudo ln -s /srv/nextcloud-disk/data /var/www/nextcloud/data
readlink -f /var/www/nextcloud/data

パスが に解決されることを確認してください/srv/nextcloud-disk/data。Web ユーザーは親ディレクトリをたどり、.ncdataターゲットに対して読み書きを行う必要があります。

sudo -u www-data test -r /var/www/nextcloud/data/.ncdata
sudo -u www-data test -w /var/www/nextcloud/data

チェックが失敗した場合は、Webユーザーの所有権または親権限を修正してください。ディレクトリをすべてのユーザーが書き込み可能にしないでください。一部のWebサーバーではシンボリックリンクを許可する必要があります。それが不可能な場合は、oc_storages手動で編集しないでください。Nextcloudはこの方法を非対応としており、データベースが破損する可能性があると警告しています。

移動コマンドとシンボリックリンクコマンドを含むターミナル、それに続くパス検査行
図:端末画面には、元のデータパスが外部ドライブのディレクトリにリンクされている様子が示されています。

5. ロールバックコピーを削除する前に、再起動して確認してください。

ウェブ/PHPを起動し、スケジューラを再度有効にします。マウントとシンボリックリンクを確認してから、メンテナンスモードをオフにします。

findmnt /srv/nextcloud-disk
sudo -E -u www-data php /var/www/nextcloud/occ status
sudo -E -u www-data php /var/www/nextcloud/occ maintenance:mode --off

サインインして、既存のファイルや共有フォルダを開き、小さなファイルをアップロード/ダウンロードします。NextcloudとWebサーバーのログを確認した後、メンテナンスウィンドウ内で再起動し、Nextcloudが起動する前にディスクがマウントされていることを確認します。

再起動と通常の同期が成功するまで、データベースのバックアップを保持してくださいdata.pre-move。移動が失敗した場合は、メンテナンスモードを有効にし、アプリを停止して、元のディレクトリとサービスの状態を復元してください。files:scan誤ったマウントは、一括で修正することはできません。

検証

起動時にディスクがマウントされ、元のパスが正しく解決され、Webユーザーが読み書きでき、既存のファイルと少量のアップロードが機能することを確認してください。再起動後にNextcloudがファイルが見つからないと報告する場合は、アプリを停止し、書き込みを許可する前にマウントを確認してください。

参照: Nextcloud のデータディレクトリの移動に関するガイダンス; Nextcloud のバックアップおよびメンテナンス モードに関するガイダンス; Nextcloud のデータディレクトリの場所と所有権; Nextcloud の外部ストレージをセカンダリ マウントとして使用する場合; UUID 識別子に関する Linux マウント ドキュメント; systemd マウントの依存関係。

コメントを残す

ストレージを壊さずにNextcloudデータを外部ドライブに移動する方法

ストレージを壊さずにNextcloudデータを外部ドライブに移動する方法

永続的なUUIDマウント、メンテナンスモード、検証済みコピー、および元のパスのシンボリックリンクを使用して、Linux Nextcloudのデータディレクトリを安全に外部ドライブに移動します。

Nextcloudのアップデート後に発生したデータベースエラー:最初に確認すべきこと

SQLエラーの診断、データベース接続の確認、中断された移行の安全な完了を行うことで、アップデート後にNextcloudへのアクセスを復元します。

OCCを使用してNextcloudの管理者パスワードをリセットする

NextcloudのOCCコマンドを使用して、サーバーシェルから管理者パスワードをリセットする方法を説明します。ユーザー名、権限、外部ログインプロバイダーに関するガイダンスも含まれています。

Nextcloudを提供するHTTPSエンドポイントにHSTSヘッダーを追加する

NextcloudのHSTS警告を解消するには、Apache、NGINX、またはTLSプロキシでヘッダーを設定し、公開HTTPS応答が安全に動作することを確認してください。

インターネット接続がないと報告されるNextcloudアプリのインストールに関するトラブルシューティング

インターネット接続がないと報告されるNextcloudアプリのインストールに関するトラブルシューティング

App Storeのインストール失敗の原因を、DNS、HTTPS、プロキシ、TLS、またはNextcloudサーバー自体の設定の問題に絞り込んでください。

スケジュールされたキューを使用して、NextcloudプレビューのCPUスパイクを抑制する

サムネイル作成作業を制御されたバックグラウンドスケジュールに移行し、使用されていないプレビューサイズをトリミングし、Nextcloudサーバーに過負荷をかけることなくキューを検証します。

Nextcloudデスクトップ同期で「ファイルの処理中」を解消しましょう

Nextcloudの同期を妨げているファイル、除外ルール、接続の問題、またはクライアントデータベースの状態を特定し、アップロードとダウンロードが安全に行われることを確認します。

適切な制限値を調整して、Nextcloud OPcache の警告を解消する

Nextcloudの警告を引き起こしているPHP OPcacheの制限値を特定し、適切なWeb PHP設定を更新し、安全に再起動して、結果を確認してください。

NextcloudをCODE Dockerに接続する:セットアップとトレードオフ

NextcloudをCODE Dockerに接続する:セットアップとトレードオフ

組み込みのCODEとDockerベースのCODEを比較し、安全なHTTPSリバースプロキシを介してCollabora OnlineをNextcloudに接続します。

Galeraを使用して、回復力の高いNextcloudクラスターを構築する

共有ストレージ、Redisロック、クォーラム対応MariaDBルーティング、および実用的なフェイルオーバーチェックを備えた、信頼性の高いNextcloud HAデプロイメントを計画します。