infra:rsync_diff_copy
rsyncを使ってお手軽差分コピー
リモートサーバーにあるログやバックアップファイルを定期的に手元のマシンに転送したい。
しかし、毎回ディレクトリ全体をコピーすると重複しているファイルが現れる。 ファイルサイズも大きく、重複を排除したいが、自前で処理するのは面倒そうだ。
そこでrsyncコマンドを用いると簡単に差分コピーを実現できる。
前提
公開鍵を用いたsshログインができること。
.ssh/configに記述した任意のホスト名でログインできること。 ここではtargetとする。
ssh target
またrsyncは標準では使えない環境もあるため、インストールしておくこと。
この記事ではFedora Linux 42にて以下の操作を行った。
コマンド例
rsync -avz --progress target:~/backups/ ~/backups/
- -a : アーカイブモード(パーミッションなど保持)
- -v : 詳細出力(ログ用)
- -z : 転送時に圧縮
- –progress : 転送状況を表示(ログに記録される)
リモートにある~/backupsフォルダを、コマンドを実行したローカルマシンの~/backupsに差分コピーする。
cronに登録する
cronで定期実行する。 適当な場所にスクリプトを作成し、実行権限を与える。 フルパスで書くのが一般的。ユーザーは自分の環境に合わせて置換してください。
vim /home/ユーザー/scripts/backup_rsync.sh
rsync -avz target:/home/リモートユーザー/backups/ /home/ユーザー/backups/ >> /home/ユーザー/backup_log.txt 2>&1
出力をログとして書き出しているが、これは簡易的な実装。
chmod +x /home/ユーザー/scripts/backup_rsync.sh
crontab -e
0 3 * * * /home/ユーザー/scripts/backup_rsync.sh >> /home/ユーザー/backup_log.txt 2>&1
infra/rsync_diff_copy.txt · 最終更新: 2025/05/12 06:13 by hogemin