Утилита rsync — синхронизация файлов с сервером

Обновлено: 05.12.25

Консольная программа rsync, подобно scp, позволяет копировать файлы и каталоги между удаленным сервером и локальным компьютером. Однако, во-первых, может делать это и между двумя локальными папками, во вторых — в случае с rsync происходит не копирование как таковое, а синхронизация. Последнее означает, что rsync выполняет копирование файла из источника в место назначения, только если в источнике файл более новый или его нет в месте назначения.

Другими словами, в отличие от scp утилита rsync не копирует все подряд, а только измененные файлы. Так если сайт правится на локальном компьютере, то, выполнив команду rsync, можно загрузить изменения на веб-сервер. Если же файлы сайта правятся там, то подтянуть изменения на свой компьютер также можно с помощью rsync.

Команда выполняется на локальном компьютере, а направление синхронизации задается порядком аргументов. Сначала указывается источник, потом — приемник (место назначения). Также скорее всего потребуется указать опции.

$ rsync -avz test/ young@younglinux.info:/home/young/testy/
sending incremental file list
./
folder/
folder/text.txt

sent 1.058 bytes  received 55 bytes  742,00 bytes/sec
total size is 26.545  speedup is 23,85

В примере мы синхронизируем содержимое каталога test с удаленным testy. При этом находимся в родительском для test каталоге. Если бы текущей директорией был бы сам test, то источник надо обозначить точкой. Если написать ../test, то в каталоге testy окажется вложенный test.

На практике, если на локальном компьютере сайт находится в каталоге site, для синхронизации его целиком мы должны находиться на уровень выше в дереве каталогов. Однако место назначения на удаленном сервере указывается непосредственно (пишется путь до каталога, куда мы заливаем содержимое из site):

me@comp:~/save/younglinux$ rsync -avz site/ user@younglinux.info:/var/www/younglinux.info/

Выше выполняется синхронизация содержимого каталогов site и younglinux.info.

Подтягивание изменений будет выглядеть так (здесь мы находимся в каталоге test):

$ rsync -avz young@younglinux.info:/home/young/testy/ .
receiving incremental file list
./
server_file
server_folder/
server_folder/article.tst

sent 83 bytes  received 1.187 bytes  508,00 bytes/sec
total size is 26.576  speedup is 20,93

Значение основных ключей: