Dec 18, 2005

rsyncによるバックアップのメモ

今度、回線が増強されるようで、そのためにサーバのデータバックアップを復習しておくことにする。メモしておかないと忘れてしまうので。
バックアップはrsyncが究極の手段だと思う。
2台のLinuxマシンが前提である。片方がサーバ、片方がデスクトップを兼ねたクライアントで通常使っているとする。このクライアントが次のサーバになるわけである。
動的ファイル、BBSのログなどが、ユーザ自身がオーナーならば、「.netrc」ファイルを作りその中にマクロを書いてサーバからクライアントに転送するように、クライアント側からコマンドを実行すればいいので、それがいちばん簡単だと思う。
しかし、セキュリティのためもあるし、動的ファイルもapacheやwww-dataがオーナーであるようにblogなどはなっている。それにrsyncは変更部分だけをダウンロードしたり、サーバベース認証ならばパスワードがいらないので、シェルスクリプトを書いてcronに登録しやすい。ただし以下のメモは「public_html」をそのままバックアップするので、オーナーがapacheやwww-dataのファイルがある場合には、整合性をとる必要がある。

rsyncによるバックアップ

A 前作業
サーバ側 /etc/ssh/sshd_configをサーバベース認証に変更し再起動(マシンを再起動するわけでなく、sshdを再起動。Linuxを再起動する必要があることはサーバではほとんどない)
クライアント側 /etc/ssh/ssh_configをサーバベース認証に変更

B 1
暗号化パスワード認証には、最新のSSH2を使う。rsaには2種類の認証があるが、現在一般的にはrsa2を使う。「ssh-keygen」コマンドのrsaといえばrsa2のことである。rsa1の場合は「rsa1」のコマンドを使う。
◯クライアント側で、公開鍵と秘密鍵を作成する。
$ssh-keygen -t rsa
すると、
~/.ssh
というディレクトリができ、そのなかに、
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
というファイルができる。

B 2
サーバ側に公開鍵を転送する。
まず、サーバに
~/.ssh
というディレクトリを作り、アクセスモードを700にする。
id_rsa.pubをこのディレクトリに転送して、名前を、
authorized_keys
に変更して、アクセスモードを600にする。

B 3
サーバのホームディレクトリに、
「.shosts」
というファイルをつくる。アクセスモードは644。
内容は次の1行。
192.168.0.8 shimirin
これはクライアント側のLAN内IPアドレスとユーザである。
クライアント側にも、「.shosts」として、
192.168.0.5 shimirin
という1行を書いたファイルをつくる。これはサーバのIPアドレスとユーザである。

B 4
サーバ側からクライアントにsshでアクセスする。
$ssh 192.168.0.8
すると、サーバ側の「.ssh」ディレクトリに「known_hosts」というファイルが、
192.168.0.8 (以下暗号省略)
という内容でできるので、これの頭に、
i.love.belle.cxm
などの「/etc/hosts」で「192.168.0.8 i.love.belle.cxm」というふうに書いてある名前を、
i.love.belle.cxm,192.168.0.8 (以下暗号省略)
のようにカンマを最後にいれて書き換えてセーブする。

C
これでクライアントから、サーバにパスワードなしにアクセスできるはずなので、
クライアント側から、
$ssh 192.168.0.5
としてアクセスしてみる。パスワードを要求されなければ成功。

以下の行を入れたファイルを「backup.sh」としてセーブ。アクセスモードは700。
rsync -av shimirin@192.168.0.5:/home/shimirin/public_html/ /home/shimirin/public_html
前はスラッシュあり、後はなしでないとまずい。

D
cronジョブにユーザ権限でこのファイルの実行を登録(たとえば毎日午前4時に実行など)。

Dec 05, 2005

MySQLのデータ型

DBIでやることといえば、

データベースのテーブルにデータを追加
HTMLの各ページにたとえば5つ分のデータを整理して表示
ひとつのフィールドから語句検索

というようなことだ。

MySQLのデータ型は単純である。文章のデータが主なのであまり整数計算することはない。

int(整数) idや表示順。auto_incrementする。
text ほとんどのフィールドはtext型
datetime 書き込み日時取得

NOT NULLの属性を持たせる。
あとは書き込み者の端末のIPその他の環境変数を格納するフィールド。

とても単純な道のりのように見える(^^;;)。

November 2017
Sun Mon Tue Wed Thu Fri Sat
     
   

Search

Categories
Archives
Syndicate this site (XML)

Powered by
blosxom 2.0
and
modified by
blosxom starter kit

新規投稿