gitで定期的にファイルをバックアップする

More than 5 years have passed since last update.

最近はもう もうFTPを利用することは止めて、Gitを使おう という流れですが

全員がそこまでスキルレベルが高いわけじゃないので、逆をすることにしました。


  1. ユーザ(今回の場合デザイナ)はFTPなどを使ってファイルをアップロードする

  2. gitを使ってアップロードされたファイルを定期的にバックアップ

  3. 知ってる人(今回は自分を含めたプログラマ)がgitを使ってもとに戻せるように


git push を cron で回してバックアップ

バックアップ用のスクリプトを書いて


sync.sh

#!/bin/bash

set -e
content_dir="<コンテンツを保存している場所>"

set -x
cd "$content_dir"
git add -A
git commit -m "Commit at $(date "+%Y-%m-%d %T")" || true
git push -f origin master:master


crontabで呼ぶ(今回は、毎日夜中の4時に)

0 4 * * * /bin/bash /path/to/sync.sh >> /path/to/sync.log 2>&1


課題

問題はユーザが間違えて .git ファイルを消してしまった場合。

その場合 git cloneして続きからやりたいんだけどいまいち良いやり方がわからない。

普通にやると


  1. 現在のファイルを退避して

  2. git cloneしなおして

  3. 退避したファイルで上書きして

  4. syncスクリプトを呼び出す。

退避しなくて済む方法はないかなあ


コメントより追記:

@ngyuki


.git を削除しただけなら次のように .git を復元できるのではないでしょうか

git init

git remote add origin "$remote"
git fetch origin
git branch master origin/master
git symbolic-ref HEAD refs/heads/master

上記の方法でバッチリ動きました!