RSYNC — различия между версиями

Материал из megapuper
Перейти к: навигация, поиск
 
(не показаны 3 промежуточные версии этого же участника)
Строка 8: Строка 8:
 
  '''-a''' - режим архива, сохраняет владельцев, временные метки, права, символьные ссылки
 
  '''-a''' - режим архива, сохраняет владельцев, временные метки, права, символьные ссылки
 
  '''-d''' - синхронизация дерева каталогов, без синхронизации файлов находящихся внутри каталогов
 
  '''-d''' - синхронизация дерева каталогов, без синхронизации файлов находящихся внутри каталогов
 +
'''-i''' - отображение изменений между источником и назначением
 
  '''-r''' - режим рекурсии, синхронизация вместе с внутренними каталогами, а не только файлов верхнего уровня
 
  '''-r''' - режим рекурсии, синхронизация вместе с внутренними каталогами, а не только файлов верхнего уровня
 +
'''-t''' - сохранять время модификации
 
  '''-u''' - не перезаписывать измененные данные в месте назначения
 
  '''-u''' - не перезаписывать измененные данные в месте назначения
 
  '''-v''' - детализация
 
  '''-v''' - детализация
 
  '''-z''' - сжатие
 
  '''-z''' - сжатие
 
  '''--delete''' - удаление файлов в точке назначения
 
  '''--delete''' - удаление файлов в точке назначения
 +
'''--exclude''' - шаблон, что исключаем при синхронизации
 
  '''--existing''' - обновление только существующих файлов, не копируя новые
 
  '''--existing''' - обновление только существующих файлов, не копируя новые
 +
'''--files-from''' - синхронизировать файлы из списка
 +
'''--include''' - шаблон, что включаем при синхронизации
 +
'''--max-size''' - максимальный размер передаваемого файла(B-байты, K-килобайты, M-мегабайты, G-гигабайты)
 
  '''--progress''' - показывать прогресс синхронизации(скорость, время, etc)
 
  '''--progress''' - показывать прогресс синхронизации(скорость, время, etc)
  
Строка 65: Строка 71:
 
Не создавать новые файлы на конечном сервере. Если необходимо обновлять(синхронизировать) только существующие файлы, не копируя вновь созданные, то используем опцию '''--existing'''
 
Не создавать новые файлы на конечном сервере. Если необходимо обновлять(синхронизировать) только существующие файлы, не копируя вновь созданные, то используем опцию '''--existing'''
 
  # rsync -rvz --existing /root/ root@192.168.0.5:/tmp/
 
  # rsync -rvz --existing /root/ root@192.168.0.5:/tmp/
 +
 +
 +
Просмотр изменений между источником и назначением, используем ключ '''-i'''
 +
# rsync --progress -avzi /root/ root@192.168.0.5:/tmp/
 +
 +
> - показывает, что файл был передан(синхронизирован)
 +
f - показывает, что это файл
 +
d - директория
 +
s - показывает изменение размера
 +
t - показывает изменение штампа времени
 +
o - изменение владельца
 +
g - изменение группы
 +
 +
 +
Включение/исключение файлов/директорий с использованием шаблонов. Rsync позволяет задавать шаблоны для отбора нужных файлов и директорий<br/>
 +
В примере скопируем все файлы начинающиеся с буквы '''n'''
 +
# rsync -rvz --include 'n*' --exclude '*' /root/ root@192.168.0.5:/tmp/
 +
 +
 +
Задаём максимальный размер передаваемого файла. Для этого используется опция '''--max-size'''
 +
# rsync -rvz --max-size='10K' /root/ root@192.168.0.5:/tmp/
 +
 +
 +
Синхронизировать только файлы из списка
 +
# rsync --progress --files-from=rsync_files /root/ root@192.168.0.5:/tmp/

Текущая версия на 19:13, 14 мая 2015

Rsync - программа выполняющая синхронизацию файлов и каталогов в двух местах с минимизированием трафика, используя кодирование данных при необходимости. Важным отличием rsync от многих других программ/протоколов является то, что зеркалирование осуществляется одним потоком в каждом направлении (а не по одному или несколько потоков на каждый файл). Rsync может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию.


Синтаксис:

# rsync options source destination

ключи

-a - режим архива, сохраняет владельцев, временные метки, права, символьные ссылки
-d - синхронизация дерева каталогов, без синхронизации файлов находящихся внутри каталогов
-i - отображение изменений между источником и назначением
-r - режим рекурсии, синхронизация вместе с внутренними каталогами, а не только файлов верхнего уровня
-t - сохранять время модификации
-u - не перезаписывать измененные данные в месте назначения
-v - детализация
-z - сжатие
--delete - удаление файлов в точке назначения
--exclude - шаблон, что исключаем при синхронизации
--existing - обновление только существующих файлов, не копируя новые
--files-from - синхронизировать файлы из списка
--include - шаблон, что включаем при синхронизации
--max-size - максимальный размер передаваемого файла(B-байты, K-килобайты, M-мегабайты, G-гигабайты)
--progress - показывать прогресс синхронизации(скорость, время, etc)


Примеры использования.

Синхронизация двух директорий на одном сервере

# rsync -rvz /root/ /tmp


При синхронизации rsync меняет метки времени и группу владельца
Для сохранения используется опция -a, которая показывает режим архива и включает в себя:

  • рекурсивный режим
  • сохраняет символические ссылки
  • сохраняет разрешения (permissions)
  • сохраняет временные метки
  • сохраняет владельца и группу
# rsync -avz /root/ /tmp


Синхронизация одного файла

# rsync -av /root/Makefile /tmp


Синхронизация файлов с локальной машины на удаленную

# rsync -rvz /root/ root@192.168.0.5:/tmp/


Синхронизация файлов с удаленной машины на локальную

# rsync -rvz root@192.168.0.5:/tmp/ /root/


Синхронизация с удаленной машиной имеющей нестандартный порт ssh

# rsync -rvz -e 'ssh -p 2222' root@192.168.0.5:/tmp/ /root/


Не перезаписывать измененные данные в месте назначения(destination). Довольно типичная ситуация, если файл изменен на удаленной стороне, а мы не хотим перезаписать его старой версией из источника.
Используем опцию -u

# rsync -ruvz /root/ root@192.168.0.5:/tmp/


Синхронизация только дерева каталогов(без файлов). Используем опцию -d для синхронизации дерева каталогов, без синхронизации файлов находящихся внутри каталогов(файлы из корневой директории все равно синхронизируются)

# rsync -dv /root/ root@192.168.0.5:/tmp/


Удаление файлов в точке назначения. Если файл не присутствует на источнике, но присутствует на конечной машине(куда мы копируем), можно удалять такие файлы в процессе синхронизации.
Для этого используется опция --delete

# rsync -rvz --delete /root/ root@192.168.0.5:/tmp/


Не создавать новые файлы на конечном сервере. Если необходимо обновлять(синхронизировать) только существующие файлы, не копируя вновь созданные, то используем опцию --existing

# rsync -rvz --existing /root/ root@192.168.0.5:/tmp/


Просмотр изменений между источником и назначением, используем ключ -i

# rsync --progress -avzi /root/ root@192.168.0.5:/tmp/
> - показывает, что файл был передан(синхронизирован)
f - показывает, что это файл
d - директория
s - показывает изменение размера
t - показывает изменение штампа времени
o - изменение владельца
g - изменение группы


Включение/исключение файлов/директорий с использованием шаблонов. Rsync позволяет задавать шаблоны для отбора нужных файлов и директорий
В примере скопируем все файлы начинающиеся с буквы n

# rsync -rvz --include 'n*' --exclude '*' /root/ root@192.168.0.5:/tmp/


Задаём максимальный размер передаваемого файла. Для этого используется опция --max-size

# rsync -rvz --max-size='10K' /root/ root@192.168.0.5:/tmp/


Синхронизировать только файлы из списка

# rsync --progress --files-from=rsync_files /root/ root@192.168.0.5:/tmp/