質問: お世話になります。 GitHubでGitLFSを導入しているリポジトリを管理しています。 GitHubなどではGitLFSに対応していますがこのLFSで管理しているファイルも含めたバックアップがしたいです。
回答: 自己解答です。 GitHubの説明がありました。 バックアップを取ってリストアをするというだけであれば**GitLFSサーバーを導入する必要もなさそう**です。 * `git clone --mirror`で保存した`.gitディレクトリ`の中で`git lfs fetch --all`をするとファイルがダウンロード出来ます。 * `git push --mirror`をしたリストア先に`git lfs push --all`するとファイルをアップロードできます。 これでバックアップとリストアが出来ます。 pre-pushでバックアップを取るといいかと思うのでとりあえず動いているスクリプトを書いておきます。 おかしなところがあったらご教示お願いします。修正します。 ``` #!/bin/bash backup_remote() { local backup_path="$1" local remote_repo="$2" if [ ! -e $backup_path ]; then echo 'バックアップがないのでダウンロードします' git clone --mirror $remote_repo $backup_path fi cd $backup_path echo 'バックアップの更新をします' git --git-dir=. fetch --all git --git-dir=. lfs fetch --all cd - } command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting .git/hooks/pre-push.\n"; exit 2; } # LFSの確認とトラックしたファイルをpushする処理の間に入れています backup_remote '.gitの中身が置かれるパス' 'リモートのアドレス' git lfs pre-push "$@" ```