rsyncで任意のファイルだけをバックアップ

サーバを入れ替えたときに、サーバと開発環境を全く同じにしました。
# 今後はChangeLogで作業ログを管理しながら手動で同期しますが。

そのときにrsyncを使って、chalowで生成したファイルをアップロード
できるように設定することにしました。

まず、rsyncをサーバとクライアントの両方にインストール。

% apt-get install rsync


chalowで生成するHTMLファイルはひとつのディレクトリに、
どばっと生成されるので、単にrsyncするとファイル以外に、
画像ディレクトリなども同期することになっちゃいました。

それでも良いのですが、HTMLファイルだけ同期したいことが多いので、
cdとfindを使って任意のディレクトリ内の任意のファイルだけを
同期できるようにしたいと思います。以下がその設定です。

#!/bin/sh
cd $HOME/public_html
# すべてのhtml
find *.html |rsync -avz -e ssh $HOME/public_html --files-from=- overlasting.dyndns.org:$HOME/public_html
# 新しく追加したhtml
#find *.html |rsync -uavz -e ssh $HOME/public_html --files-from=- overlasting.dyndns.org:$HOME/public_html
# 全部
#rsync -avz -e ssh $HOME/public_html --files-from=- overlasting.dyndns.org:$HOME/public_html


cdで、HTMLが生成されるディレクトリに移動して、find *.htmlします。
次に、findで作ったリストをパイプで渡して、
--files-from=-で受け取ります。これでOK。

スクリプトを実行してみたら、きちんと動作してくれました。

こんな感じのスクリプトを書いておけば、
Subversionのdbファイルのバックアップとかも簡単そうです。
近日中に設定しようっと。


投稿者:としのり  日時:23:59:59 | コメント | トラックバック |
blog comments powered by Disqus