最近はもう もうFTPを利用することは止めて、Gitを使おう という流れですが
全員がそこまでスキルレベルが高いわけじゃないので、逆をすることにしました。
- ユーザ(今回の場合デザイナ)はFTPなどを使ってファイルをアップロードする
- gitを使ってアップロードされたファイルを定期的にバックアップ
- 知ってる人(今回は自分を含めたプログラマ)が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
して続きからやりたいんだけどいまいち良いやり方がわからない。
普通にやると
- 現在のファイルを退避して
- git cloneしなおして
- 退避したファイルで上書きして
- syncスクリプトを呼び出す。
退避しなくて済む方法はないかなあ
コメントより追記:
.git を削除しただけなら次のように .git を復元できるのではないでしょうか
git init
git remote add origin "$remote"
git fetch origin
git branch master origin/master
git symbolic-ref HEAD refs/heads/master
上記の方法でバッチリ動きました!