ubuntuの複数の計算機において、/homeをNASのストレージからnfsマウントしている。最近ubuntuの18.04lts -> 20.04ltsへのバージョンアップを行ったところ、NICの設定がうまく行かないことが多くあり、起動時に/homeがnfsマウントされなかったことが何度かあった。また、昨日もふとみたら1つの計算機でnfsマウントされていなかった。このとき、普段使っているユーザーアカウントでsshログインすると(ログインシェルはzsh)、ヒストリが記録されている.zsh_historyのファイルが無いため、コマンド履歴がなくなってしまう。その状態で/homeをnfsマウントしてexitすると、.zsh_historyがそのセッションのみの履歴のみに書き換えられてしまうようである。/homeがマウントされていない状況であって何処かで同じ.zsh_historyをHISTFILEにしてしまっているのが問題なのだと思われる。
ネットワークがうまく働かないことはありうるので、なんとかしたい。
まず、個々の計算機のマウント前の/home以下に自分のホームディレクトリを作り、.zshrc等を現在のものをrsyncした。
しかし、これでは/homeがマウントされていないときにもHISTFILEは.zsh_historyであり、nfsマウントが切れた状態でログインするとこの時点の.zsh_historyに戻ってしまう。
そこで、nfsマウントした/homeではHISTFILE=.zshhistとファイル名を変えた。homeがnfsマウントされていない状態で同じ定義がされていないはずなので、上書きされることは無いはずである。
さらにバックアップとして、月1回のcronにより、.zshhistを以下のスクリプトで名前を変えて保存するようにした。
#!/bin/bash
cp /home/kazu/.zshhist /home/kazu/zsh_hists/zshhist_`date +%Y%m%d`
crontab -l:
# m h dom mon dow command
00 23 26 * * /home/kazu/bin/backup_zsh_history.sh