web-dev-qa-db-ja.com

SSH経由でリモートのUbuntu VPSをバックアップするにはどうしますか?

だから、私が言ったように、私はVPS、Raspberry Piと計画を持っていますが、私はいくつかのアドバイスを必要としているので、ここに行きます。

私はprgmr.comでVPSを使用しており、これを問題なくスムーズに実行しています。また、新しいRaspberryPiを机の上に置いて、入力時にRaspberrianをダウンロードします。私の計画は、自宅でバックアップサーバーとしてRaspberry Piを使用することなので、私の質問は次のとおりです。

SSH経由でリモートUbuntu VPSをバックアップするにはどうしますか?

VPSはWebサーバーとして設定されていますが、Piにcronジョブを設定して、VPSに自動的にログインして実行し、バックアップをダウンロードできるようにしたいと思います。その結果、データが失われます。当然、このバックアップにはすべてが含まれているため、サーバー全体をすばやく復元できます。

この種のバックアップをどのように実行しますか? SSHに何らかのbashスクリプトを記述し、関連するすべてのファイルをtar.gzなどに圧縮し、SCPから画像をダウンロードする必要があると考えました。

これについてどう思いますか?どのパッケージなどを使用し、どのように構成しますか? VPSにはLAMPスタックがありますので、どのファイルをバックアップするのが目的ですか?また、GITやZendToolsなどのその他の小さなプログラムも多数インストールされています。

4
Daniel Groves

SSH公開キー認証

最初に行うことは、ssh公開キー認証から始めることです。これにより、スクリプトはパスワードなしでSSHを使用できます。

サーバーに必要なのはSSHがインストールされ、RasPiからバックアップスクリプトを実行するユーザー用に公開キー認証がセットアップされていることだけです。

ここに公開鍵認証の良いチュートリアルがあります: https://hkn.eecs.berkeley.edu/~dhsu/ssh_public_key_howto.html

オプション1:SSHおよびTar

サーバーからtar.gzを圧縮し、次のような方法でssh経由で直接送信できます。

ssh [email protected] "tar -czvf - / 2> /var/log/sshbackup" > vpsbackup.tar.gz

これにより、VPSのtarとgzipが/上のすべてのファイルになり、SSHを介して送信され、RasPiのvpsbackup.tar.gzに保存されます。最新のバックアップのログは、VPSの/ var/log/sshbackupに保存されます。

オプション2:Rsync

SSHで.tar.gz全体を送信するのは非効率的です...変更されないファイルは引き続き送信されます。より良い解決策はrsyncを使用することですが、これにより、アクセス許可を保持する.tar.gzを作成することが難しくなります。 RasPiに十分なストレージスペースがある場合は、バックアップファイルをプレーンオールファイルとして保存できます。その後、複数の過去のバックアップを保持する場合は、tar.gzスクリプトを使用できます。

サーバーにはrsyncがインストールされている必要があります。これはSSH経由で実行されるため、公開キー認証を引き続き使用し、暗号化を維持します。このコマンドをrootとして実行し、権限を保持するために公開キー認証とルートのSSHログインを有効にする必要があります。宛先(または少なくとも一時的な宛先)はLinuxファイルシステムでなければなりません。これらのバックアップをFATまたはNTFSパーティション(ほとんどの外付けハードドライブなど)に保存している場合、ループバックファイルシステムを作成できます( http://www.walkernews.net/2007/07/01/を参照)一時ストレージ用のcreate-linux-loopback-file-system-on-disk-file / ) tar.gzファイルは、権限をそのまま保持するため、どのパーティションにも保存できます。

Rsyncコマンドの例:

rsync -a --delete --exclude=/dev --exclude=/sys --exclude=/proc --exclude=/tmp remoteserver.example.com:/ /path/to/backup/destination/

-deleteを使用するときは、特にルートとして注意してください!宛先のファイルを削除しますバックアップソースに存在しないディレクトリ。 そのVPSのみに使用されている専用のバックアップディレクトリに同期する場合にのみ--deleteを使用する必要があります。また、間違った宛先に同期するスクリプト(たとえば、/ path/to/backup/destinationがシェル変数によって決定される場合)

rsyncは、ソースと宛先の間で異なるファイルのみを転送します。大きなファイルがある場合は、変更されたファイルの一部のみを転送します(これを機能させるには、-cフラグを追加する必要があります)。これは、最小限の帯域幅を使用していることを意味しますが、どちらのブロックも転送するブロックを最初にチェックサムファイルする必要があるため、より多くのCPUを使用し、再同期準備時間を遅くします。 -cフラグを使用し、大きなファイル(データベースファイルなど)や不安定な接続がある場合は、-partial --appendを追加することを検討してください。これにより、接続が中断された後に転送を再開できます。

5
undecim