ZFS rsync Input/output error (5) from ZFS -> to NTFS (ntfs-3g)

I have 2 drives; 1 main NAS, and 1 spare drive. Sometimes I copy the main drive to the spare, re-format the main drive, and copy the spare contents back to it (last I did it was ext4 spare copy to ZFS main). Generally did it no problem ext4 and NTFS for years with Linux. My notes for formatting the drives.

Was doing it last night (ZFS main to NTFS spare on 14.2-R), and I'm getting I/O errors I've never seen before on a few files/dirs:

rsync:
Code:
rsync -v -i -r -P --ignore-existing '/NAS/' '/mnt/NAS2/'

Errors:
Code:
rsync: [generator] recv_generator: mkdir "/mnt/NAS2/Music/Legacy/Genre [flac]/Artist - Album [FLAC]" failed: Input/output error (5)
*** Skipping any contents from this failed directory ***
cd++++++++++ Music/Legacy/Genre [flac]/Artist - Album [FLAC]/
rsync: [generator] recv_generator: failed to stat "/mnt/NAS2/Music/Legacy/Genre [flac]/Album/01 - Artist - Song (Mix).flac": Input/output error (5)

rsync: [generator] recv_generator: mkdir "/mnt/NAS2/Music/Legacy/Genre [flac]/Album2 ~Non-Stop Mix~" failed: Input/output error (5)
*** Skipping any contents from this failed directory ***

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1359) [sender=3.3.0]

I mount the NTFS spare with this (get similar errors still without windows_names):

Code:
ntfs-3g -o 'rw,big_writes,windows_names' '/dev/ada2' '/mnt/NAS2'

I haven't tried cp, but don't see any obvious reason why rsync would give errors with those files/dirs (longer folder names and stuff with CKJ characters copied fine).

The errors are consistent (happens on immediate re-runs) and doesn't seem to be hardware related at quick glance (nothing in dmesg, other files xfer'd fine).
 
I'm using this script to rename files and dirs related to my music collection. please don't use it before you tweak it to your taste.

NFSv3 compatibility is not my only concern but also ISO9660 and fat32 (used by most hardware players).

also I would drop any non-ASCII char that ends up in the directory/filename.

you can do

Code:
ls -d foo | xxd

to catch any such multibyte chars - they end up red on a color terminal.
 
I ended up changing the dir names with ~ in them (and the one above which looked fine without special chars) which seems to be fine! But I'm curious why I had to change those files in this scenario; I had those filenames for a few years now and they passed the initial rsync with FreeBSD ext4 -> ZFS.
 
I stopped wondering about this subject a while ago.
each time I find such an exception I simply add it to the script - like I just added your ~.
 
Back
Top