Open3
Git-LFSの中身が揃っているのか確認したい問題

NASの移行をすることにしたので、Git-LFSサーバーも単純にコピーして引っ越した。 ...ただ、これの中身が正確かどうかをどうにかして確認したい。

ハッシュリストの生成
find . -type f | xargs sha256sum > /volume1/stage/sums.txt
Git-LFSのblobのファイル名は、そのファイルのsha256そのものなので、単純に sha256sum
につっこめる。
head /volume1/stage/sums.txt
c6edc84ca121a10e7927f9a4da50504e7d441396d8f87ba5a705e4a60c786aeb ./c6/ed/c84ca121a10e7927f9a4da50504e7d441396d8f87ba5a705e4a60c786aeb
c6de9e0558ff26131486815c026a7555ba27eb6472c3fa2cc00c34ba560d99a3 ./c6/de/9e0558ff26131486815c026a7555ba27eb6472c3fa2cc00c34ba560d99a3
c6f93f91ad1facb8a6fdeed01ee7f53442090757d48406c05dc96c0ca95d07d5 ./c6/f9/3f91ad1facb8a6fdeed01ee7f53442090757d48406c05dc96c0ca95d07d5

ペアの取り出し
cut
コマンドでフィールドを取り出す。
$ cut -f 3 -d ' ' /volume1/stage/sums.txt | head
./c6/ed/c84ca121a10e7927f9a4da50504e7d441396d8f87ba5a705e4a60c786aeb
./c6/de/9e0558ff26131486815c026a7555ba27eb6472c3fa2cc00c34ba560d99a3
./c6/f9/3f91ad1facb8a6fdeed01ee7f53442090757d48406c05dc96c0ca95d07d5
./c6/f7/196dc41673482eed9e3b8728dd01707f001b8b25c63601d9e61d671c6013
いやフィルタした方が良いな。。 tr
が使える。
$ cut -f 3 -d ' ' /volume1/stage/sums.txt | tr -cd "[:alnum:]\n" | head
c6edc84ca121a10e7927f9a4da50504e7d441396d8f87ba5a705e4a60c786aeb
c6de9e0558ff26131486815c026a7555ba27eb6472c3fa2cc00c34ba560d99a3
c6f93f91ad1facb8a6fdeed01ee7f53442090757d48406c05dc96c0ca95d07d5
c6f7196dc41673482eed9e3b8728dd01707f001b8b25c63601d9e61d671c6013
こうして取り出したペアのハッシュが一致することを確認する。
$ sha256sum left.txt right.txt
9794d7c30a668f2000f9ef211e17c21c62b6915eb75d4c1f6d00e6a16946fa6f left.txt
9794d7c30a668f2000f9ef211e17c21c62b6915eb75d4c1f6d00e6a16946fa6f right.txt