Centos6でRsyncを使用してサイトのオフサイトバックアップを作成する方法
ステータス:非推奨
この記事では、サポートされなくなったバージョンのCentOSについて説明します。 現在CentOS6を実行しているサーバーを運用している場合は、サポートされているバージョンのCentOSにアップグレードまたは移行することを強くお勧めします。
理由:
代わりに参照してください:
このガイドは参照として役立つ場合がありますが、他のCentOSリリースでは機能しない場合があります。 可能な場合は、使用しているCentOSのバージョン用に作成されたガイドを使用することを強くお勧めします。
次のDigitalOceanチュートリアルは、rsyncを使用してローカルディレクトリをリモートディレクトリと同期する方法の一般的な概要を提供するため、すぐに役立つ場合があります。
序章
この記事では、一般的なWebホスティングシナリオで最も一般的なもの(Webサイトファイルとデータベースデータ)をバックアップする簡単な方法を提供します。 Webサイトフォルダーの完全な毎日のバックアップと、このデータのリモートサーバーへのコピーをセットアップします(これは別のVPSでも機能します)。 また、増分変更をコピーするだけのrsyncの例を設定します。 最後に、MySQLデータベースのバックアップを設定します。 説明されている手順では、いくつかの簡単なBashコマンド、rsyncおよびcronを使用してバックアップをスケジュールします。 たとえば、データの場合、このチュートリアルに従ってWordpressをインストールできます。 WordPressを/var / www /wordpressディレクトリとMySQLデータベースwordpressに配置し、すべてのデータのバックアップを取ります。
DigitalOceanは提供します
バックアップを実行するには、増分バックアップと完全バックアップの2つの方法があります。 フルバックアップはすべてのデータをコピーしますが、スナップショットは最後の更新以降の変更のみを処理します。
フルバックアップ
通常、完全バックアップは次のことを行います。
- フォルダ内のすべてのファイルのアーカイブを作成します
- 結果のアーカイブをリモートサーバーにコピーします。
前述のように、データは/ var / www/wordpressディレクトリにあります。 バックアップフォルダの場所を指定します。
mkdir -p /backup/wordpress
上記のコマンドは、/ backupディレクトリと、存在しない場合は/ backup/wordpressディレクトリを作成します。 データの完全なスナップショットを作成するには、tarと呼ばれるLinuxツールを使用します。
tar -czf /backup/wordpress/initial_backup.tar.gz /var/www/wordpress
Tarはc ag zipアーカイブをf ile initial_backup.tar.gzに再作成します。 詳細な出力(ファイル名のリスト)が必要な場合は、 v フラグを追加できます(したがって、 tar -czvf を取得します)。 ファイルにinitial_backup.tar.gzという名前を付けて、これが初期バックアップであり、tarでアーカイブされ、izがgzip形式で圧縮されていることがわかるようにします。 Tarは、ソースとして提供する引数を使用します。この場合、 / var / www /wordpressディレクトリをバックアップします。 ファイルであろうとフォルダであろうと、2つ以上の引数を渡すことができます。
tar -czf /backup/cms_systems_backup.tar.gz /var/www/wordpress /var/www/drupal /var/www/joomla
最後のコマンドは、インストールされているすべてのcmsシステムをバックアップします。
さて、将来のバックアップのために、バックアップが取られた日付を追加したい場合があります。
tar -czf /backup/wordpress/wordpress-`date '+%m%d%y'`.tar.gz /var/www/wordpress
私たちが今持っているものを見てみましょう:
[root@Backup ~]# ls -l /backup/wordpress/ total 9760 -rw-r--r-- 1 root root 4995743 Apr 17 12:16 initial_backup.tar.gz -rw-r--r-- 1 root root 4995743 Apr 17 12:25 wordpress-041713.tar.gz [root@Backup ~]#
2つのファイルがあります。1つはinitial_backupと呼ばれ、もう1つはwordpress-041713と呼ばれます(2013年4月17日、この記事の執筆時点)。 さて、これを毎日スケジュールするには、crontabエントリを作成する必要があります。 CrontabはLinuxのタスクスケジューラです。いつ何かを実行するか、実際にどのタスクを実行するかを指示します。 とにかく、crontabエディタを開きます。
EDITOR=nano crontab -e
テキストエディタでcrontabファイルを開きます。 デフォルトでは、DO CentOSイメージにはエディターとしてvimが含まれていますが、これには少しセットアップが必要です。そのため、この目的のために、nanoエディターと呼ばれるより単純なエディターを使用しました。 デフォルトのエディタを次のように使用することもできます。
crontab -e
今度は、トラフィックが少ないといいのですが、毎日午前3時30分にバックアップするようにcronに指示する必要があります。 また、調査結果をメールで送信するように通知します。 このコンテンツをcrontabに入れます:
[email protected] 30 3 * * * /bin/tar -czf /backup/wordpress/wordpress-`date +\%m\%d\%y`.tar.gz /var/www/wordpress
CTRL-Xでファイルを保存し、YとEnterで確定します。 上記のコマンドは、Linuxに毎日3時30分にコマンドを繰り返すように指示します。 また、結果をメールで送信するようcronに指示しました。 次のメッセージが表示されます: / bin / tar:メンバー名から先頭の `/’を削除し、すべてが通過したことを示します。 エラーが発生した場合は、メッセージに詳細が含まれるため、これを修正できます。 したがって、毎日のバックアップが準備され、機能しています。
バックアップを別のリモートサーバーにコピーする
バックアップを別のリモートサーバーにコピーするには、scp–securecopyを使用します。 まず、SSHキーを生成する必要があります。
ssh-keygen
今のところパスフレーズを空のままにして、 /root/.ssh/id_rsa_backup キーファイル(またはrootとして実行していない場合は/home/username/.ssh/id_rsa_backup)を使用できます。 これで、公開鍵の部分を確認できます。
cat .ssh/id_rsa_backup.pub
SSHキーのこの公開部分をリモートサーバーのauthorized_keysファイルにコピーする必要があります。 backup.example.comというリモートサーバーとユーザーbackupがすでにあると思います。 これは、新しく作成された空のDigitalOcean VPS(ドロップレット)である可能性がありますが、ユーザーは事前に作成する必要があります。 この部分は1回だけ行います。
scp .ssh/id_rsa_backup.pub [email protected]:/home/backup/backup_key.pub
バックアップユーザーのパスワードの入力を求められます。 ファイルをコピーしました。次に、authorized_keysのあるべき場所にファイルを追加しましょう。 このユーザーがすでにファイルとフォルダーを設定しているとは思えないので、その情報を確認しましょう。
ssh [email protected] "mkdir -p /home/backup/.ssh" ssh [email protected] "chmod 700 /home/backup/.ssh" ssh [email protected] "touch /home/backup/.ssh/authorized_keys" ssh [email protected] "chmod 600 /home/backup/.ssh/authorized_keys" ssh [email protected] "mkdir -p /home/backup/backups"
上記のいくつかのコマンドは、SSHが存在しない場合はそれを使用するためのディレクトリと、バックアップが機能するために存在する必要があるauthorized_keysファイルも作成しました。 また、ファイルを保存するbackupsディレクトリも作成しました。 残っているのは、公開鍵をそのファイルにコピーすることです。
ssh [email protected] "cat /home/backup/backup_key.pub >> /home/backup/.ssh/authorized_keys"
これで、このキーを使用して将来的にコピーすることができます。
それでは、バックアップファイルをそこにコピーしましょう。
scp -i .ssh/id_rsa_backup /backup/wordpress/wordpress-041713.tar.gz [email protected]:/home/backup/backups
キーの設定が正しければ、ファイルがコピーされ、パスワードの入力を求められることはありません。 ファイルが実際にそこにあることを確認できます。
ssh [email protected] "ls -l /home/backup/backups"
これで、このアクションをcrontabにもスケジュールできます。 crontabエディターを再起動します。
EDITOR=nano crontab -e
次に、バックアップ行を変更します。バックアップアーカイブの作成時に、バックアップアーカイブをコピーするための情報を追加します。 したがって、次のように新しいコマンドを追加します。
30 3 * * * /bin/tar -czf /backup/wordpress/wordpress-`date +\%m\%d\%y`.tar.gz /var/www/wordpress;/usr/bin/scp -i /root/.ssh/id_rsa_backup /backup/wordpress/wordpress-`date +\%m\%d\%y`.tar.gz [email protected]:/home/backup/backups
注:これは通常の方法ではありません。すべてのタスクを実行するスクリプトをセットアップしてから、スクリプトをスケジュールすることをお勧めします。 ただし、この記事を簡潔にするために、そのフォームを使用します。
増分バックアップ
しかし、別のサーバーに独自のバックアップソフトウェアがある場合はどうなるでしょうか。 データを同期してから、他のサーバーにバックアップ作業を任せたいだけです。 さらに、ファイルスタンプを保持したいと思います。 次に、rsyncを使用します。 ここでの使用例は、 / var / www / wordpress からリモートサーバー、今回は / home / backup / snapshots /wordpressにすべてを段階的にコピーすることです。ディレクトリ。 これをすべて行うための簡単なコマンドは次のとおりです。
ssh [email protected] "mkdir -p /home/backup/sync" rsync -avz --delete -e "ssh -i /root/.ssh/id_rsa_backup" /var/www/wordpress [email protected]:/home/backup/sync
最初の行はスナップショットディレクトリを作成し、2番目の行は変更されたファイルをコピーします。 これは、変更、新規作成、または削除されたファイルを意味します。 cronでスケジュールすることもできます。
EDITOR=nano crontab -e
crontab行は次のようになります。
30 3 * * * /usr/bin/rsync -avz --delete -e "ssh -i /root/.ssh/id_rsa_backup" /var/www/wordpress [email protected]:/home/backup/sync
これで、リモートサーバーには常にデータの新しい同期コピーがあり、そこでバックアップを実行できます。
バックアップデータベース
データベースをバックアップすることもできます。 まず、データをダンプします。 ワードプレスのインストールガイドに従った場合、ユーザーワードプレスユーザーがパスワードパスワードでアクセスできるデータベースワードプレスもあります。 次のように初期ダンプを実行できます。
mkdir /backup/mysql mysqldump < wordpress -u wordpressuser -ppassword | gzip > /backup/mysql/initial.sql.gz
このコマンドは、initial.sql.gzのgzip圧縮されたSQLファイルを作成しました。 毎日それを行うために、以前のようにcronでスケジュールすることができます。 結果のcron行は次のようになります。
0 4 * * * /usr/bin/mysqldump < wordpress -u wordpressuser -ppassword | /bin/gzip > /backup/mysql/mysql--`date +\%m\%d\%y`.sql.gz
これで、scpまたはrsyncと組み合わせて、リモートでコピーすることもできます。
0 4 * * * /usr/bin/mysqldump < wordpress -u wordpressuser -ppassword | /bin/gzip > /backup/mysql/mysql-`date +\%m\%d\%y`.sql.gz; /usr/bin/scp -i /root/.ssh/id_rsa_backup /backup/mysql/mysql-`date +\%m\%d\%y`.sql.gz [email protected]:/home/backup/
この設定により、緊急時に備えて設定されたデータの基本的なバックアップが作成されます。