小ネタ:バックアップのシェルスクリプト

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文でもコマンドの返り値の判定に「!」が使えるのも今回初めての改めてだった。


image

毎年6月前半は菖蒲祭り。6/14の最終日、今年も賑やかで華やかでありました。

公園、野外で飲むビールは最高ですねー

<<2026/7>>
   1234
567891011
12131415161718
19202122232425
262728293031

【最近の10件】

日常読書映画アニメゲーム健康料理グルメカメラ写真ネタ仕事パソコンインターネットperlEPUB3電子書籍ActivityPub還暦生活
検索: