web-dev-qa-db-ja.com

USBフラッシュドライブへのrsyncは常にすべてのデータを転送します

新しく接続された外部USBフラッシュドライブにディレクトリをrsyncする場合、

rsync -av /source/ /dest/

ファイルに変更がないにもかかわらず、すべてのファイルが転送(つまり、書き換え)されます。

ファイルの上書きは、USBを取り外して再度接続した場合にのみ行われることに注意してください。間にドライブを抜かずにrsyncコマンドを2回続けて実行すると、ディレクトリの内容全体が正常にスキップされます。

-u更新オプションを含め、-tオプションを明示的に追加しても、何も変更されませんでした。

マウントポイントは同じままです(つまり、/media/user/<UUID>、ドライブはxfceによって自動出力され、/dev/sdxyは明らかに変更されます)ハードドライブのソースはext4ですが、USBはvfatutf8文字エンコード。

この動作の理由は、/dev/名エントリの変更である可能性がありますか?ファイルの変更を正しく認識してrsyncを実行するにはどうすればよいですか?私のバックアップはこれなしでほんの数秒かかるはずですが、大量のデータが繰り返し上書きされるため、今では常に数分です。また、大量の書き込みはフラッシュドライブの平均寿命に最適ではありません。

2
Fiximan

FATドライブは、タイムスタンプを2秒の精度でしか保存できません。ドライブを抜き差しすると、すべてのファイルが事実上壊れます。回避策については、--modify-windowオプションを参照してください。

次に、ローカルにコピーするとrsyncのように動作するため、このようなcpを使用した高速バックアップは表示されません。

6
roaima

デフォルトでは、rsyncは変更されたファイルを変更時間とファイルサイズで識別します。 「vfattimestamp」をグーグルですばやく検索すると、tz=UTCマウントオプションに関連するいくつかの問題が明らかになります。

外部ドライブのタイムスタンプが内部ドライブと異なるため、rsyncは常にファイルが異なると見なしている可能性がありますか?その場合は、マウントオプションを確認する必要があります。

あるいは(そして実際には私の理論が正しいかどうかに関係なく)、-cオプションを指定してrsyncを実行しようとすると、ファイルの内容をハッシュして変更をチェックできます。これにより速度が低下する可能性がありますが、実際の影響についてはよくわかりません。

2
F30

私の環境
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行を削除してください。

0
USAKU