僕の使っているコマンドラインツールの #ひかえめなアドベントカレンダー2023 12月5日分はrsyncです。コピー元のディレクトリとコピー先のディレクトリを指定すると更新のある分だけコピーしてくれる便利なコマンドで、僕はおもに家サーバでの日ごとのバックアップに利用しています。リモートへのコピーにも利用できます。
rsyncでのコピー元やコピー先の指定は、最後の / の有無で動作が変わります。注意。
下記は家サーバ(まだcronが動いてる)の/etc/cron.daily/backup-localスクリプトの一部です(このままでは走らないかも)。システム側のディレクトリに含まれるファイルのうち失くしたくないものを/home/backup以下にコピーして、/home全体を/backup以下にコピーしています。
extraopt=
dst=/home/backup
for dir in /etc /usr/local /var/spool/cron; do
dstdir=$dst/$dir
mkdir -p $dstdir
chmod og-rwx $dstdir
rsync -a --delete $extraopt $dir/ $dstdir
done
rsync -a --delete $extraopt /home/ /backup
この後、/backup1に外付けのハードディスクがマウントしてあればそこにコピーして、
if mount | grep -q /backup1 ; then
mkdir -p /backup1/Backup/home
rsync -a --delete $extraopt /home/ /backup1/Backup/home
さらに/bacup2に外付けのハードディスクがマウントしてあれば読み書き可能にリマウントしてBackupとArchive以下をコピーします
if mount | grep -q /backup2 ; then
mount -o remount,rw /backup2 && rsync -a $extraopt /backup1/ /backup2
mount -o remount,ro /backup2
fi
extraopt='-v --dry-run'などとすると試験走行できます。