rsync error unexplained error (code 255) at io.c

I was using a script to perform rsync in sudo crontab. The script does a 2-way rsync (from serverA to serverB and reverse). After I reboot both the server machines, the rsync is not working in sudo crontab. I also setup a new cronjob and it fails, The error is:

rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6]
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]

However, when run from terminal, the rync script works as expected without issues. please help.


One of the reason of rsync connection being unexpectedly closed is the timeout issue, especially when it takes a while to calculate file checksums in order to check the differences on the remote host.

To avoid this problem, you need to add these settings into your ~/.ssh/config or /etc/ssh/ssh_config:

Host *
  ServerAliveInterval 30
  ServerAliveCountMax 6

and optionally similar on the remote server (in /etc/ssh/sshd_config), e.g.

ClientAliveInterval 30
ClientAliveCountMax 6

See: What the options ServerAliveInterval and ClientAliveInterval mean?


A little hard to answer given the almost total lack of relevant information but as a general rule, if a command works from the prompt but not from a cron job it's because you need to specify the full path to the command(s). Cron jobs do not have a normal user environment, which especially means they don't have the same PATH as regular users do.


This appears to happen when the connection is refused:

ssh: connect to host port 2222: Connection refused

followed by rsync error:

rsync: connection unexpectedly closed (0 bytes received so far) [receiver] rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-45/rsync/io.c(453) [receiver=2.6.9]


Possible reasons:

  • In my scenario, I had a firewall issue. Punched a hole.
  • wrong password (unlikely to address your issue, but will cause the same error)