Утилита rsync - синхронизация файлов с сервером
Консольная программа rsync, подобно scp
, позволяет копировать файлы и каталоги между удаленным сервером и локальным компьютером. Однако, во-первых, позволяет делать это и между двумя локальными папками, во вторых - происходит не совсем копирование, а синхронизация. Последнее означает, что 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.
Подтягивание изменений будет выглядеть так (здесь мы находимся в каталоге 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
‒ пропуск файлов, если они более новые в месте назначения, тем самым избегается их перезапись.