rsync
でローカルのファイルを定期的にリモートに同期している。最近に気になっていたことだが、サイズは同じだが、更新日時が変わっている場合、同期されるはずが、同期されていない。
Pop!_OSのrsync version 3.2.7 protocol version 31
を使った時の話。
rsync -avq --dry-run --delete --rsh="ssh -F $HOME/.ssh/config" --exclude='*.bak' --log-file="dry_run_tmp.log" "/mnt/Local/Music/" server:"/mnt/hdd1/Remote/Music/"
rsync -avq --append-verify --delete --rsh="ssh -F $HOME/.ssh/config" --exclude='*.bak'--log-file="rsync.log" "/mnt/Local/Music/" server:"/mnt/hdd1/Remote/Music/"
以下のように先ずはdry-runして、結果を確認して、実際に同期を行うようにしている。
[arimasou16@local:~]$ ls -l '/mnt/Local/Music/RX/CHEMICAL ELEMENTS (vocal selection)/'
合計 411868
-rw-rw-r-- 1 arimasou16 arimasou16 42554305 10月 3 08:18 '01_Riding Higher feat. Brenda Vaughn.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 31505051 10月 3 08:18 '02_Close To Me feat. Robbie Danzie.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 39223944 10月 3 08:18 '03_Arcadia feat. John Wetton.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 31051988 10月 3 08:18 '04_Sarah feat. Brenda Vaughn.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 24813704 10月 3 08:18 '05_Bad Again feat. Joe Rinoie.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 39723593 10月 3 08:18 '06_Never Say Never feat. Brenda Vaughn.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 34051892 10月 3 08:18 '07_I am Innocent feat. John Wetton.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 39811032 10月 3 08:18 '08_Crazy Heart feat. Robbie Danzie.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 37448237 10月 3 08:18 '09_Endless Spiral.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 56791059 10月 3 08:18 '10_LOVE FLIGHT (Live Version).flac'
-rw-rw-r-- 1 arimasou16 arimasou16 44723989 10月 3 08:18 '11_CHEMICAL REACTION (Live Version).flac'
-rw-rw-r-- 1 arimasou16 arimasou16 22840 10月 2 17:36 folder.jpg
arimasou16@server:/mnt/hdd1/Remote/Music/RX/CHEMICAL ELEMENTS (vocal selection)$ ls -l
合計 411868
-rw-rw-r-- 1 arimasou16 arimasou16 42554305 10月 2 18:00 '01_Riding Higher feat. Brenda Vaughn.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 31505051 10月 2 18:00 '02_Close To Me feat. Robbie Danzie.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 39223944 10月 2 18:00 '03_Arcadia feat. John Wetton.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 31051988 10月 2 18:00 '04_Sarah feat. Brenda Vaughn.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 24813704 10月 2 18:00 '05_Bad Again feat. Joe Rinoie.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 39723593 10月 2 18:00 '06_Never Say Never feat. Brenda Vaughn.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 34051892 10月 2 18:00 '07_I am Innocent feat. John Wetton.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 39811032 10月 2 18:00 '08_Crazy Heart feat. Robbie Danzie.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 37448237 10月 2 17:46 '09_Endless Spiral.flac'
-rw-rw-r-- 1 arimasou16 arimasou16 56791059 10月 2 17:46 '10_LOVE FLIGHT (Live Version).flac'
-rw-rw-r-- 1 arimasou16 arimasou16 44723989 10月 2 17:46 '11_CHEMICAL REACTION (Live Version).flac'
-rw-rw-r-- 1 arimasou16 arimasou16 22840 10月 2 17:36 folder.jpg
サイズは一緒だが、更新日時は異なる。しかも、実は中身は異なる。
[arimasou16@local]$ beet edit Riding\ Higher\ feat.\ Brenda\ VaughnRX CHEMICAL ELEMENTS (vocal selection) Riding Higher feat. Brenda Vaughn
artist: RX -> RX; Brenda Vaughn
genre: Progressive Rock -> Progressive Rock; Fusion
continue [E]diting, Apply, Cancel? A
[arimasou16@local]$ beet write Riding\ Higher\ feat.\ Brenda\ Vaughn RX CHEMICAL ELEMENTS (vocal selection) Riding Higher feat. Brenda Vaughn
artist: RX -> RX; Brenda Vaughn
genre: Progressive Rock -> Progressive Rock; Fusion
[arimasou16@local]$
にもかかわらずdry-runで出力したログファイルでも、実際に同期させたログファイルでもは、同期ディレクトリ・ファイルはないと出た。
2025/10/03 11:41:58 [279017] building file list
2025/10/03 11:42:57 [279017] sent 2,886,609 bytes received 9,010 bytes 47,083.24 bytes/sec
2025/10/03 11:42:57 [279017] total size is 974,183,678,135 speedup is 336,433.65 (DRY RUN)
Gemini API Keyを使ったgemini-cli
のgemini 2.5 proでも、
シナリオ:
- ソースとデスティネーションでファイルサイズは同じ。
- ソースの方が更新日時が新しい。
rsync --append-verify
を実行した場合の動作:
- 同期判断: rsyncはまずファイルサイズと更新日時を比較します。サイズは同じですが、更新日時が異なるため、「このファイルは更新が必要だ」と判断します。
- 転送方法の選択: –append-verify オプションが付いているため、rsyncはまず「追記モード」での転送を試みます。
- 追記処理: しかし、ファイルサイズが同じなので、追記すべきデータはありません。このステップは事実上何も行いません。
- 検証 (Verify): 次に、–verify の処理が実行されます。デスティネーションファイル(まだ古いまま)のチェックサムと、ソースファイルのチェックサムを比較します。
- もしファイルの内容が本当に異なっていれば、チェックサムは一致しません。
- もし touch コマンドなどでタイムスタンプだけが変更され、内容は同じであれば、チェックサムは一致します(この場合は転送がここで完了します)。
- フォールバック: チェックサムが一致しなかった場合、rsyncは「追記モードでの更新は失敗した」と判断し、最初からファイル全体を上書きコピーします。
と--append-verify
を付けてもファイルサイズや更新日時が異なれば同期される、と回答している。
しかし、
rsyncのappendオプションのせいでファイルが壊れたり転送されない件について | NO MORE! 車輪の再発明を見ると--apppend
によって挙動が異なるとしている。
更新日時でなくてファイルサイズが小さいと同期されないとのことだが、これもgeminiは
–append-verifyは、同期の条件を妨げるものではなく、あくまで転送方法の一つです。その条件に当てはまらない場合は、通常の同期処理が行われるだけなので、送信元ファイルが小さい場合でも問題なく同期されます。
と答えている。
しかし、実際に--append-verify
を外すと、dry-runでの差分出力は変わらなかったが、dry-runでもない同期は、同期されるようになった。
[arimasou16@local:~]$ cat ~/Seafile/Public_Ubuntu/log/MusicBackupLog_20251003.log
2025/10/03 08:19:12 [230651] building file list
2025/10/03 08:19:14 [230651] sent 2,884,802 bytes received 7,181 bytes 1,156,793.20 bytes/sec
2025/10/03 08:19:14 [230651] total size is 974,183,678,135 speedup is 336,856.64
2025/10/03 11:45:39 [279620] building file list
2025/10/03 11:46:38 [279620] sent 2,884,812 bytes received 7,205 bytes 47,024.67 bytes/sec
2025/10/03 11:46:38 [279620] total size is 974,183,678,135 speedup is 336,852.68
2025/10/03 11:50:32 [280270] building file list
2025/10/03 11:50:34 [280270] <f..t...... Alphoenix/Future Begins/1_Future Begins.flac
2025/10/03 11:50:35 [280270] <f.st...... Alphoenix/Tokyo Lunar (feat. Upon Stone)/1_Tokyo Lunar (feat. Upon Stone).flac
2025/10/03 11:50:35 [280270] <f.st...... Alphoenix/Tokyo Lunar (feat. Upon Stone)/folder.jpg
2025/10/03 11:50:38 [280270] <f.st...... Arch Enemy/Blood Dynasty/01_Dream Stealer.flac
2025/10/03 11:50:40 [280270] <f.st...... Arch Enemy/Blood Dynasty/02_Illuminate the Path.flac
・・・中略・・・
2025/10/03 12:00:07 [280270] <f..t...... 鷺巣詩郎/SHIRO'S SONGBOOK 11 Vox theatrum/11_finest hour.flac
2025/10/03 12:00:07 [280270] <f..t...... 鷺巣詩郎/SHIRO'S SONGBOOK 11 Vox theatrum/12_what if_ - vox orchestra.flac
2025/10/03 12:00:08 [280270] <f..t...... 鷺巣詩郎/SHIRO'S SONGBOOK 11 Vox theatrum/13_go on loving someone else.flac
2025/10/03 12:00:09 [280270] <f..t...... 鷺巣詩郎/SHIRO'S SONGBOOK 11 Vox theatrum/14_beautiful world - perfect and peaceful.flac
2025/10/03 12:00:10 [280270] <f..t...... 鷺巣詩郎/SHIRO'S SONGBOOK 11 Vox theatrum/15_he looked beyond my fault (amazing grace will always by my song of praise).flac
2025/10/03 12:00:10 [280270] sent 22,617,992 bytes received 19,625,086 bytes 72,770.16 bytes/sec
2025/10/03 12:00:10 [280270] total size is 974,183,678,135 speedup is 23,061.38
今までサイズ同一で更新日時が異なるファイルも大量に同期されたようだ。
gemini
の回答が異なるのは、バージョンもしくはOSによって異なるのだろうか…ともあれ、--apend
、--append-verify
は使わないことにした。