Rsync - утилита, используемая для синхронизации директорий. Директории могут находиться как на локальной так и на удаленной машине.
Rsync - утилита, используемая для синхронизации директорий. Директории могут находиться как на локальной так и на удаленной машине.
Возможности rsync:
- Скорость: первый раз скорость синхронизации ничем не отличается от других методов копирования данных, но в дальнейшем rsync будет передавать в место назначения только измененные данные, что существенно ускоряет проыесс синхронизации.
- Безопасность: rsync поддерживает шифрование, используя ssh во время передачи данных.
- Экономия: rsync использует компрессию для передачи данных
- Права: rsync не требует повышенных прав для установки и запуска.
- rsync options source destination
# rsync -zvr dir1 dir2 sending incremental file list dir1/ dir1/file1 dir1/file2 dir1/file3 dir1/file4 dir1/file5 dir1/file6 dir1/file7 sent 348 bytes received 149 bytes 994.00 bytes/sec total size is 0 speedup is 0.00
- -z включим компрессию
- -v подробный вывод
- -r рекурсия
# rsync -zvra dir1 dir2 sending incremental file list dir1/ dir1/file1 dir1/file2 dir1/file3 dir1/file4 dir1/file5 dir1/file6 dir1/file7 sent 365 bytes received 149 bytes 1028.00 bytes/sec total size is 0 speedup is 0.00 As you see below, rsync preserved timestamps during sync.
Теперь скопировались и атрибуты.
# rsync -v dir1/file5 dir2/ file5 sent 65 bytes received 31 bytes 192.00 bytes/sec total size is 0 speedup is 0.00
# rsync -avz dir1 login@gw: Password: sending incremental file list dir1/ dir1/file1 dir1/file2 dir1/file3 dir1/file4 dir1/file5 dir1/file6 dir1/file7 sent 365 bytes received 149 bytes 114.22 bytes/sec total size is 0 speedup is 0.00Мы синхронизировали локальную директорию и удаленную. Для удаленного севрера мы определили username@machinename:path. Понадобилось ввести пароль. Если не хотелось бы вводить пароль, то можно настроить беспарольную ssh аунтификацию.
# rsync -avz makky@gw:dir1 dir1 Password: receiving incremental file list dir1/ dir1/file1 dir1/file2 dir1/file3 dir1/file4 dir1/file5 dir1/file6 dir1/file7 sent 148 bytes received 370 bytes 115.11 bytes/sec
total size is 0 speedup is 0.00
Обратите на использование "/" и ".": $ rsync -avz sysop@192.168.12.254:dir .
$ rsync -avz sysop@192.168.12.254:dir/ .
В первом примере, удаленный объект будет скопирован в текущую директорию. Во втором случае, содержимое удаленного объекта будет синхронизировано с содержимым текущей директории. Этот приём можно использовать не только с rsync, но и с другими программами, которые работают с файлами в unix.
# rsync -avz -e ssh sysop@192.168.12.254:/dir1/ /dir1или вот таккая конструкция:
$ rsync -avz -e ssh sysop@192.168.12.254:/dir1/ /dir1
$ rsync -avz -e "ssh -l sysop -P 12345" 192.168.12.254:/dir1/ /dir1
>f.st.... Dir1
.f....og. Dir2
Разберем вывод:
f изменение файла
s изменение размера
t изменение времени создания
o смена владельца
g смена группы
$ rsync -avz --include 'P*' --exclude '*' sysop@192.168.12.254:/dir1 /dir1
В данной конструкции мы исключаем сихронизацию всех объектов, но включаем сихронизацию всех объектов "P*".
В конце небольшой подарок читателям. Это скрипт, который позволяет автоматически возобновлять передачу данных, если сессия прервалась. Это удобно для резервирования данных или, например, в случаях очень медленного и нестабильного канала. Линстинг:
#!/bin/sh I=0 MAX_RESTARTS=10000 # количество возобновлений LAST_EXIT_CODE=1 while [ $I -le $MAX_RESTARTS ] do I=$(( $I + 1 )) echo $I. start of rsync rsync -av -e "ssh -i /home/max/.ssh/host" --progress --partial --bwlimit=2048 /usr/local/www/my.tar max@a.b.c.d:my.tar LAST_EXIT_CODE=$? if [ $LAST_EXIT_CODE -eq 0 ]; then break fi done if [ $LAST_EXIT_CODE -ne 0 ]; then echo rsync failed for $I times. else echo rsync successful after $I times. fiПозднее я модифицирую скрипт для принятия параметров, но пока привожу его в таком виде. К слову, этот скрипт можно модифицировать для автостарта обработки чего-нибудь в какой-нибудь другой программе.
Комментарии (0)
Добавление комментариев закрыто.