Синхронизация файлов с помощью rsync по ssh
Для копирования файлов по сети используется много инструментов. Наиболее распространенный из них — ftp, многие используют и scp. Для синхронизации данных используется rsync.
В rsync используется довольно-таки сложный алгоритм, с помощью которого передаются фактически только изменения в файлах, к тому же, для того, чтобы понять, что файл изменен, rsync не требуется сравнение двух файлов, что довольно сильно повышает производительность по сравнению с другими инструментами синхронизации. Ещё один плюс rsync — сжатие данных на лету, что ещё больше увеличивает эффективность.
Помимо указанных выше преимуществ, у rsync есть возможность передачи данных по защищенному соединению — ssh, это, несомненно, плюс к безопасности этой программы. Также, rsync сначала записывает передаваемую информацию во временный файл, чтобы исключить потерю информации в случае непредвиденных обстоятельств(отключение интернета или электричества).
Если имеется доступ по ssh к серверу, это наиболее простой способ для осуществления синхронизации. Rsync по ssh — это частный случай использования, общий вид команды выглядит так:
Pull (копирование файлов с удаленной системы на локальную)
Push (копирование файлов с локальной машины на удаленную)
В
официальной документации по rsync «Push»
— это копирование файлов с локальной машины на удалённую, а «Pull» — с
удалённой на локальную.
Обязательным параметром является «ИСТОЧНИК», их может быть несколько.
Основные ключи:
-r, каталоги копируются рекурсивно;
-l, копировать символические ссылки «как есть», то есть rsync не будет следовать по ним, обращаясь к файлам;
-p, сохранение прав доступа к файлам;
-t, сохранение времени модификации файлов;
-g, -o, сохранение владельца и группы файла;
-D, сохранение файлов устройств и специальных файлов;
-u, режим обновления, пропускаются файлы на получателе, имеющие более позднюю дату модификации, чем в источнике;
-v, выводит имена копируемых файлов;
-q, не выводит сообщения об ошибках;
-z, включение режим сжатия;
-P, отображение прогресса при копировании;
-с, проверка файлов по контрольной сумме, а по размеру и дате модификации. Дополнительная нагрузка на процессор, сильно увеличивает время синхронизации;
—ignore-errors, продолжение копирования и удаления даже после появления ошибок;
—max-delete, максимальное число удаляемых за один раз файлов и каталогов;
—files-from=FILE, задается список файлов и директорий для копирования в файле;
-e ssh, использование при копировании ssh;
—bwlimit=KBPS, ограничение скорости копирования.
Примеры:
Скопируется на сервер 192.168.0.1 содержимое папок /backup/file1/ /backup/file2/ в папку backup
В этом примере уже скопируются сами папки
Как ограничить скорость передачи файлов? Нужно поставить опцию —bwlimit :
Как синхронизировать файлы с проверкой по контрольной сумме?
Как скопировать файлы с удаленной машины на локальную?
Как исключить файл или директорию при копировании?
Исключаем директорию /temp
Как использовать нестандартный порт ssh при копировании rsync?
Автор: igel