Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

1
0

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 3 years have passed since last update.

CMSで出力された静的ファイルをcronで定期的にGitHubへバックアップ

Last updated at Posted at 2020-07-21

はじめに

対象読者

  • html 等のファイルを静的に出力するタイプの CMS を使っている人
    • 静的 CMS とは? たとえば……
    • Netlify などは、リポジトリをベースにサイトデプロイしてくれる CMS といえるわけですが、その逆方向のケアをしてあげるということになります
  • GitHub 等のリポジトリへ差分バックアップを取って管理するようにしたい人
    • 別に BitBucket でも GitLab でも構わないので、適宜読み替えてください
  • 特に CMS とか関係ないけれど、とにかく cron で定期的に GitHub へバックアップする方法を知りたい人

本記事におけるサーバ環境

  • Ubuntu 20.04

前提

  • git コマンドが使える環境
  • root 以外のユーザーで SSH ログイン
  • あらかじめ GitHub 側でリポジトリを作成しておく
    • ここでは仮に cms-static とする

設定

静的ファイルを置いているディレクトリの Git リポジトリ化

  • cd で静的ファイルを置いているディレクトリへ移動
  • Git リポジトリ化する
git init

git config --global

  • もしまだ git config --global を設定していなかったら、する
    • name, email ともに自身のものを設定
git config --global user.name "GitHubUserName"
git config --global user.email GitHubRegisteredAddress@domainhogehoge.com

キーペア作成/登録

  • もしまだキーペアを作成/登録していなかったら、する

キーペア作成

  • 4096 bit で作成する
ssh-keygen -b 4096
  • 以下が表示されたら enter を押すとデフォルトの id_rsa で作成される
    • 特にこだわりがなければそのままで作成した方がよい
    • というのも GitHub はデフォルトだと他のキー名を読んでくれない
    • 他のキー名へ変更する際には必ず config ファイルを作成しましょう
Enter file in which to save the key (/user/username/.ssh/id_rsa): 
  • もし他のキー名へ変更する際の config ファイルの中身
    • 例えば github_rsa へ変更する場合
/home/ptnaweb/.ssh/config
Host github github.com
  HostName github.com
  IdentityFile ~/.ssh/github_rsa
  User git

公開キーの登録

  • GitHub の管理画面から登録してください

リモートリポジトリの登録

  • cms-static という既に GitHub に作ってあるリポジトリを push origin の向かい先として登録する
git remote origin git@github.com:GitHubUserName/cms-static.git
  • 正しく登録されたかどうかは、以下コマンドで確認
git remote -v

リポジトリへの push テスト

  • 一度手動で実行してみるとよいでしょう
    • 初回実行時に fingerprint の登録云々と訊かれるので yes で進める
git add -A
git commit -m "backup_`date '+%Y/%m/%d'`"
git push origin master

cron

  • 以下コマンドで cron の編集ファイルを開く
crontab -e
  • 以下を記述
    • 毎日 03:00 に Git リポジトリ化されている /var/www/cms/static/ の変更を add, commit して push するよ、という内容です
    • 注意点としては date の取得時に % をエスケープしてあげる必要があるということ
0 3 * * * cd /var/www/cms/static/; git add -A; git commit -m "backup_`date '+\%Y/\%m/\%d'`"; git push origin master;

検証

GitHub リポジトリ

  • リポジトリを確認して、正しく反映されていればよしです

おわりに

感想

  • CMS 内に差分管理できる機能を備えたものもありますが、 GitHub で一元的に管理できるようになっていると、一覧性が担保できてわかりよいですね
  • cron の中で日付を記述する時にはエスケープ使わないといけない、というのがちょっとしたクセモノ

関連して

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?