bash – 本番サーバーに差分ファイルを上書きする前に該当ファイルだけ抽出してバックアップを取る

デプロイが仕組み化されていないレガシーなサーバーを運用していて cgiを複数箇所変更するとき、ドキュメントルートをまるごとバックアップできれば 安全ですが、ファイル数が多すぎてなかなか難しいこともあると思います。

開発環境で予め上書きするファイルが抽出されている場合は、 下記の方法で上書きされるファイルだけ抽出してバックアップを取る事ができます。

万が一の際はbackupフォルダ以下のフォルダを上書きコピーするだけで差し戻せます。

# /path/from/my_app に差分ファイルがあって、/var/www/cgi-bin/my_appに本番のファイルが置いてある前提
cd /path/from
for LINE in `find my_app -type f -print`; do \
mkdir -p backup/`dirname ${LINE}`; \
cp -fpv /var/www/cgi-bin/${LINE} backup/`dirname ${LINE}`; \
done