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
노트:나는 이러한 세부 사항이 중요하다고 생각하지 않으며 단지 더 많은 맥락을 위해 그것들을 꺼내는 것뿐입니다.
파일을 복사하려고 하면 rsync
99.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
rsync
NTFS-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
...