2つのSSDドライブ間で特定のファイルを「再同期」できないのはなぜですか?

2つのSSDドライブ間で特定のファイルを「再同期」できないのはなぜですか?

rsync最近、1つのSSDから2つのLinuxサーバーを介して別のSSDにコンテンツを移行しました。

  • Raspberry Pi 4(RPi4)で動作するUbuntu 20.0.4.3 LTS
  • x864_64 AMD Ryzen 5 2600X 6コアプロセッサで動作するDebian 10

メモ:私はこれらの詳細が重要だとは思わず、より多くの文脈のためにそれらを取り出すだけです。

ファイルをコピーしようとすると、rsync99.9%のファイルが問題なくコピーされますが、一部のファイルには疑問符(?)などの特殊文字が含まれている場合があります。

...
rsync: open "/mnt/..... ⭐️/CD 3/05. Have You Ever Seen the Rain?.mp3" failed: Invalid argument (22)

-and-

rsync: open "/mnt/..... 09 Squeeze - Is That Love?.mp3" failed: Invalid argument (22)
...

多くのスイッチを試しましたが、rsyncこれらの特定のファイルをコピーするのに役立つスイッチはありません。現在私は次のrsyncコマンドを使用しています。

$ rsync -avz --partial --progress --no-o --no-g \
      --no-perms --inplace --exclude 'lost+found' ubuntu@pi-server:/mnt/* .

何か遅れているようですが、?なぜこれが起こるのか混乱しています。

答え1

全長DR

rsyncNTFS-3gのレビューを検索中に、おそらく私の問題と関連がある可能性があるファイルシステムを使用しようとしたことに気づきました。

源泉:特殊文字を含むファイル名を外部NTFSボリュームにコピーする

windows_names このオプションには、一部の許可されていない文字 (たとえば、9 文字 " * / : < > ? \ | と 0x20 より小さいコードを持つ文字) が含まれているため、Windows では許可されていない名前のファイル、ディレクトリ、拡張子属性の生成を防止します。最後の文字はスペースまたはドットなので、まだ読みやすく名前を変更できます。

詳細を確認

もちろん、検査の結果、私は実際に外部SSDに付属の基本ファイルシステムをまだ使用していました。

$ parted /dev/sdg -- print
Model: SanDisk Extreme 55AE (scsi)
Disk /dev/sdg: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name         Flags
 1      1049kB  4001GB  4001GB               Extreme SSD  msftdata

ただし、ファイルをコピーするファイルシステムは次のとおりです。

$ parted /dev/sda -- print
Model: WD My Passport 262E (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      33.6MB  2000GB  2000GB  ext4

したがって、この問題を解決するには、ターゲットSSDをext4ファイルシステムに再フォーマットする必要があります。

EXT4を使用したSSDの設定

始める前に、wipefsデバイスに残っている可能性のある残りのパーティションとファイルシステム情報の両方を削除してみましょう。まず、残りのファイルシステムですexfat

$ wipefs /dev/sdg1
DEVICE OFFSET TYPE  UUID      LABEL
sdg1   0x3    exfat 4078-8D8D Extreme SSD
sdg1   0x1c6  atari
sdg1   0x1d2  atari
sdg1   0x1de  atari
sdg1   0x1ea  atari

だから核兵器を発射しましょう。

$ wipefs --all --force /dev/sdg1
/dev/sdg1: 8 bytes were erased at offset 0x00000003 (exfat): 45 58 46 41 54 20 20 20
/dev/sdg1: 4 bytes were erased at offset 0x000001c6 (atari): ff ff ff ff
/dev/sdg1: 4 bytes were erased at offset 0x000001d2 (atari): ff ff ff ff
/dev/sdg1: 4 bytes were erased at offset 0x000001de (atari): ff ff ff ff
/dev/sdg1: 4 bytes were erased at offset 0x000001ea (atari): ff ff ff ff

これでパーティションを削除します。

$ parted /dev/sdg rm 1
Information: You may need to update /etc/fstab.

今きれいになりました。

$ parted /dev/sdg -- print
Model: SanDisk Extreme 55AE (scsi)
Disk /dev/sdg: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  File system  Name  Flags

パーティションを分割し、EXT4 FSをインストールして確認します。

$ parted -s -a optimal -- /dev/sdg mkpart primary ext4 0% 100%

$ parted /dev/sdg -- print
Model: SanDisk Extreme 55AE (scsi)
Disk /dev/sdg: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  4001GB  4001GB               primary

$ mkfs.ext4 /dev/sdg1
mke2fs 1.44.5 (15-Dec-2018)
Discarding device blocks: done
Creating filesystem with 976745984 4k blocks and 244187136 inodes
Filesystem UUID: 8d030a6a-61fe-4918-9937-0ec02d247006
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
    102400000, 214990848, 512000000, 550731776, 644972544

Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

今はずっと良く見えます。

$ parted /dev/sdg -- print
Model: SanDisk Extreme 55AE (scsi)
Disk /dev/sdg: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  4001GB  4001GB  ext4         primary

EXT4に使用できるファイルシステム領域をさらに解放するには:

### BEFORE
$ df -h | grep -E "File|/dev/sdg1"
Filesystem                Size  Used Avail Use% Mounted on 
/dev/sdg1                 3.6T   89M  3.4T   1% /mnt


### AFTER
$ df -h | grep -E "File|/dev/sdg1"
Filesystem                Size  Used Avail Use% Mounted on
/dev/sdg1                 3.6T   89M  3.6T   1% /mnt

源泉:ext4よりXFSでフォーマットした後、より多くの空き容量を確保するのはなぜですか?

returnrsync

したがって、ファイルシステムがEXT4として正しく作成されマウントされた場合、rsync無効な名前のファイルを使用しようとすると正しく機能します。?

$ rsync -avz --partial --progress --no-o --no-g \
      --no-perms --inplace --exclude 'lost+found' ubuntu@pi-server:/mnt/* .
...
receiving incremental file list
05. Have You Ever Seen the Rain?.mp3
     10,263,388 100%    9.78MB/s    0:00:01 (xfr#1, to-chk=0/1)

sent 59 bytes  received 10,239,698 bytes  2,925,644.86 bytes/sec
total size is 10,263,388  speedup is 1.00
...

引用する

関連情報