Синхронизация файлов с помощью rsync по ssh Linux/FreeBSD

Для копирования файлов по сети используется много инструментов. Наиболее распространенный из них - ftp, многие используют и scp. Для синхронизации данных используется rsync.

Если имеется доступ по ssh к серверу, это наиболее простой способ для осуществления синхронизации.

Rsync по ssh - это частный случай использования, общий вид команды выглядит так:

rsync [ОПЦИИ] [ПОЛЬЗОВАТЕЛЬ@]СЕРВЕР:ИСТОЧНИК... [ПОЛУЧАТЕЛЬ]
Pull (копирование файлов с удаленной системы на локальную)

rsync [ОПЦИИ] ИСТОЧНИК 1 [ИСТОЧНИК N] [ПОЛЬЗОВАТЕЛЬ@]СЕРВЕР:ПОЛУЧАТЕЛЬ
Push (копирование файлов с локальной машины на удаленную)

Обязательным параметром является "ИСТОЧНИК", их может быть несколько.

Основные ключи:

-a,  режим архивирования, включает ключи -rlptgoD;
-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,  ограничение скорости копирования.


Примеры:

# rsync -zavP /backup/file1/ /backup/file2/ user@192.168.0.1:/backup
Скопируется на сервер 192.168.0.1 содержимое папок /backup/file1/ /backup/file2/ в папку backup

# rsync -zavP /backup/file1 /backup/file2 user@192.168.0.1:/backup
В этом примере уже скопируются сами папки

Как ограничить скорость передачи файлов? Нужно поставить опцию --bwlimit :

# rsync -zavP --bwlimit=100 /backup/file1/ user@192.168.0.1:/backup

Как синхронизировать файлы с проверкой по контрольной сумме?

# rsync -сzavP /backup/file1/ user@192.168.0.1:/backup

Как скопировать файлы с удаленной машины на локальную?

# rsync -zavP user@192.168.0.1:/backup /backup/file1/

Как исключить файл или директорию при копировании?

# rsync -azVP --exclude /temp/ /home/data/ user@192.168.0.1:/backup
Исключаем директорию /temp

Как использовать нестандартный порт ssh при копировании rsync?

# rsync -zavP '-e ssh -p 12345' /var/lib/ root@192.168.0.1:/backup

Синхронизация файлов с помощью rsync по ssh Linux/FreeBSD: 3 комментария

  1. "# rsync -zavP /backup/file1/ /backup/file2/ user@192.168.0.1:/backup
    Скопируется на сервер 192.168.0.1 содержимое папок /backup/file1/ /backup/file2/ в папку backup"
    и
    "# rsync -zavP /backup/file1/ /backup/file2/ user@192.168.0.1:/backup
    В этом примере уже скопируются сами папки"
    Не вижу отличий в команде. Возможно во второй команде завершающий слэш в источнике лишний?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *