tar しながら転送も同時にやる。
tar zcvf - <dir> | rclone rcat remote:path/to/file
rclone "rcat"
rcat を使えば、パイプで処理するみたいに投げられる。
https://rclone.org/commands/rclone_rcat/
echo "hello world" | rclone rcat remote:path/to/file ffmpeg - | rclone rcat remote:path/to/file
使い所
バックアップをとったりするとファイル数が多くなりがちで、ダウンロードや同期にAPI呼び出しが多くなりタイムロスが多い。 また、google drive のように symbolic link に非対応なクラウド・ストレージに転送すると情報が欠損するためtar にまとめて転送したほうがなにかと使い勝手がいい。
同様に圧縮しながら転送
gzip や xz を使って圧縮しながら転送すれば、処理も楽である。
mysqldump と組み合わせると。
一時ファイルを作らずに直接rclone の先にバックアップ取れるから快適じゃないか。
たとえば、こんな感じでmysqldump | gzip | rclone
をパイプに纏めてやる
sudo \ mysqldump --single-transaction \ -h localhost -u takuya --password=XXXXX takuya-database 2>/dev/null \ | gzip - | \ rclone gdrive:takuya-server/backup/mysqldump.sql.gz > /dev/null
gdriveなら30日間のファイル履歴が残るので、バックアップをローテーションして消さなくても良い。最強じゃないか。
rclone で圧縮しながら dd
ddも rclone で圧縮しながらできます。
sudo dd if=/dev/sdg bs=16M --progress | \ gzip -9 -c | \ rclone --bwlimit=5M rcat gdrive:/backup.img.gz
ディスク容量がカツカツでも dd / ddrescue できるので嬉しい。
2021-11-26
rclone と mysqldump の組み合わせについて追記。