* NIX OSでバックアップのクライアントサーバーシステムを作成します。

すべての良い一日。

彼らが言うように、システム管理者は、バックアップを作成する人とまだ作成していない人に分かれています。

実際に再びバックアップについて。

常に大量の手元の新鮮なバックアップが必要な状況がありました

リモートホスト。 さらに、システムはクライアントサーバーである必要があります。

もちろん、屋根の上の機能を提供する非常に多くのフリーソフトウェアがありますが、機能が多すぎるか、最終的に必要なものではありません。 一般に、fsbackupに基づいて独自のバックアップシステムを作成することが決定されました。

したがって、サーバーとクライアントのホストがあります。

すべてのfreebsd 8.2上のOSですが、問題ではなく、どのバージョンでも動作します。



インストールを続行します(クライアントホストのみで、サーバーには触れないでください)。



[root @ server / usr / ports / sysutils / fsbackup]#make install clean



次に、fsbackupがインストールされているフォルダーに移動し、これでfsbackup.confファイルを作成します

内容:

$cfg_backup_name = "host1"; $cfg_cache_dir= "/usr/local/fsbackup/cache"; $prog_md5sum = "md5sum -b"; $prog_tar = "/usr/bin/tar"; $prog_ssh = "/usr/bin/ssh"; $prog_rm = "/bin/rm"; $prog_gzip = "/usr/bin/gzip"; $prog_pgp = ""; $cfg_checksum = "timesize"; $cfg_backup_style = "sync"; #  backup-a ,      $cfg_save_old_backup = 1; $cfg_type = "local"; $cfg_local_path = "/home/back/backup_data"; #     . $cfg_time_limit = 0; $cfg_size_limit = 0; $cfg_maximum_archive_size = 0; $cfg_root_path = "/"; $cfg_verbose = 2; $cfg_stopdir_prune=0; 1; __DATA__ #   /usr/local/etc /etc !/usr/local/etc/share # f!\.core$ f!^core$ f!\.o$ f!\.log$
      
      





詳細は、何が何であるかは、標準構成で確認できます。

次に、create_backup.shファイルを修正する必要があります

先頭に次の行を追加します。

 #!/bin/sh HASH=`find /usr/home/back/backup_data -name *hash -mtime -1`
      
      





そして、ファイル行の最後に:

 #           if [ -n "${HASH}" ]; then ( tar -cf /usr/home/back/backup_tar/arcamart.tar /usr/home/back/backup_data ) else printf "===>>> not new backup\t" > backup_err.log | err_msg fi exit 0
      
      





また、このファイルのconfig_files =“ fsbackup.conf”の行を修正することを忘れないでください。構成の名前を指定してください。

そして、このスクリプトをクローンに追加します(ルートのクローンに必要です)。

したがって、スクリプトはツリーを同期し、変更がある場合はさらにアーカイブを作成します。

次に、ユーザーを追加し直す必要があります。

sudo pw useradd back -m -G back



バックホームディレクトリに移動し、作業に必要なフォルダーを作成します

mkdir backup_tar #同期ツリーアーカイブ用

mkdir .ssh #キーによる認証用(詳細は後ほど)



クライアントでは、ssh認証のキーを作成することを除いて、アクションが完了しました。

サーバー側の設定について:

そのため、各クライアントに順番にリモート接続し、新しいバックアップを確認し、成功した場合は自分自身にコピーするサーバー部分が必要です。

さらに、サーバー側は、ホストの可用性を確認し、ログを書き込むことができる必要があります。

始めましょう:

また、ユーザーを作成します。 (小さな明確化、私のサーバー側では、ホームフォルダはホストとは異なるパスを持っています。たとえば、ホスト/ usr / home / back、サーバー/ usr / local / home / back、注意してください)

[root @ server / usr / local / home / back] mkdir .ssh



次に、認証用のキーを作成します

[ルート@サーバー/usr/local/home/back/.ssh] ssh-keygen



これで、サーバーがパスワードを入力せずにホストにログインできるように、ファイルを公開鍵からファイル$ home / .ssh / authorized_keys(つまり、すべてのクライアントホスト)にコピーするだけです。

また、authorized_keysファイルに権利と所有者を設定することを忘れないでください

sudo chmod 600 authorized_keys

sudo chown back:back authorized_keys



そのため、必要なことを行うスクリプトの作成を開始します。

最初に、ホストのリストを含むif_routersファイルを作成します



例:ee if_routers:

オクテット= "192.168"

test = "$ {octet} .0.1"

test2 = "$ {オクテット} .0.2"

test3 = "$ {オクテット} .0.3"

test4 = "$ {オクテット} .0.4"

test5 = "$ {オクテット} .0.5"



任意の名前でファイルを作成し、sbackup.shを

内容:

 #!/bin/sh s_copy="/usr/local/bin/rsync -azv -e \"ssh -l back -o StrictHostKeyChecking=no\"" DST="/usr/local/home/back/backup_data" #     dir_1="/usr/home/back" #    dir_2="/usr/local/home/back" #   dir_3="/usr/home/back/backup_tar" #     HOME_DIR="/usr/local/home" # #      if [ -f ${dir_2}/if_routers ]; then . ${dir_2}/if_routers else echo "Procedure ${dir_1}/if_routers is not install" > ${dir_2}/backup.log 2>&1 exit 1 fi TIMESTAMP=`date +"%Y-%m-%d %R"` #      ping get_alive () { check_host="/usr/local/sbin/fping -a" eval ${check_host} $1 > /dev/null 2>&1 } err_msg () { printf "DATE: $TIMESTAMP.\n" >> ${dir_2}/backup_err.log } #    , , ,   ,    ,    . get_alive $TEST if [ $? -eq 0 ]; then BACKTEST=`ssh -i /usr/local/home/back/.ssh/id_dsa back@192.168.0.1 "find /usr/home/back/backup_tar -name *.tar -mtime -1 | sed -E 's/.*\///g'"` if [ -n "${BACKTEST}" ]; then (printf "===>>> Start remote backup: ${TIMESTAMP}\n" printf " \n" printf "===================================\n" printf "$ts ===>>>${dir_1}\n" printf "\n" eval ${s_copy} back@${TEST}:${dir_3}/${BACKTEST} ${DST} ) > ${dir_2}/backup.log 2>&1 else printf "===>>> Host: $test is not new backup\t" > ${dir_2}/backup_err.log fi else printf "===>>> Host: $test is down\t" > ${dir_2}/backup_err.log | err_msg exit 1 fi #      ,   get_alive $ exit 0
      
      





フォルダー/ usr / local / home / back / backup_dataを保存して作成します

これで、スクリプトを実行して正常性を確認できます。 chmod + xを置くことを忘れないでください

また、スクリプトが通常リモートホストに接続するには、ユーザーバックとして実行する必要があることも明確にします。

sudo su-back ./sbackup.sh

クラウンに追加します

sudo crontab -u back -e

できた

サーバー上に結果があり、常に新しいバックアップが作成され、不必要なコピーは行われません。つまり、ファイルを変更するときのみです。

復元するには、目的のアーカイブを復元するホストに解凍するだけです。



ご清聴ありがとうございました。何も忘れていないことを願っています。



All Articles