小ネタ:バックアップのシェルスクリプト
2026/6/19 [08:33:14] (金) 

あちこちに散らばるとモノを探すだけのために時間を使っちゃうことになるんで、こっちにメモ。
linux mintにした2011年のMac mini。HDDもそうだし、いろいろ老朽化しても頑張ってくれてる。
ただ、これからまたくっそ暑い日本の夏でちょっと心配。
てことで、バックアップ用のシェルスクリプトを用意。
USBメモリにrsyncで保存するだけなんだけど、スクリプトでは確認事項を盛り込んだ。
- 外付けのUSBメモリがささってるか確認
- USBメモリがマウントされてるか確認
- バックアップ用のUSBメモリなのか確認
以上を確認して
→USBメモリがささってなかったらメッセージを表示して終了。
→マウントされてなかったらマウントする。
→USBメモリがバックアップ用じゃなければメッセージを表示して終了。
普段使うスクリプトやデータなんかはLANで繋げてるノパソでも使えるように、作業が終わったらrsyncをしてるんでいいとして、今回のバックアップ対象はHOMEの下のPublicディレクトリとドットファイル群。
(Publicという名前だけど、中身はもろもろがっつりプライベートな写真などのデータ)
#!/bin/bash
dev=/dev/sdb1
usb=/mnt/usb
if [ ! -b $dev ]; then
echo 'Not Found' $dev
exit 1;
fi
if ! findmnt $usb > /dev/null 2>&1; then
echo "mount $usb ..."
sudo mount $dev $usb
fi
public=/home/username/Public
backup=$usb/backup
if [ ! -d $backup ]; then
echo "not found $backup"
exit 1;
fi
sudo rsync -rlptuv $public/ $backup
DOTFILE=$HOME/dotfile.zip
zip -r -u $DOTFILE .profile .bash* .vim* .skk* .ssh* .netrc .config/ibus-skk* bin* .local/share/lftp
sudo cp $DOTFILE $backup/
普段なんでもかんでもperlで片づけてるんで、シェルスクリプトはほとんどわかってなくて、検索しまくり。
bash の testコマンドの「-b」オプションでブロックデバイスの有無を判定できるなんて知らなかった。if文でもコマンドの返り値の判定に「!」が使えるのも今回初めての改めてだった。

毎年6月前半は菖蒲祭り。6/14の最終日、今年も賑やかで華やかでありました。
公園、野外で飲むビールは最高ですねー

