rcloneでexcludeとか便利な機能を使ってみる

先日、cronで多重起動防止をしたrcloneですが、色々と便利なので、excludeとか特定のファイルのみコピーとか、その辺を試してみたまとめ1)excludeフィルターで特定のファイル名の物をコピーしない

rcloneは特性としてフォルダ内の全てのファイルを対象に処理を実行しようとします

でも、場合によってはtmpとかtestとかという文字列が入っているファイルはコピーしたくないとか、という事もあると思います

その場合に使用するのがexcludeフィルターです。使い方は至って簡単です

sudo rclone copy --exclude *test.* S3:sample/ GoogleDrive:sample/

rcloneのcopyの後ろに–exclude 排除したい文字列 を追加するだけで動いてくれます

この例の場合、ファイル名にtestという文字列があるファイル全てを対象外としています

複数指定する時は試して無いけど、多分半角スペース入れて、後ろに更に排除したい文字列を入れればいいんじゃないかな?知らんけど

2)1日以上経過したファイルは対象外にする

これも結構便利な機能です

rclone自身にも、同じファイルサイズや更新日時だった場合は処理を行わないで無視をするというデフォルトの機能がありますが、そもそも1日以上経過していたら対象外とするとしてあげる方が処理的には優しいと思います

こういう場合に使用するのがmax-ageフィルターです。これも使い方は簡単

sudo rclone copy --max-age 1d S3:sample/ GoogleDrive:sample/

この例の場合、1日以上経過しているファイルについては対象外とします

日以外にも、もっと細かく指定が出来るようです

詳しくは、max-ageフィルターの項目をご参照ください

3) リモート先の〇日前を経過したファイルを削除する

バックアップファイルをどれだけ残しておくかの話になりますが、例えば2週間以上経過しているファイルはいらないんじゃね?という場合に便利なコマンドです

sudo rclone delete --min-age 14d GoogleDrive:sample/
sudo rclone rmdirs --min-age 14d GoogleDrive:sample/

ちょっと面倒ですが、コマンドを二回実行する必要があります

まず最初のコマンドでファイルを消します。次に、2つ目のコマンドで空のフォルダーを消します

なので、以下のように一行にしておけばいいです

sudo rclone delete --min-age 14d GoogleDrive:sample/ ; sudo rclone rmdirs --min-age 14d GoogleDrive:sample/

これで2週間以上前のファイルとフォルダを消してくれます

まだまだ便利な機能はある

ここに挙げたのはほんの一例です。フィルターの機能を駆使すれば、ファイルコピーの問題を結構解決してくれるんじゃないかと思います

活用しない手はないので、是非本家サイトを読み込んでみてください

ただし、実行する時はくれぐれも一回–dry-runして目的のファイルに対してのみ実行されているのかを確認してからコマンドを実行してください