rsync {OPTIONS} {FROM} {TO}
Копирование содержимого директории /local/folder/ с локальной машины на удаленный сервер user@server, в директорию /remote/folder/

rsync -e "ssh -p 22" --progress --partial --force -avz /local/folder/ user@server:/remote/folder/
Важно обратить внимание на последний слэш: если он есть то копируется содержимое папки, иначе - вся директория, вместе с названием.

--progress - отображение прогрессбара
--partial - сохранение частей файлов после копирования (см. детали алгоритма работы rsync), ускоряет последующие копирования
--forse - удаление не пустых директорий
-e ssh - использование ssh для синхронизации, порт указывается так -e "ssh -p22", настройка подключений по ssh без ввода пароля описана тут
-a - алиас для группы ключей (-rlptgoD), сохраняет разные атрибуты файлов/директорий при копировании, включает рекурсию
-v - вывод в консоль подробных действий
-z - компрессия передаваемых файлов
Копирование отдельного файла

rsync --progress --partial -avz /local/file.ext user@remote.server:/remote/folder/
Синхронизация двух локальных папок с удалением из {TO} всего чего нет в {FROM}

rsync -av --delete /local/from/ /local/to/
Тоже предназначение, как и у предыдущей команды, только физически ничего не меняется (симуляция процесса)

rsync -avn --delete /local/from/ /local/to/
Показать разницу между двумя каталогами

rsync -avi /local/folder1/ /local/folder2/
И то, из-за чего мне понадобился rsync: надо синхронизировать из периодически обновляемого хранилища группу файл в другую директорию. В rsync есть опция --files-from=list.txt которая синхронизирует только файл из списка в list.txt, разделитель - новая строка.

rsync -avh --files-from=list.txt --progress /local/folder1/ /local/folder2/
Несколько других полезных опции rsync

--exclude='*.pyc' - исключить файлы совпадающие с маской *.pyc, regexp не поддерживается
--exclude-from='files.txt' - исключить файлы, которые упомянуты в files.txt, разделить имен - новая строка
-h - human-readable формат для размера файлов
-u - если файл в {TO} новее чем в {FROM}, то не заменять
--existing - обновление только уже существующих файлов, новые не копируются
--max-size='7MB' - не передавать файлы, больше 7 МБайт