新しく接続された外部USBフラッシュドライブにディレクトリをrsync
する場合、
rsync -av /source/ /dest/
ファイルに変更がないにもかかわらず、すべてのファイルが転送(つまり、書き換え)されます。
ファイルの上書きは、USBを取り外して再度接続した場合にのみ行われることに注意してください。間にドライブを抜かずにrsync
コマンドを2回続けて実行すると、ディレクトリの内容全体が正常にスキップされます。
-u
更新オプションを含め、-t
オプションを明示的に追加しても、何も変更されませんでした。
マウントポイントは同じままです(つまり、/media/user/<UUID>
、ドライブはxfce
によって自動出力され、/dev/sdxy
は明らかに変更されます)ハードドライブのソースはext4
ですが、USBはvfat
とutf8
文字エンコード。
この動作の理由は、/dev/
名エントリの変更である可能性がありますか?ファイルの変更を正しく認識してrsync
を実行するにはどうすればよいですか?私のバックアップはこれなしでほんの数秒かかるはずですが、大量のデータが繰り返し上書きされるため、今では常に数分です。また、大量の書き込みはフラッシュドライブの平均寿命に最適ではありません。
FATドライブは、タイムスタンプを2秒の精度でしか保存できません。ドライブを抜き差しすると、すべてのファイルが事実上壊れます。回避策については、--modify-window
オプションを参照してください。
次に、ローカルにコピーするとrsync
のように動作するため、このようなcp
を使用した高速バックアップは表示されません。
デフォルトでは、rsyncは変更されたファイルを変更時間とファイルサイズで識別します。 「vfattimestamp」をグーグルですばやく検索すると、tz=UTC
マウントオプションに関連するいくつかの問題が明らかになります。
外部ドライブのタイムスタンプが内部ドライブと異なるため、rsyncは常にファイルが異なると見なしている可能性がありますか?その場合は、マウントオプションを確認する必要があります。
あるいは(そして実際には私の理論が正しいかどうかに関係なく)、-c
オプションを指定してrsyncを実行しようとすると、ファイルの内容をハッシュして変更をチェックできます。これにより速度が低下する可能性がありますが、実際の影響についてはよくわかりません。
私の環境
Raspberry Pi3 B +、Raspbian Strech(Linux)
以下の1行を/ etc/fstabに追加しましたdev/sda1 /media/pi/Toshiba vfat defaults 0 0
次にSudo umount /media/pi/Toshiba
デバイス名を見つけるには、次のコマンドlsusb
を使用できます
次に、USBメモリを再挿入しました。
その後、USBMEMORYの所有者が次の1行のように変更されました。drwxr-xr-x 3 root root 8192 11月 9 23:22 Toshiba
次に、以下の1行を使用して、権限、所有者、およびタイムスタンプを使用してバックアップすることができました。rsync -alvptgo /home/pi /media/pi/Toshiba/pi
これは実際にDIFFバックアップコマンドとして使用しました。
ただし、再起動するときはスロットにUSBメモリを挿入する必要があることに注意してください
または
再起動する前に、/ etc/fstabのその1行を削除してください。