Looks like my USB HDD is old and corrupted:
rsync: read errors mapping "path/to/file.jpg": Input/output error (5)
Syslog:
kernel: [58927.940676] sd 6:0:0:0: [sdb] Unhandled sense code
kernel: [58927.940683] sd 6:0:0:0: [sdb] Result: hostbyte=invalid driverbyte=DRIVER_SENSE
kernel: [58927.940690] sd 6:0:0:0: [sdb] Sense Key : Medium Error [current]
kernel: [58927.940696] sd 6:0:0:0: [sdb] Add. Sense: Unrecovered read error
kernel: [58927.940703] sd 6:0:0:0: [sdb] CDB: Read(10): 28 00 00 21 f2 df 00 00 08 00
kernel: [58927.940716] end_request: critical target error, dev sdb, sector 2224863
The strange thing is that FS is not spoilt: I can list all directories. However, reading the contents of about 10% files gives these errors. Adiitionally, most of small files are safe, however, large files are all spoilt (corruption threshold is ~5MB).
How can it be? What options do I have to investigate & rescue the files? Can it be a driver issue? I can't believe that HDD damage could miss the FS metadata!
P.S. this HDD is perfidious: I have always been doing backups, and it waited for the right moment to betray :-D
Listing the directories does not mean that the filesystem is ok, you're just viewing metadata (which is a small percent of a filesystem).