Other than by renaming the files first, how can I
rsync files that may have colons in their names?
Colons are only special in the first directory component of a command line argument. So if you have what looks like a relative path, prepend
$ mkdir sou:rce $ rsync -a sou:rce/ de:st/ The source and destination cannot both be remote. $ rsync -av ./sou:rce/ ./de:st/ sending incremental file list created directory ./de:st ./
In a script:
case $source in /*) :;; *) source=./$source;; esac case $dest in /*) :;; *) dest=./$dest;; esac rsync "$source" "$dest"