人気のある Data Cloud NextCloud のインスタンスを実行している場合、データをバックアップする方法も必要になるでしょう。今日は、NextCloud をバックアップする方法と、ファイルを別のサーバーに移動する方法を紹介します。最も簡単な方法で、データの重複排除や増分バックアップを行わず、最も重要なデータの tar.gz ファイルを作成して移動するだけです。 Cronを使用して、既存のサーバーを上書きしてバックアップサーバーに転送します。既存のバックアップを上書きせずに、各バックアップを個別に作成し、日付も追加するオプションを提供します。
まずシナリオを見てみましょう。
シナリオ
NextCloudServer =私たちの NextCloud サーバー、明らかに..
BackupServer =当社のバックアップ サーバー。
私たちは何を達成したいですか? NextCloudServer でバックアップを作成し、BackupServer に移動します。この例では、両方のサーバーに Ubuntu 16.04 LTS を使用しています。
では、どこから始めますか?まず、BackupServer フォルダーを NextCloud サーバーにマウントする必要があります。
バックアップ サーバーに「backups」というフォルダーがあると仮定しましょう。もちろん、これは BackupServer に作成する必要があります。
したがって、バックアップ フォルダを含む BackupServer へのパスが次のとおりであると仮定しましょう:
//BackupServer.com/backups
ステップ 1 - NextCloud をメンテナンス モードに設定
データの整合性を確保するために、まず NextCloud をメンテナンス モードに設定します。これにより、誰も NextCloud でアクティブに作業していないことが保証され、バックアップが破損するリスクが軽減されます。
cd /var/www/nextcloud sudo -u www-data php occ maintenance:mode – on
ステップ 2 - バックアップ サーバーのマウント
NextCloudServer で新しいディレクトリを作成します。好きな場所に作成できます。この例では、以下を使用します:
mkdir /mnt/cifs/backups/nextcloud
CIFS 共有をマウントできるようにするには、cifs-utils をインストールする必要があるため、最初にインストールします。
apt-get update apt-get install cifs-utils
ドライブの手動マウント
まず、資格情報をバックアップ サーバーに保存するファイルを作成するので、スクリプトで資格情報をクリア テキストとして使用する必要はありません。
nano /etc/backup-credentials.txt
そして、以下の例のように資格情報を入力してください:

CTRL+O を押して保存し、CTRL+X を押して終了します。
次に、権限を調整する必要があります:
chmod 600 /etc/backup-credentials.txt

この後、BackupServer を手動でマウントします。
mount -t cifs -o credentials=/etc/backup-crendetials.txt //BackupServer.com/backups /mnt/cifs/backups/nextcloud
これにより、//BackupServer.com/backups フォルダが /mnt/cifs/backups/nextcloud にマウントされているはずです。
これは、次のコマンドを使用して確認できます:
df -h

NextCloudServer を今すぐ再起動すると、手動で追加しただけなので、マウントはなくなります。 /etc/fstab ファイルを変更してドライブを自動的にマップするか、上記のマウント コマンドを cron ジョブに含めるだけで、これを選択することができます。
再起動中のエラーを回避するために、特にこのオプションを選択します。サーバーの再起動中にドライブが使用できない場合、ドライブは緊急モードに入り、起動しない可能性があります。 fstab ファイル内で nofail オプションまたは noauto オプションを使用することで、これを回避する方法がありますが、ここではそれについて説明せず、代わりに安全で簡単な方法を選択します。 fstab ファイルを変更してドライブを自動的にマウントしたい場合は、Google でその方法を検索してください。ただし、fstab ファイルを編集するとサーバーが起動しなくなる可能性があるため、注意して編集してください。
選択はあなた次第です。
ステップ 3 - バックアップの作成
さて、マウントが整ったので、バックアップが必要なファイルを特定する必要があります。
バックアップする必要があります:
- /var/www/nextcloud にあるメイン ディレクトリ
- データ ディレクトリは、デフォルトでは /var/www/nextcloud/data にありますが、/www/ フォルダ内ではない別の場所に移動することをお勧めしますが、その場所を見つける方法を説明します.
- SQL データベース
メイン ディレクトリのバックアップ
tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_FileDir.tar.gz -C /var/www/nextcloud .
注意してください。最後に、それはコマンドに属します。以上です。
データ ディレクトリのバックアップ
したがって、データ ディレクトリがデフォルトの場所にない場合は、nextcloud 構成ファイルを開くことで見つけることができます:
nano /var/www/nextcloud/config/config.php

CTRL+X を押すと、ファイルを離れることができます。
ご覧のとおり、データ ディレクトリの場所が表示されます。したがって、このパスを使用してバックアップしてください。また、NextCloud が使用するデータベースの種類が書かれていることにも注意してください。これは、次のステップに関連しています。
よし、データディレクトリをバックアップするには、以下を実行:
tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_DataDir.tar.gz -C /var/lib/nextcloud/data .
/var/lib/nextcloud/data パスを独自のパスに調整してください。注意してください。最後に、それはコマンドに属します。これは完了するまでに長い時間がかかる場合があります。
データベースのバックアップ
OK、NextCloud が使用できるデータベースはいくつかあります。この例では、MySQL を使用することを前提としています。インストールで別のデータベースを使用している場合は、Google で適切なコマンドを検索する必要があります。
Cron ジョブでパスワード プロンプトを表示せずに安全な方法でこのデータベース ダンプを実行するには、まず ~/ ディレクトリにある .my.cnf ファイルを作成または変更する必要があります。
nano ~/.my.cnf
サーバーの構成によっては、ファイルが既に存在し、エントリがある可能性がありますが、心配する必要はありません。既存のテキストの下に行を追加するだけです。
[mysqldump] user = yourDBusername password = yourDBpassword

CTRL+O を押して保存し、CTRL+X を押して終了します。
DB ユーザー名またはパスワードがわからない場合 - 前に見た config.php の中に書かれています。
次に、ファイルのパーミッションを調整する必要があります:
chmod 600 ~/.my.cnf
これで、パスワードを入力せずにデータベースのダンプを実行する準備が整いました.
次のように入力して、SQL ダンプを実行できます。
mysqldump – single-transaction -h localhost -u nextcloud > /mnt/cifs/backups/nextcloud/NextcloudBackup_DB.sql
これで、最も重要な 3 つのファイルのバックアップが作成されました。すべて揃っているか確認しましょう。
バックアップ ディレクトリに CD を作成し、df -h を再度実行して、実際にスペースがいっぱいであることを確認します。
cd /mnt/cifs/backups/nextcloud df -h
案の定、それは実現しました:

また、バックアップ ディレクトリ内で ls を実行して、ファイルがそこにあることを確認することもできます。
ls
バックアッププロセスは以上です。これですべてが機能することがわかり、Cron を使用してプロセス全体を自動化できるようになりました。ただし、最初に、メンテナンス モードを再度無効にする必要があります。
ステップ 4 - メンテナンス モードを無効にする
すばやく簡単:
cd /var/www/nextcloud sudo -u www-data php occ maintenance:mode – off
ステップ 5 - Cron ジョブの作成
ここで基本的に、設定した特定の日付に手動で実行したすべてのコマンドを実行する Cron ジョブを作成します。これをやみくもに試みる前に、少なくとも Cron ジョブの基本を学ぶ必要があります。 短くて有益なチュートリアルがあります その上で、ビデオを含めて .
Cron ジョブを毎週日曜日の 20:59 から実行したいと考えています。
crontab ファイルを変更して Cron を作成します。
crontab -e
これで、データ ディレクトリのバックアップに最も時間がかかることがわかったので、これを最後のコマンドとして実行します。
59 20 * * 7 cd /var/www/nextcloud; sudo -u www-data php occ maintenance:mode – on 0 21 * * 7 mount -t cifs -o credentials=/etc/backup-credentials.txt //BackupServer/backup /mnt/cifs/backups/nextcloud 05 21 * * 7 tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_FileDir.tar.gz -C /var/www/nextcloud . 30 21 * * 7 mysqldump – single-transaction -h localhost -u nextcloud > /mnt/cifs/backups/nextcloud/NextcloudBackup_DB.sql 00 22 * * 7 tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_DataDir.tar.gz -C /var/lib/nextcloud/data . 00 02 * * 1 cd /var/www/nextcloud; sudo -u www-data php occ maintenance:mode – off
混乱を避けるために、各行をざっと見てみましょう。
- 毎週日曜日 20:59: メンテナンス モードを有効にする
- 毎週日曜日 21:00: BackupServer がマウント/再マウントされていることを確認してください
- 毎週日曜 21:05: NextCloud ファイル ディレクトリをバックアップ
- 毎週日曜 21:30: SQL データベースのバックアップ
- 毎週日曜日 22:00: ビッグデータ ディレクトリをバックアップ
- 毎週月曜日 02:00: メンテナンス モードを無効にする
これで、前回のデータ ディレクトリ バックアップからメンテナンス モードを終了するまで、スクリプトに十分な時間を与えたことがわかります。

CTRL+O で保存し、CTRL+X で終了します。
スクリプトが実行されていたことを確認したい場合は、月曜日にバックアップ フォルダに移動して実行してください。
ls -la
ファイルの日付が正しいことを確認するため。
以上です。前述したように、これはバックアップを作成するためのシンプルで簡単な方法です。増分バックアップを作成したり、データ重複排除を実装したりする場合は、Rsync や Borgbackup などを検討する必要があります。
約束どおり、上書きせずに個々のファイルを作成するオプションは以下にあります。
ステップ 6 (オプション) - 個々のファイル名を使用する
これを行うのは非常に簡単ですが、バックアップを実行する頻度によっては、ハード ドライブのスペースがすぐにいっぱいになってしまうことに注意してください。バックアップ コマンドに日付オプションを追加して、個々のファイル名を作成するだけです。
したがって、このコマンドを使用する代わりに:
tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_FileDir.tar.gz -C /var/www/nextcloud .
これを使用します:
tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_FileDir_`date +"%Y%m%d"`.tar.gz -C /var/www/nextcloud .
これにより、作成された特定の日付とともにファイル名に日付が追加されます。
他のすべてのバックアップについても、この手順を繰り返すだけです。今後のチュートリアルで、バックアップを復元する方法を教えます。