44
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-05-22

最近はもう もう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


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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?