shはブレース展開できないので Ubuntu の cron で注意

先日の記事のブレース展開は、記事タイトルに bash とある通り bashだけで有効で、sh では無効ですが、そのために Ubuntu の cron で失敗しました。

bash でコマンドへ同じような引数を繰り返して指定する場合にブレース展開を使う: パソコン鳥のブログ


bashだと、次のように書くと、

rsync -av --delete --exclude={swapfile,/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/snap/*} / /mnt/backup/


{}内が展開されて、次のように --exclude= が列挙されますが、

rsync -av --delete --exclude=swapfile --exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/run/* --exclude=/mnt/* --exclude=/media/* --exclude=/lost+found --exclude=/snap/* / /mnt/backup/


sh だと展開されないままです。

rsync -av --delete --exclude={swapfile,/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/snap/*} / /mnt/backup/



Ubuntu の cron はデフォルトシェルが sh ですが、cronで上記のように rsync を実行しました。
すると、--exclude の {}内が展開されなかったため除外指定が効かず、/mnt/ も rsync の対象になってマウント先の全ファイルもrsyncでコピーして、rsync先のディスクが DiskFull になってしまいました・・


ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント