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
...

인용하다

관련 정보