web-dev-qa-db-ja.com

完全なCentosサーバーをバックアップする方法

数週間前に専用サーバーからVPSに切り替えました。 VPSですべてが正常に機能しているので、専用サーバーをシャットダウンして、ホスティング会社のアカウントを閉鎖します。

心の平安のため、そしてより安全にするために、サーバーを停止する前にサーバーの完全バックアップを実行したいと思います。

最善の方法は、バックアップに何かが必要な場合に閲覧できるバックアップです。

コマンドラインからの最良の解決策は何でしょうか?

更新:

中:ネットワーク

24
benjisail

これに使用するのに最適なツールはおそらくダンプです。これは標準のLinuxツールであり、ファイルシステム全体を提供します。私はこのようなことをします:

/sbin/dump -0uan -f - / | gzip -2 | ssh -c blowfish [email protected] dd of=/backup/server-full-backup-`date '+%d-%B-%Y'`.dump.gz

これにより、/のファイルシステムダンプが実行され(他のマウントをダンプする必要がないことを確認してください)、gzipで圧縮してリモートサーバー(backupserver.example.com)にsshし、/ backup /に保存します。 。後で復元を使用するバックアップを参照する必要がある場合:

restore -i

Dumpにアクセスできない場合の別のオプションは、tarを使用して次のようなことを行うことです

tar -zcvpf /backup/full-backup-`date '+%d-%B-%Y'`.tar.gz --directory / --exclude=mnt --exclude=proc --exclude=tmp .

ただし、tarはファイルシステムの変更も処理しません。

28
pehrs

LinuxからLinuxにバックアップする場合は、ダンプを使用しません。バックアップファイル内の何かにアクセスする必要がある場合は不便です。 SSHでrsyncを使用して システム全体のバックアップを行う を使用すると、ほとんどの場合問題ありません。

rsync -aAXv --delete-after --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / user@server:backup-folder

これにより、重要なものがすべて保持され追加の手順なしでバックアップを参照できます。

これを同じバックアップフォルダーに対して複数回実行する場合は、rsyncの--deleteオプションを追加することができます。この場合、ソースパスが/*で終わっていないことを確認してください。そうしないと、このオプションはソースディレクトリのサブディレクトリ内のファイルにのみ影響しますが、直接に存在するファイルには影響しません。ソースディレクトリ。

11

私はpehrsから上記のコマンドを使用しますが、ftpで使用するために変更しました。 Crontabのサンプル:

30 3 1 * * Sudo /sbin/dump -0uan -f server-full-backup-root-`date '+%d-%B-%Y'`.dump / && gzip -1 /<path_to_backup_file>/server-full-backup-root-`date '+%d-%B-%Y'`.dump
50 * * * * lftp -f upload.x

upload.xには、FTP認証情報とアップロードのルールが含まれています。

open -u user,password -p 21 192.168.1.1
mirror -c -e -R /<path_to_backup_folder> /<path_to_remote_folder_without_trailing_slash>
exit

注1: lftpは、宛先が再接続しようとして到達できない場合に、CPU使用率が高くなる可能性があります。このような場合、多くのホスティングVPSがリセットされる可能性があるため、CPU負荷を監視してlftpプロセスを強制終了し、ホストの所有者によるサーバーのシャットダウンを防止することをお勧めします。プロセスlftp(およびドロップボックス)の負荷平均> 1.33の例。残念ながら、誰かのおかげで、最初のコードのソースを覚えていません。

クローンタブ*/5 * * * * /home/cms/cron/loadmon.sh

#!/bin/bash
FROM_EMAIL_ADDRESS=cms
  trigger=1.33
  load=`cat /proc/loadavg | awk '{print $1}'`
  response=`echo | awk -v T=$trigger -v L=$load 'BEGIN{if ( L > T){ print "greater"}}'`
if [[ $response = "greater" ]]
then
  killall dropbox lftp
  Nice -n 19 sh /cms/.dropbox-dist/dropboxd
  sar -q | mailx -s "High load on server - [ $load ]" r***[email protected]
fi

注2:ダンプユーティリティは、OpenVZ VPSまたは他の一部の仮想サーバーでは機能しない場合があります。

3
Rapekaz

バックアップはどのメディアに保存しますか?ネットワーク経由でバックアップしている場合、宛先をsshfs/nfsでソースサーバーにマウントし、次のように実行します。

tar cvjf /<remote_mnt>/<point>/source-030810-full.tar.bz2 /* --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/tmp --exclude=/<remote_mnt>

まだテストされていないことに注意してください。それよりも多いか少ないかを除外したいという私の一般的な考えだけです。

3
d34dh0r53

Baculaについて聞いたことがありますか?

Baculaは、オープンソースのエンタープライズ対応のコンピュータープログラムのセットで、ユーザー(またはシステム管理者)が、さまざまな種類のコンピューターのネットワーク全体でコンピューターデータのバックアップ、回復、および検証を管理できるようにします。 Baculaは比較的使いやすく効率的ですが、失われたファイルや破損したファイルを簡単に見つけて回復できる多くの高度なストレージ管理機能を備えています。技術的には、オープンソースのエンタープライズ対応のネットワークベースのバックアッププログラムです。

2
dani.jtk