僕の使っているコマンドラインツールの 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'などとすると試験走行できます。

僕の使っているコマンドラインツールの 12月6日分はscreenです。端末が止まっても止まらない端末のやつ。ナウなヤングはscreenではなくByobuやtmuxを利用するらしいです。

何日かコマンドを走らせ続けておきたい時や、端末での作業内容を同僚(いたんだ)やリモートの自分などと共有したい時に使います。

$ screen

デフォルトではC-aがscreenを操作するためのホットキーとなりますが、僕は行頭に移動するC-aを多用するので、~/.screenrcでC-]に設定しています。続く2行では最初の画面とビジュアルベルを無効にしています。

escape ^]^]
startup_message off
vbell off

screenをデタッチする時は、C-]のあとdをタイプします。screen -list でデタッチされたまま稼動を続けているscreenのリストが表示されるので、

$ screen -x 12345.pts-0.localhost

などとしてアタッチしなおすことができます。デタッチされたscreenがひとつだけの場合はアタッチするscreenを指定する必要はありません。

screen内でシェルを終了させるとscreenも終了します。

0

If you have a fediverse account, you can quote this note from your own instance. Search https://mastodon.zunda.ninja/users/zundan/statuses/111535996341819250 on your instance and quote it. (Note that quoting is not supported in Mastodon.)