I'm using rsync to transfer large OS image files around and sometimes the local permissions change so that the sender does not have access to the source file any more.
Having previously transferred the file there is already a file of matching size on the target host. Now attempting the transfer again rsync connects to the remote end and the remote end begins to do its checks before the transfer proper. Because the image file is large this will take a long time (10 minutes).
After this rsync will report the "Permission denied" error for the local file.
It would be more user-friendly to check the local file access permissions before doing anything time consuming and exit with an error as soon as possible.
Please consider changing this behaviour.
I have fallen into the same trap described in this issue:
$ rsync -avvHPS --rsh='ssh' big_cache.tar.bz bruxy@remote:/mnt/data_cache/
opening connection using: ssh -l bruxy remote rsync --server -vvlHogDtprSe.iLsfx --partial . /mnt/data_cache/ (10 args)
sending incremental file list
697,513,154,774 100% 106.35MB/s 1:44:15 (xfr#1, to-chk=0/1)
rsync: mkstemp "/mnt/data_cache/.big_cache.tar.bz.mQWodj" failed: Permission denied (13)
total: matches=0 hash_hits=0 false_alarms=0 data=697513154774
sent 697,683,446,175 bytes received 163 bytes 111,513,377.50 bytes/sec
total size is 697,513,154,774 speedup is 1.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
The error message is displayed after this 650 GB file was transferred, but not saved in the remote directory because of wrong permission. It would be nice to receive this error sooner :)
I am using:
rsync version 3.1.1 protocol version 31