Утилита rsync — синхронизация файлов с сервером
Консольная программа 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
Значение основных ключей:
-a‒ режим архивации, в котором сохраняются разрешения на файл, время и другое.-v‒ вывод детализации в процессе синхронизации.-z‒ сжатие файлов в процессе передачи.--delete‒ удаление файлов в месте назначения, если их нет в источнике.-r‒ рекурсивное копирование файлов и каталогов (однако вложенные каталоги с файлами синхронизируются и без этого ключа)-u‒ пропуск файлов, если они более новые в месте назначения, тем самым избегается их перезапись.