ストレージを壊さずにNextcloudデータを外部ドライブに移動する方法
永続的なUUIDマウント、メンテナンスモード、検証済みコピー、および元のパスのシンボリックリンクを使用して、Linux Nextcloudのデータディレクトリを安全に外部ドライブに移動します。
通常の Linux インストールの場合、外部ドライブを永続的にマウントし、Nextcloud がオフラインのときにデータディレクトリ全体をコピーしてから、元のパスを新しい場所にシンボリックリンクします。単純にパスを変更しないでくださいdatadirectory。Nextcloudconfig.phpはローカルストレージを絶対パスで追跡するため、直接パスを変更するとファイルや共有が孤立する可能性があります。
この例では、パッケージまたはアーカイブのインストールを想定しています。Docker、Snap、およびアプライアンスのインストールでは、パスのマッピング方法が異なるため、ホストパスをそのままコピーするのではなく、それぞれのデプロイメントに合わせてマウントを調整してください。
| ポイント | どうすればよいか |
|---|---|
| 検証済み:Nextcloudはローカルストレージを識別するために絶対パスを使用します。不注意な操作によって、ファイルや共有フォルダが孤立してしまう可能性があります。 | シンボリックリンクを使用して設定されたパスを安定させ、すべてのコンテンツを保持します.ncdata。 |
| 設定に依存します。データパス、HTTPユーザー、ファイルシステム、サービス名はそれぞれ異なります。 | 有効な設定を確認し、ディスクが必要なLinuxの所有権とパーミッションを保持していることを確認してください。 |
| ディスクに依存するため、起動時のマウントや電源供給が確実に行われるとは限りません。 | UUIDでマウントし、再起動後にマウントをテストし、データディスクが存在しない場合にNextcloudが起動しないようにします。 |
ファイルアプリの外部ストレージマウント機能は、セカンダリの保存場所を追加するものであり、プライマリデータディレクトリを移動するものではありません。追加のフォルダや共有フォルダとして利用し、サーバー自身のファイルやメタデータをドライブ上に保存する必要がある場合は、データディレクトリを移行してください。
データベース、config/データディレクトリ、カスタムアプリ、テーマをバックアップしてください。データベースのバックアップが復元可能であることを確認してください。ファイルのコピーだけでは完全なロールバックにはなりません。
データパスを またはconfig/config.phpを使用して見つけocc config:system:get datadirectory、HTTP ユーザーを特定します。例ではwww-dataとを使用していますが/var/www/nextcloud/data、実際の値に置き換えてください。必要なファイルが含まれているドライブはフォーマットしないでください。

を実行して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 の実行中はドライブを接続したままにしてください。

メンテナンスモードではログインはブロックされますが、すべてのスケジュール済みジョブが停止されるわけではありません。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のトラブルシューティングマニュアルでは、元のパスを新しいディレクトリにリンクすることを推奨しています。コピーを確認した後、ロールバック用に古いディレクトリの名前を変更し、リンクを作成します。
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はこの方法を非対応としており、データベースが破損する可能性があると警告しています。

ウェブ/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 マウントの依存関係。
永続的なUUIDマウント、メンテナンスモード、検証済みコピー、および元のパスのシンボリックリンクを使用して、Linux Nextcloudのデータディレクトリを安全に外部ドライブに移動します。
SQLエラーの診断、データベース接続の確認、中断された移行の安全な完了を行うことで、アップデート後にNextcloudへのアクセスを復元します。
NextcloudのOCCコマンドを使用して、サーバーシェルから管理者パスワードをリセットする方法を説明します。ユーザー名、権限、外部ログインプロバイダーに関するガイダンスも含まれています。
NextcloudのHSTS警告を解消するには、Apache、NGINX、またはTLSプロキシでヘッダーを設定し、公開HTTPS応答が安全に動作することを確認してください。
App Storeのインストール失敗の原因を、DNS、HTTPS、プロキシ、TLS、またはNextcloudサーバー自体の設定の問題に絞り込んでください。
サムネイル作成作業を制御されたバックグラウンドスケジュールに移行し、使用されていないプレビューサイズをトリミングし、Nextcloudサーバーに過負荷をかけることなくキューを検証します。
Nextcloudの同期を妨げているファイル、除外ルール、接続の問題、またはクライアントデータベースの状態を特定し、アップロードとダウンロードが安全に行われることを確認します。
Nextcloudの警告を引き起こしているPHP OPcacheの制限値を特定し、適切なWeb PHP設定を更新し、安全に再起動して、結果を確認してください。
組み込みのCODEとDockerベースのCODEを比較し、安全なHTTPSリバースプロキシを介してCollabora OnlineをNextcloudに接続します。
共有ストレージ、Redisロック、クォーラム対応MariaDBルーティング、および実用的なフェイルオーバーチェックを備えた、信頼性の高いNextcloud HAデプロイメントを計画します。