Применение утилиты cwRsync
Rsync — утилита для UNIX-подобных систем, которая предназначена для удаленного резервного копирования и синхронизации файлов и каталогов в двух местах.
Преимущества rsync:
Скорость: rsync передает только изменившиеся блоки или биты в место назначения.
Безопасность: за счет шифрования данных при передаче с использованием протокола SSH
Маленькая нагрузка: rsync использует сжатие и распаковку данных.
Rsync была создана как замена для rcp и scp.
Утилита rsync удобней приведенных выше аналогов, так как в ней имеется возможность убедиться в правильности вашей команды до начала копирования.
При простом копировании файлов рекомендуется сделать пробный прогон (ключ -n) в режиме с показом подробностей (-v):
rsync -avn source example.com:destination
где
source - источник,
example.com:destination - назначение (куда копировать, здесь удаленный сервер).
В этом режиме rsync покажет список файлов, которые он скопирует. Будут скопированы только новые и изменившиеся файлы. Вы сможете убедиться, что копируется сам каталог, а не содержимое или наоборот - в зависимости от вашей задачи.
После того как вы убедились, что копируется именно то, что вы хотите, можно уже запускать процесс копирования:
rsync -av source example.com:destination
В этой команде ключ -a подразумевает рекурсивное копирование всех файлов и каталогов, включая их атрибуты: дату создания, дату изменения. Ключ -v дает подробный отчет о работе в процессе выполнения команды.
Правила копирования каталогов совсем простые.
Если в конце пути до источника копирования нет слеша, то скопируется сам каталог.
$ rsync -avn path/to/source example.com:destination
Rsync использует SSH для связи. Следовательно, у вас должна быть работающая система SSH.
У многих администраторов появилась необходимость синхронизировать каталоги между Unix-Windows серверами. Так получил жизнь проект cwRsynс. Суть этого проекта в том, что утилита Rsync запускается под Windows с помощью библиотеки cygwin.
1. Установка cwRsync.
Для начала необходимо скачать и установить утилиту cwRsync. Пакет zip можно скачать отсюда.
https://archive.org/download/cwRsync_5.5.0_x86_Free
Разархивировать ZIP-архив и поместить полученную папку cwRsync в любую директорию компьютера. В нашем случае папка cwRsync была помещена в директорию C:/User/akim-/cwRsync
Далее необходимо добавить в переменную среды PATH путь до утилиты:
C:\User\akim-\cwRsync\bin
Проверить, введя команду в cmd :
rsync
Теперь настроим беспарольный вход на удаленный сервер по ключам ssh.
Откроем через меню Пуск или через контекстное меню установленный ранее терминал git bash и введем команду:
ssh-keygen -t rsa
Будет предложено нажать Enter, после чего в домашнюю директорию будет сгенерирован публичный ключ
C:/User/akim-/.ssh/id_rsa.pub
Перемещаем по FTP публичный ключ на сервер хостинга, допустим, в папку prob.
Соединяемся с сервером через putty и выполняем команду
cat prob/id_rsa.pub >> .ssh/authorized_keys
Таким образом, в файл authorized_keys добавляется новая запись.
Теперь можно соединяться с удаленным сервером через SSH, введя в терминале git bash команду:
ssh username@exemple.ru
К сведению. В целях безопасности папка .ssh должна иметь атрибут 700. Если это не так, вводим команду
chmod 700 .ssh
И еще. Приложение Rsync должно иметь разрешение на обмен данными в брандмауэре Защитника Windows.
Теперь сгенерируем еще один публичный ключ.
Открываем командную строку Windows и переходим в папку cwRsync\bin:
cd cwRsync\bin
Вводим команду ssh-keygen:
C:\Users\akim-\cwRsync\bin>ssh-keygen
Enter file in which to save the key (/home/akim-/.ssh/id_rsa):
Нажмите Enter,
Enter passphrase (empty for no passphrase):
Нажмите Enter,
Enter same passphrase again:
Нажмите Enter.
Итак, публичный ключ помещен по адресу
C:\Users\akim-\cwRsync\home\akim-\.ssh\id_rsa.pub ( Предварительно необходимо создать папки home и akim- ).
Перемещаем по FTP публичный ключ на сервер хостинга, допустим, в папку prob1.
Здесь же в командной строке Windows переходим в домашнюю директорию:
C:\Users\akim-\cwRsync\bin>cd ../../
и соединяемся с сервером хостинга командой ssh username@exemple.ru:
C:\Users\akim->ssh username@exemple.ru
Далее выполняем командуЖ
cat prob1/id_rsa.pub >> .ssh/authorized_keys
Таким образом, в файл authorized_keys на хостинге добавляется еще одна новая запись.
Начинаем работать.
Внимание! Некоторые ошибки при выполнении команды rsync рассмотрены здесь.