我最近将内容从 1 个 SSD 迁移到另一个 viarsync
和 2 个 Linux 服务器:
- 在 Raspberry Pi 4 (RPi4) 上运行的 Ubuntu 20.0.4.3 LTS
- 在 x864_64 AMD Ryzen 5 2600X 六核处理器上运行的 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
事实证明,在搜索有关 NTFS-3g 的评论时,我意识到也许我正在尝试使用rsync
可能与我的问题相关的文件系统。
windows_names 该选项防止使用 Windows 不允许的名称创建文件、目录和扩展属性,因为它包含一些不允许的字符(即九个字符“ * / : < > ? \ | 以及那些代码较少的字符)比 0x20)或者因为最后一个字符是空格或点,仍然可以读取(并重命名)。
检查详情
果然,经过检查,我实际上仍在使用外部 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
来源:为什么在 XFS 中格式化后获得的可用空间比 ext4 更多?
返回 rsync
因此,在文件系统正确创建为 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
...