Open3

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

okuokuokuoku

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

okuokuokuoku

ハッシュリストの生成

 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
okuokuokuoku

ペアの取り出し

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