I'm using rsync for network backups. These backups are "warm", ie backing up booted filesystems. The goal is to get rsync to make as perfect as possible of a clone to a folder on the backup server. (bootable)

I just updated to Rsync 3.0.6 because anything >= 2.6.3 copies 100% of any resource fork it finds, every single time. (ie even if not updated) (I was using 2.6.0 even tho it's sadly outdated) Unfortunately, another issue persists. Rsync INSISTS on copying sockets, even though it can't do it. This generates an IO error on the send end, and prevents deleting files on the receiver.

To date the only way around this I've found is to --exclude each and every socket, or where possible, folder where sockets tend to be, that's not necessary. (/var/run/ etc) With 3.0.6 comes the promise of avoiding this problem at least. If I replace -a with all its inclusions except -D, and don't try --devices, it should skip sockets. (ie no --special) Hooray, it works!

Except one snag. -X has been added to 3.0.6 to copy extended attributes. (that, in combination with a flag for ACLs, I can actually get a correct clone of leopard!) Sadly, if I put in -X, it insists on stating the sockets even though it's not supposed to copy them, and thus IO error and breaks things. I assume this is a bug in rsync that it's not supposed to check extended attributes on files it's not supposed to copy.

So I'm back to spelling out where every socket is in the system with a whole pack of --exclude entries. Grrr... Is there any proper fix?


I work for the Department of Redundancy Department