[Mac] フォルダ構造ごとそのままコピーし、元のフォルダの古いファイルを削除2

以前 Mac で自動でフォルダ構造ごとそのままコピーし、さらにソースフォルダの古いファイルを削除する方法を書いた。

[Mac] フォルダ構造ごとそのままコピーし、元のフォルダの古いファイルを削除 – with a Christian Wife
https://wacw.cf/2018/11/21/organise-files-automatically/

しかし Hazel を使ったフォルダのコピーの挙動がどうも怪しいので、シェルスクリプトを実行したコピーに変えることにした。

具体的には以下のようにする。

rsync -au /[ソースディレクトリ]/ /[コピー先ディレクトリ]

これでサブディレクトリ以下もコピーできるし、ソースディレクトリでファイルを削除してもコピー先ではそのファイルは残ったままになる。(もしソースディレクトリの削除をコピー先にも反映させたければ –delete のオプションを付ければいい。)

またポイントはソースディレクトリの末尾に / を付けること。もし / を付けなければ、コピー先ディレクトリで [ソースディレクトリ] からコピーされてしまう。

ファイルの自動削除は冒頭リンクの方法と変わらない。指定ディレクトリ以下の3日より前に更新されたファイルを削除するなら以下のようになる。

find /[ディレクトリ] -mtime +3 | xargs rm -f

この方法ではサブディレクトリは削除されない。

私はこれらを Keyboard Maestro に登録し、毎日指定時刻に実行するようにしている。

参考:
rsyncコマンドで外付けHDD同士を同期し、バックアップする – RT:ドヤリング
http://doyaling.hatenablog.com/entry/2015/02/16/032750

rsync でディレクトリの同期(バックアップ) – maruko2 Note.
http://www.maruko2.com/mw/rsync_でディレクトリの同期(バックアップ)

macosx 設定メモ rsync 編 – Qiita
https://qiita.com/BlueEventHorizon/items/209af1c9beaff669cd68

findの便利な近い方 | Tea Leaves
https://tea-leaves.jp/home/ja/article/1361456848

ある一定以前のフォルダを削除するシェル
http://blog.zamuu.net/2013/0703/limit_day_delete_shell/

ファイル・ディレクトリを削除するrmコマンドについて詳しく!【Linuxコマンド集】
https://eng-entrance.com/linux_command_rm

指定日付以前の古いファイルを削除したり移動する方法
http://www.searchman.info/tips/2950.html