Мтс

Rsync: мощная утилита для быстрого, гибкого удаленного и локального копирования файлов

rsync использует соглашение о длинных именах параметров GNU. Многие из параметров командной строки имеют два варианта: один - короткий, а другой - длинный. Ниже это отражено в разделении запятой двух вариантов. Некоторые параметры имеют только длинный вариант. Знак "=" для параметров с дополнительным значением необязателен и может быть заменен на пробел.

    H, --help Печатает короткую подсказку, описывающую доступные параметры rsync

    Version Печатает номер версии rsync и завершается

    V, --verbose Этот параметр увеличивает сумму подробностей, которые выводятся в течение передачи. По умолчанию, rsync работает молча. Один -v будет иметь следствием выдачу списка переданных файлов и короткий итог в конце. Два -v раскрывают детали о пропущенных файлах и выдают несколько больше информации в завершение. Большее число может понадобится только при отладке rsync.

    Q, --quiet Уменьшает сумму подробностей о передаче, преимущественно, сообщения от удаленного сервера. Этот параметр полезен при вызове из cron.

    I, --ignore-times Обычно rsync пропускает файлы, чей размер и время модификации идентичны. Этот параметр отключает такое поведение "быстрой проверки".

    Size-only Обычно rsync пропускает файлы, чей размер и время модификации идентичны. С --size-only файлы будут пропускаться, если их размер одинаков, независимо от времени модификации. Это полезно при использовании rsync сразу после работы другой зеркалирующей системы, которая не сохранила точно времена.

    Modify-window При сравнение двух меток времени rsync рассматривает эти метки равными, если они расходятся в пределах значения modify_window. Обычно это значение ноль, но Вы можете найти полезным установку его в большую величину в некоторых случаях. На практике, при передаче на файловую систему Windows FAT, которая не может представлять время с точностью до секунды, --modify_window=1 весьма полезна.

    C, --checksum Принуждает на передающей стороне подсчитывать контрольные суммы всех файлов, используя 128-битный алгоритм MD4 перед передачей. Контрольная сумма затем проверяется на приемной стороне для того, чтобы пропускать передачи уже существующих файлов с одинаковыми размером и контрольной суммой. Этот параметр может приводить к некоторому замедлению.

Однако заметьте, что -a не сохраняет жесткие ссылки, потому что поиск многосвязных файлов дорог. Вам придется отдельно указывать -H.

    R, --relative Использовать относительные пути. Это значит, что посылаются полные пути, указанные в командной строке, а не последние части имен файлов. На практике это полезно, когда Вам нужно послать несколько различных каталогов за раз. Например, если указать команду:

rsync foo/bar/foo.c remote:/tmp/

то она создаст файл foo.c в /tmp на удаленной машине. Если вместо этого указать

Rsync -R foo/bar/foo.c remote:/tmp/

то файл создастся в /tmp/foo/bar/foo.c на удаленной машине - полный путь сохранится.

Выключает параметр --relative. Это нужно только если Вы хотите использовать параметр --files-from без подразумеваемого им поведения с включенным параметром --relative.

    No-implied-dirs

В комбинации с --relative все затрагиваемые каталоги в каждом пути явно не копируются как часть процесса передачи. Это делает передачу более оптимальной и также позволяет иметь непарные (см. пример ниже) символьные ссылки в подразумеваемых передачей путях. Например, если передается файл "/path/foo/file" с параметром -R, то по умолчанию rsync следит, чтобы "/path" и "/path/foo" в точности соответствовали каталогам/ссылкам на приемной стороне. Параметр --no-implied-dirs позволяет игнорировать несоответствие, когда "/path" - реальный каталог на одной стороне и символьная ссылка на другой. rsync не пытается с этим параметром что-либо менять в этом случае.

    B, --backup С этим параметром существовавшие до передачи файлы на приемной стороне переименовываются, как только соответствующий файл передан или удален. Вы можете контролировать, куда перемещаются файлы и какой суффикс (если нужно) добавляется к имени, используя параметры --backup-dir и --suffix.

    Backup-dir=DIR В комбинации с --backup указывает каталог, куда сохранять резервные копии. Это весьма полезно для инкрементального резервирования. Вы можете дополнительно указать суффикс с помощью --suffix (иначе резервные копии файлов будут сохранять свои исходные имена).

    Suffix=SUFFIX Этот параметр позволяет указать суффикс, отличный от суффикса по умолчанию, для резервных копий файлов при установленном --backup (-b). По умолчанию этот суффикс установлен в ~ без установки --backup-dir, установка которого сбрасывает этот суффикс в пустую строку.

    U, --update Указывает пропускать любые файлы, уже существующие на приемной стороне с более поздней датой, чем у исходных файлов.

    L, --copy-links Если обнаружена символьная ссылка, то на приемную сторону копируется файл, на который она указывает, а не такая же символьная ссылка.

    Copy-unsafe-links Копирует все объекты за пределами исходного дерева каталогов, на которые ссылаются символьные ссылки. Абсолютные символьные ссылки, а также, при выставленном --relative, любые символьные ссылки в пределах исходного дерева каталогов, рассматриваются как обычные файлы.

    Safe-links Указывает игнорировать любую символьную ссылку, которая относится к объекту за пределами конечного дерева каталогов. Все абсолютные ссылки также пропускаются. Использование этого параметра в комбинации с --relative может дать неожиданные результаты.

    H, --hard-links Указывает пересоздать жесткие ссылки на конечной стороне в соответствии с тем, что имеется на исходной. Без этого параметра жесткие ссылки обрабатываются как обычные файлы.

Обратите внимание, что rsync может обнаруживать жесткие ссылки, только если обе части ссылки попадают в список предназначенных к передаче файлов. С этим параметром передача может быть довольно-таки медленной, так что пользуйтесь им только при необходимости.

    W, --whole-file Этот параметр отключает дифференциальный алгоритм rsync"а и с ним весь файл передается как есть, целиком. Передача может происходить быстрее с этим параметром, если полоса пропускания между исходной и конечной машинами шире, чем полоса пропускания доступа к диску (особенно, если "диск" в действительности сетевая файловая система). Этот параметр включен по умолчанию, если и исходная, и конечная цели находятся локально.

    No-whole-file Выключает действие параметра --whole-file, если последний включен по умолчанию.

    P, --perms Копирует все права на приемную сторону точь в точь с оригиналом.

Без указания этого параметра каждый новый файл получает те права доступа, что имеет исходный с учетом umask, действующей на приемной стороне, в то время как все другие (включая обновляемые) сохраняют свои уже существующие разрешения (это то же поведение, что имеют другие утилиты копирования файлов, такие как cp).

    O, --owner Копирует атрибуты владельца на приемную сторону в точности с оригиналом. На большинстве систем только супер-пользователь имеет право устанавливать владельца файла. Нужно заметить, что если удаленный демон действует в chroot-окружении, то подразумевается наличие параметра --numeric-ids, потому что на удаленной стороне в этом случае нет доступа к именам пользователей в /etc/passwd.

    G, --group Копирует атрибуты группы на приемную сторону в точности с оригиналом. Если удаленная сторона не действует из-под супер-пользователя, то сохранятся только те значения групп, членом которых является пользователь приемной стороны (имеет значение имя группы, а не ее id).

    D, --devices Указывает передавать информацию о символьных и блочных устройствах для пересоздания их на приемной стороне. Доступно только супер-пользователю.

    T, --times Указывает передавать время модификации файлов и обновлять им соответствующий атрибут на приемной стороне. Обратите внимание, что если этот параметр не установлен, то становится неэффективной оптимизация передачи по исключению не изменявшихся по времени файлов; другими словами, пропуск -t или -a будет означать, что следующая передача будет осуществляться с параметром -I, для всех файлов будут сравниваться контрольные суммы, а в журнале появятся соответствующие сообщения о них, даже если они не изменялись.

    N, --dry-run Указывает не осуществлять никаких передач, а только сообщать о тех действиях, которые могли бы произойти.

    S, --sparse Пытаться эффективнее обработать фрагментацию файлов, чтобы сэкономить пространство на приемной стороне.

ЗАМЕЧАНИЕ: Не используйте этот параметр, если в точке назначения имеется файловая система "tmpfs" Solaris. Не представляется возможным правильно управлять поиском среди "дырок" (null regions), что заканчивается повреждением файлов.

    Existing Указывает не создавать никаких новых файлов - только обновить те, которые уже существуют на приемной стороне.

    Ignore-existing Указывает не обновлять файлы, которые уже существуют на приемной стороне.

    Max-delete=NUM Не удалять больше, чем NUM файлов и каталогов. Это полезно при зеркалировании очень массивных деревьев каталогов для предохранения от неприятностей.

    Delete Удалять любые файлы на приемной стороне, которых нет на передающей. Файлы, исключенные из передачи, исключаются также и из процесса удаления, если не указана --delete-excluded.

Этот параметр не оказывает никакого влияния, если не включено рекурсивное копирование каталогов. Этот параметр может быть опасным при неправильном использовании! Очень хорошим правилом может стать использование сначала холостого выполнения rsync (-n) для просмотра того, что за файлы могут удалиться и нет ли среди них важных. При возникновении каких-либо ошибок ввода-вывода на передающей стороне удаление любых файлов на приемной автоматически отключается. Это предотвращает от массивного удаления файлов на приемной стороне из-за временных ошибок файловой системы (например, NFS) на передающей. Это поведение можно отключить параметром --ignore-errors.

    Delete-excluded В дополнение к файлам, удаляемым на приемной стороне из-за отсутствия их на передающей, указывает удалять также любые исключенные параметром --exclude файлы на приемной стороне. Подразумевается наличие параметра --delete.

    Delete-after По умолчанию, rsync сначала выполняет удаление файлов перед копированием для пущей уверенности, что хватит свободного места на приемной стороне. Если же Вы хотите, чтобы удаление производилось после, то используйте --delete-after. Подразумевается наличие параметра --delete.

    Ignore-errors При удалении (--delete) форсирует процесс и игнорирует любые ошибки, даже ошибки ввода-вывода.

    Force Удалять каталоги при замене их не-каталогами, даже если они не пусты. Уместен только без

    Delete, потому что удаление происходит только каталогов одного уровня. Требует --recursive (который подразумевается, если -a) для значимого эффекта.

    B, --block-size=BLOCKSIZE Регулирует размер блока, используемый rsync-алгоритмом. См. техническое описание на предмет деталей.

    E, --rsh=COMMAND Позволяет выбрать альтернативную программу удаленной оболочки для осуществления соединения между удаленной и локальной копиями rsync. Обычно rsync сконфигурирован для использования ssh по умолчанию, но Вы можете предпочесть использовать rsh в локальной сети.

Если этот параметр используется с указанием пути вида host::module/path, то программа удаленной оболочки COMMAND будет использована для запуска rsync-сервера на удаленной стороне, а все данные будут передаваться через соединение удаленной оболочки, а не напрямую через соединение с rsync-сервером на "том" конце. См. раздел "ПОДКЛЮЧЕНИЕ К RSYNC-СЕРВЕРУ ЧЕРЕЗ УДАЛЕННУЮ ОБОЛОЧКУ". Аргументы командной строки для COMMAND разрешено указывать в форме, при которой COMMAND представляется для rsync в виде одного аргумента. Например:

    E "ssh -p 2234" (Заметьте, что ssh-пользователи могут альтернативно настраивать специфичные для своего окружения параметры подключения в своих.ssh/config файлах.)

Вы также можете выбирать программу удаленной оболочки через переменную окружения RSYNC_RSH, которая принимает тот же диапазон значений, что и -e. См. также --blocking-io, на которую влияет установка параметра -e.

    C, --cvs-exclude Этим параметром Вы исключаете широкий диапазон файлов, которые Вы не хотите передавать между системами. При этом используется тот же алгоритм, что использует CVS для определения игнорируемых файлов.

Список исключений изначально включает в себя:

RCS/ SCCS/ CVS/ .svn/ CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse_depinfo *~ #* .#* ,* *.old *.bak *.BAK *.orig *.rej .del-* *.a *.o *.obj *.so *.Z *.elc *.ln core затем файлы, перечисленные в $HOME/.cvsignore , добавляются к первоначальному списку, а также любые, перечисленные в переменной окружения CVSIGNORE (разделенные пробелами). В заключение, любой файл пропускается, если в том же каталоге есть файл.cvsignore, в котором есть соответствующий файлу шаблон. См. руководство по cvs(1) для дальнейшей информации. * --exclude=PATTERN Позволяет выборочно исключать определенные файлы из процесса передачи. Это наиболее полезно при рекурсивной передаче.

Вы можете использовать так много --exclude, как Вам заблагорассудится для построения произвольного списка исключаемых файлов. См. секцию "ШАБЛОНЫ ИСКЛЮЧЕНИЯ" за информацией о синтаксисе для этого параметра.

    Exclude-file=FILE Подобен параметру --exclude, но в отличие от него использует шаблоны исключаемых фалов, перечисленные в файле FILE. Пустые строки вместе со строками, начинающимися с ";" или "#", игнорируются. Если FILE указан как -, то список шаблонов читается со стандартного ввода.

    Include=PATTERN Указывает шаблоны для имен тех файлов, которые нельзя исключать из процесса. Полезен тем, что позволяет Вам строить довольно сложные правила включения/исключения.

См. секцию "ШАБЛОНЫ ИСКЛЮЧЕНИЯ" за информацией о синтаксисе для этого параметра.

    Include-from=FILE Указывает брать список обязательно включаемых в передачу файлов из файла FILE. Если FILE указан как -, то список шаблонов читается со стандартного ввода.

    Files-from=FILE Позволяет задать точный список файлов для передачи (который будет прочитан из указанного FILE или из стандартного ввода, если указан -). Это также меняет поведение rsync по умолчанию в целях облегчения процесса передачи заданных файлов и каталогов. Например, по умолчанию включается использование опции --relative (для отключения этого используйте --no-relative), на принимающей стороне создаются все указанные в списке каталоги (а не пропускаются безгласно, как если бы не использовалась опция -r), а поведение -a (--archive) не подразумевает наличие -r (--recursive) - его, при необходимости, нужно указывать явно.

Все имена файлов, прочитанные из FILE, считаются относительными к исходному каталогу -- первые слэши убираются и не допускаются ссылки "..", указывающие выше по дереву исходного каталога. Для примера рассмотрим:

    rsync -a --files-from=/tmp/foo /usr remote:/backup

Если /tmp/foo содержит строку bin (или даже "/bin"), каталог /usr/bin будет создан как /backup/bin на удаленной машине (но содержимое /usr/bin не должно передаваться, кроме тех случаев, когда объекты явно указаны в /tmp/foo, или в случае указания параметра -r). Также учитывайте, что эффект от --relative (включенный по умолчанию) касается копирования путей, прочитанных из файла, -- он не принуждает копировать полностью указанный исходный путь (/usr в примере). В дополнение, --files-from файл может быть прочитан с удаленной машины, а не локально, если указать перед именем файла "host:" (это должно соответствовать одному из концов передачи). Для краткости, можно указывать только префикс ":" для обозначения удаленного участника копирования. Например: rsync -a --files-from=:/path/file-list src:/ /tmp/copy эта команда должна скопировать все файлы указанные в файле /path/file-list, который расположен на удаленной машине "src".

    0, --from0 Говорит rsync, что имена файлов, читаемые извне, заканчиваются символом "\0", не NL, CR или CR+LF. Это касается параметров --exclude-from, --include-from, and --files-from.

    T, --temp-dir=DIR

Инструктирует использовать DIR как каталог временных копий передаваемых файлов на принимающей стороне. По умолчанию временные файлы создаются в каталоге назначения.

    Compare-dest=DIR Инструктирует использовать DIR на машине назначения как каталог, относительно содержимого которого осуществляется сравнение во время процесса передачи при условии отсутствия файлов в каталоге назначения. Это полезно для осуществления передачи в новое место, оставляя существующие файлы неприкосновенными, а затем перенося и очищая, когда все файлы были переданы (например, при перемещении каталогов в новое место и удалении старого, хотя при этом пропускаются не изменявшиеся файлы; см. также --link-dest).

Прим. переводчика: Существование этого параметра обусловлено необходимостью обновлять, например, дерево с взаимозависимыми файлами. В этом случае нежелательно осуществлять копирование на пофайловой основе. Параметр --compare-dest позволяет указывать временный каталог назначения, куда и копируются передаваемые файлы. По окончании процесса передачи rsync переименовывает оригинальное дерево назначения, затем переименовывает временный каталог DIR в оригинальный и, наконец, удаляет переименованный на первом шаге оригинальный каталог со "старыми" файлами. Этот параметр повышает полезность --partial, потому что частично переданные файлы будут оставаться в новом временном каталоге до тех пор, пока не окажутся целиком на месте. Если DIR задан как относительный путь, то он соотносится к каталогу назначения.

    Link-dest=DIR Ведет себя также, как и --compare-dest, но также создает жесткие ссылки в DIR на не изменявшиеся файлы в каталоге назначения. Файлы с измененными правами и владением не подвергаются этому. Как и в случае --compare-dest, если DIR задается относительным именем, то и действия осуществляются относительно каталога назначения.

    Z, --compress С этим параметром rsync сжимает все передаваемые данные файлов. Это полезно на медленных линиях. Метод сжатия, используемый при этом, тот же, что реализует gzip.

Заметьте, что при этом обычно достигается лучший коэффициент сжатия, чем может быть достигнут, используя сжатие программ удаленной оболочки или сжатие транспортного уровня, т.к. в процесс сжатия вовлекается вся информация, посылаемая в соответствующих блоках данных.

    Numeric-ids Вместо имен групп и пользователей посылаются их числовые id и ставятся в соответствие друг другу на обоих концах.

По умолчанию rsync использует имена групп и пользователей для определения владельца файлов. Специальные uid 0 и gid 0 никогда не отображаются через имена пользователей/групп, даже если не указана --numeric-ids. Если исходная система работает в ограниченном chroot-окружении или если пользователь или группа не существуют на приемной стороне, то используются исходные числовые id.

    Timeout=TIMEOUT Позволяет устанавливать максимальное время ожидания ввода-вывода в секундах. Если за указанный период ничего не передано, то работа rsync завершается. По умолчанию 0, что означает без ожидания.

    Daemon Запускает rsync как демон. Демон доступен для клиентов через синтаксис host::module или rsync:/\/host/module. Если стандартным вводом является сокет, то rsync полагает условием запуск от inetd, иначе он отключается от текущего терминала и становится фоновым процессом-демоном. Демон читает конфигурационный файл (rsyncd.conf) на каждое соединение от клиентов и соответственно отвечает на их запросы.

    No-detach При запуске демоном этот параметр инструктирует rsync не отключаться от терминала и стать фоновым процессом. Он требуется при запуске службой под Cygwin, и также может быть полезен, если rsync находится под наблюдением таких программ как daemontools или AIX"s System Resource Controller. --no-detach также рекомендуется к применению при запуске rsync под отладчиком. Этот параметр не имеет никакого эффекта при запуске от inetd или sshd.

    Address По умолчанию rsync использует групповой адрес 0.0.0.0, когда запускается как демон с --daemon или при подключениях к rsync-серверу. --address позволяет Вам указать точный IP-адрес (или хост-имя) для этого. Это делает возможным виртуальный хостинг в сочетании с --config.

    Config=FILE Указывает альтернативный файл конфигурации. Это имеет значение только если указан --daemon. По умолчанию /etc/rsyncd.conf за исключением случая, когда демон запускается поверх удаленной оболочки и удаленный пользователь не root. В последнем случае rsyncd.conf по умолчанию располагается в текущем каталоге (обычно $HOME).

    Port=PORT Указывает альтернативный номер TCP порта для работы, а не 873 по умолчанию.

    Blocking-io Указывает использовать блокирующий ввод-вывод при запуске поверх программы-транспорта удаленной оболочки. Если этой программой являются либо rsh, либо remsh, то rsync использует блокирующий ввод-вывод по умолчанию, иначе по умолчанию используется неблокирующий ввод-вывод. (Заметьте, что ssh предпочитает неблокирующий.)

    No-blocking-io Отключает действие --blocking-io, когда оно активировано по умолчанию.

    Log-format=FORMAT Позволяет Вам точно указывать, что rsync сообщает (журналирует) на стандартный вывод на по-файловой основе. Формат сообщений определяется тем же соглашением, что и для параметра журналирования в файле rsyncd.conf.

    Stats Указывает выводить подробную статистику по передаче файлов, позволяя Вам оценить, насколько эффективен алгоритм rsync относительно Ваших данных.

    Partial По умолчанию rsync будет удалять все частично-переданные файлы в случае прерывания передачи. В некоторых случаях более желательно сохранять такие файлы. Используя параметр --partial, можно указать rsync сохранять частично-переданный файл, что может ускорить передачу всего файла при последовательном повторении таких передач.

    Progress Указывает выводить rsync информацию о ходе передачи. Скучающему пользователю будет на что посмотреть. Подразумевает наличие --verbose без увеличения подробностей.

    P Эквивалент для --partial --progress . Автор нашел для себя частым использование этой комбинации, поэтому для облегчения ввел отдельный параметр.

    Password-file Позволяет Вам предоставить пароль для доступа к rsync-серверу, сохранив его в файле. Заметьте, что этот параметр полезен только при использовании для доступа к rsync-серверу встроенного rsync-транспорта, при использовании программы удаленной оболочки он бесполезен. Файл не должен быть всем доступен на чтение. Он должен содержать только пароль, в одну строчку.

    Bwlimit=KBPS Позволяет указать максимальную скорость передачи, килобайт в секунду. Этот параметр наиболее эффективен при использовании rsync для передачи больших файлов (несколько мегабайт и выше). В соответствии с природой rsync-передач передается обычный блок данных, затем если rsync определяет, что скорость выше установленного, то он вводит задержку перед посылкой следующего блока. В результате средняя скорость передачи равна указанному пределу. Нулевое значение означает отсутствие этого ограничения.

    Write-batch=PREFIX Генерирует набор файлов, которые могут быть переданы в пакетном обновлении. Каждое имя файла в наборе начинается с PREFIX. См. раздел "ПАКЕТНЫЙ РЕЖИМ" за деталями.

    Read-batch=PREFIX Применяет ранее сгенерированный пакет изменений, используя тот набор файлов, чьи имена начинаются с PREFIX. См. раздел "ПАКЕТНЫЙ РЕЖИМ" за деталями.

Опции rsync

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

    V - подробный вывод информации о происходящем. Можно указывать несколько раз. Позволяет развлечься разглядыванием кучи внутренней информации о пересылки данных в процессе обновления.

    Inplace - обновление образа производится без создания временного файла. Полезно при недостатке места, а также в случае нестабильной связи: --inplace позволяет продолжить обновление образа с того места, на котором обновление прекратилось из-за обрыва связи. Использование этой опции слегка снижает эффективность работы алгоритма расчёта разницы между файлами.

    H, --human-readable - показывать размеры переданных/обработанных данных в удобном виде (вместо байт), например 234K или 1,35G

    Z, --compress - включить сжатие передаваемых данных.

    Progress - показывать индикацию процесса обработки файла.

    Partial - не удалять локальный файл перед синхронизацией

    P - тоже что и --partial вместе с --progress

    Stats - выводить статистику - показывает сколько было принято/передано, сколько удалось сэкономить и т.п.

Rsync является утилитой для синхронизации файлов и их резервного копирования. Она работает на многих *nix системах).

Ограничение rsync состоит в том, что данные не могут копироваться между 2 удалёнными (remote) системами. В этом случае Вам пришлось бы скопировать данные с одной удалённой системы, а потом перенести на другую.

В aptosid у Вас есть различные возможности запускать процесс синхронизации. Вы можете запускать rsync командой в терминале, или установить дополнительные пакеты из Debian Sid:

Чтобы установить deb пакет:
apt-get install luckybackup
Инструкция по использованию в терминале

В следующем разделе мы представляем rsync, возможности этой программы и несколько примеров, как rsync может использоваться с собственным скриптом резервного копирования.

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

rsync может копировать данные:
* с локальной системы на локальную систему,
* с локальной системы на удалённую (remote) систему,
* с удаленной (remote) системы на локальную систему.

При этом rsync использует клиент ssh (входит в основную установку), либо rsync-daemon, которые работают на исходной и на целевой системе. В manpages rsync говорится, если системы могут связываться по ssh, ssh также может использоваться для rsync.

Ограничение с rsync состоит в том, что данные не могут копироваться между 2 удалёнными (remote) системами. В этом случае Вам придётся скопировать данные с одной удалённой системы, а потом перенести с rsync на другую.

Чтобы пояснить это, рассмотрим следующий пример с 3 компьютерами:

Neo – локальная система morpheus – удаленная система trinity – удаленная система

Каждый пользователь знает имя другого пользователя, и rsync работает исключительно на neo, локальной системе:

Имя пользователя на neo является cuddles, Имя пользователя на morpheus является tartie, Имя пользователя на trinity является taylar.

Целью является синхронизация каталогов /home/$user/Files:

Neo:/home/cuddles/данные с morpheus и trinity, morpheus:/home/tartie/данные с neo и trinity, trinity:/home/taylar/данные с neo и morpheus.

Теперь возникает проблема, что rsync не может быть применён между 2 удалёнными компьютерами:

Neo-> morpheus - с локальной на удалённую, получится neo-> trinity - с локальной на удалённую, получится morpheus-> neo - с удаленной на локальную, получится trinity-> neo - с отдаленной на локальную, получится morpheus-> trinity - нельзя, с удалённой на удаленную trinity-> morpheus - нельзя, с удалённой на удаленную

Чтобы обойти это ограничение, поступаем как указано ниже:

Morpheus --> trinity - станет: morpheus --> neo и neo --> trinity trinity --> morpheus - станет: trinity --> neo и neo --> morpheus

Этот дополнительный шаг не изменяет ничего в конечном итоге. Тем не менее, указывает на то, что:

Это ограничение с rsync должно быть учтено при планировании процесса резервного копирования.

Применение имён хоста с именами хоста в rsync.

Применение имён хостов neo, morpheus, и trinity, вместо IP-адресов, может позволить сделать процесс копирования нагляднее и Вам будет легче разобраться.

Для этого Вы должны отредактировать /etc/hosts и вставить имена хостов и ему принадлежащие IP-адреса. Таким образом в нашем примере файл /etc/hosts будет выглядеть так:

192.168.1.15 neo 192.168.1.16 morpheus 192.168.1.17 trinity

Первая строка переводит IP-адрес 192.168.1.15 на “neo”, вторая 192.168.1.16 на “morpheus” и третья 192.168.1.17 на “trinity”. После записи может использоваться дополнительно имя хоста вместо IP-адреса. Этот особенно удобно, если изменяются распределённые IP-адреса, например, у "neo" с 192.168.1.15 на 192.168.1.25 Это облегчает работу со скриптами, так как они в случае изменения IP-адресов не должны изменяться, а только файл /etc/hosts.

Два способа использования rsync.

Первый способ - данные “толкают (push)” на целевую машину; другой - данные “вытягиваются (pull)” с источника. Каждый метод имеет свои за и против, которые будут рассмотрены ниже. В нашем примере используются локальная и удаленная системы, чтобы более отчетливо объяснить терминологию.

“push” - локальная система несет исходные каталоги и файлы, целью является удаленная система. Команда rsync запускается на локальной системе и "толкает" данные на целевую систему.

Преимущества:
* Больше чем одна исходная система может иметь резервное копирование на целевой. * Процесс резервного копирования на нескольких компьютерах может проходить одновременно. * Если система заканчивает процесс резервного копирования быстрее, это позволяет использовать ресурсы для других заданий.

Недостатки:
* Если скрипт используется с синхронизацией через cron, то crontab-ы должны задаваться на каждой системе. При модификации скрипта необходимо вносить соответствующие изменения на каждой системе, при изменениях календарного плана должен изменяться каждый crontab на каждом компьютере. Вследствие этого административное обслуживание становится очень громоздким и запутанным. * Процесс резервного копирования не возможно проверить, был ли целевой раздел смонтирован целевой системой. Если он не смонтирован, резервного копирования не произойдёт.

“pull” - удаленная система несет исходные каталоги и файлы, целью является локальная система. Команда rsync запускается на локальной системе и "вытягивает" данные из исходной системы.

Преимущества:
* Система станет сервером, который управляет всеми процессами резервного копирования всех других систем. Процессы резервного копирования централизуются.
* При применении скрипта, он должен находится только на одной системе, что упрощает любые модификации. При изменении календарного плана должен изменяться только один crontab.
* Скрипт может проверить, смонтирован ли целевой раздел и при случае его смонтирует.

Синтаксис rsync (часть из "man rsync"):
rsync ... SRC ... DEST rsync ... SRC ... HOST:DEST rsync ... SRC ... HOST::DEST rsync ... SRC ... rsync://HOST[:PORT]/DEST rsync ... SRC rsync ... HOST:SRC rsync ... HOST::SRC rsync ... rsync://HOST[:PORT]/SRC
Рабочие примеры команд rsync:

Объяснение составных частей этой команды:

Источник: (/путь/файл) morpheus:/home/tartie, целью является: /media/sda7/SysBackups/morpheus/home

Каталог /home/tartie (включая подкаталоги) будет сохранен в /media/sda7/SysBackups/morpheus/home, что после rsync будет выглядеть таким образом:

/media/sda7/SysBackups/morpheus/home/tartie

Обратите внимание, копируется только каталог /tartie, в путь указанный rsync /media/sda7/SysBackups/morpheus/home. "Источник" выбирает только, откуда прибывают данные, а "Цель" указывает rsync, куда должны копироваться данные из "источника" он воспринимает его уже не как /home/tartie, а просто /tartie, которого он направить в /media/sda7/SysBackups/morpheus/home. Ещё пример:

Rsync [...] /home/user/data/files /media/sda7/SysBackups/neo

Здесь будет копироваться исходный каталог /files и все в нём находящиеся каталоги и файлы в целевую папку /media/sda7/SysBackups/neo/ - а не в /media/sda7/SysBackups/neo/home/user/data/files.

На это необходимо обращать внимание при использовании резервного копирования с rsync.

Пояснення опцій (чорновий переклад з англомовного "man rsync"):
-a для способа с архивацией. manpage по этому поводу говорит: “проще говоря, этот метод, для создания рекурсивного резервного копирования и копирования почти всех атрибутов. Не сохраняются только жёсткие ссылки из-за сложности процесса. Опция -a соответствует: -rlptgoD, что это значит: -r = rekursiv - копировать подкаталоги и файлы в них из "исходного места". -l = Links - символические ссылки восстанавливаются в пункте назначения. -p = права - права идентичны с ними в исходном месте. -t = временной штамп - временной штамп в исходном месте идентичен с ним. -q = quiet - минимальный вывод информации. Большее количество информации получают с опцией -v после опции -a. Выполнение без какого-либо ответа будет достигнуто без постановки опции -v. -o = владелец - если rsync проводится как root, владельцы исходных файлов остаются соответствующим образом сохранёнными. -D = соответствует этим обеим командам: --devices --specials --devices = символьные файлы и файлы блочного устройства будут копироваться в удаленную систему, чтобы затем восстанавливаться. Нужно обратить внимание, что без опции --super , опция --devices не работает. --specials = rsync копирует специальные файлы как sockets и fifos. --g: группы сохраняются соответственно исходным файлам. -E: сохраняется атрибут "выполнимо". -v: для подробного вывода. Если подробности не важны, эта опция может быть опущена. Тем не менее, если необходимо видеть, что происходит, эта опция очень полезна. -z: копируемые данные архивируются, что ускоряет копировальный процесс, так как перемещённый объем данных будет меньше. --delete-after= целевые каталоги или целевые файлы, которых больше нет в источнике, удаляются после перемещения, а не перед этим. В случае проблем или катастроф будет “after” использован, "delete” предотвращает использование лишнего пространства больше ненужными файлами и каталогами в пункте назначения. -- exclude = указывает на файлы или каталоги исключаемые из копировального процесса. В примере, --exclude = “*~” были бы ВСЕ файлы с окончанием “~” из процесса резервного копирования исключены. С одной опцией --exclude может передаваться только один аргумент, при большем количестве аргументов исключения необходимо использовать несколько опций --exclude.
Дополнительные команды:
-c - проводит дальнейшие сравнительные проверки, что требует большого времени. Так как rsync уже проводит сравнительные проверки, эта команда не была интегрирована в --a из-за её избыточности, а также для экономии времени. В этой опции, как правило, нет нужды. --super - целевая система попытается проводить действия суперпользователя (root) (смотрите manpage) --dry-run - тестовый запуск: просто показывает, что должно копироваться. Никакие файлы не копируются.

И напоследок, варианты указания исходных и целевых каталогов.

Примерные команды:
rsync -agEvz --delete-after --exclude=”*~” morpheus:/home/tartie /media/sda7/SysBackups/morpheus/home

Эта команда копирует все каталоги и файлы ниже от /home/tartie на систему "morpheus" и размещает их в этот каталог /media/sda7/SysBackups/morpheus/home. Структура каталога tartie сохраняется.

Rsync -agEvz --delete-after --exclude=”*~” /home/tartie neo:/media/sda7/SysBackups/morpheus/home

Это - противоположная команда первого примера. Она "двигает" каталог /home/tartie и его содержание в указанный каталог системы "neo" - отметим, что систему рассматривают как "удаленную (remote)", если ставится “:” двоеточие перед путем.

Rsync -agEvz --delete-after --exclude=”*~” /home/cuddles /media/sda7/SysBackups/neo/home

Это - процесс резервного копирования на локальном компьютере. Здесь нужно обращать внимание на то, что никакое двоеточие не установлено. Локальный каталог /home/cuddles копируется на /media/sda7/SysBackups/neo/home на том же самом локальном компьютере.

rsync с многими опциями --exclude:
rsync -agEvz --delete-after --exclude=”*~” --exclude=”*.c” --exclude=”*.o” "/*" /media/sda7/SysBackups/neo

Эта команда копирует все из каталога root локальной системы (все каталоги и файлы) на /media/sda7/SysBackups/neo - исключенными из этого являются все файлы и каталоги, которые кончаются на “~”, “.c” или “.o”.

Замена имени хоста IP-адресом:

Первая команда установлена с методом имени хоста, второй с методом IP-адресов. Обе команды идентичны в своём выполнении:

Rsync -agEvz --delete-after --exclude=”*~” morpheus:/home/tartie /media/sda7/SysBackups/morpheus/home rsync -agEvz --delete-after --exclude=”*~” 192.168.1.16:/home/tartie /media/sda7/SysBackups/morpheus/home

Метод имён хоста не должен применяться, но по нашему мнению он упрощает резервное копирование с rsync в сетях.

class="highlight-2">Невозможная команда:

rsync -agEvz --delete-after --exclude=”*~” morpheus:/home/tartie trinity:/home

Как было уже сказано, ограничение rsync в том, что этой командой нельзя копировать между 2 удаленными компьютерами. На это мы бы хотели еще раз обратить внимание.

Мы надеемся, с этим маленьким руководством Вам будет легче приступить к использованию rsync, это очень удачная программа резервного копирования.

тащит всю команду 24 октября 2011 в 00:52

Rsync: мощная утилита для быстрого, гибкого удаленного и локального копирования файлов

  • Чулан *

Rsync разработан для замены rcp – древней программы для удаленного копирования под Unix. Благодаря широким возможностям синхронизации и передачи файлов, rsync часто применяется для создания зеркал.
Использование хитроумного алгоритма, позволяет rsync передавать только изменения в файлах, причем для выявления изменений ему не надо сравнивать два файла. Кроме того, rsync производит сжатие на лету, позволяя тем самым передавать файлы с максимальной эффективностью.
Кроме вышеописанных вкусностей, rsync обладает также и несколькими полезными возможностями обеспечения безопасности. Он поддерживает ssh – рекомендованный протокол для безопасной передачи данных; перед обработкой информации производит ее запись во временный файл, чтобы ничего не случилось с оригиналом, наконец, он поддерживает специальный режим безопасной отладки команд.
Rsync прост в использовании, но не является программой «click-and-play». Это -мощный инструмент, который может быть очень полезным, но не стоит забывать об осторожности, так как его с помощью легко что-нибудь испортить.

Синтаксис утилиты
Синтаксис утилиты простой и довольно обыденный.
rsync [опции] источник [приемник]
Указав только источник, мы увидим список файлов без операции копирования.

Опции и примеры
Для простоты понимания, операции синхронизации привожу сперва локально.
Быстрый способ синхронизировать два каталога, это использовать опцию -a :
rsync -a foobar_src/ foobar_dst/
В данном случае файлы и директории из источника скопируются в приемник, при этом, если там были файлы, то совпавшие по имени будут перезаписаны, а остальные не тронуты.

Опция -a задает архивный режим работы утилиты, и является эквивалентом набора опций:
-r, --recursive - рекурсивный режим;
-l, --links - пересоздание symlinks , это значит, что символические ссылки будут так же переноситься;
-p, --perms - перенос прав;
-t, --times - передача времени модификации и его обновление на удаленной системе. Этот ключ должен быть установлен для точной синхронизации;
-g, --group - установить группу конечного файла таким же, как и у исходного;
-o, --owner - установить владельца конечного файла таким же, как и у исходного;
-D, - same as --devices --specials - установить тип файла устройства и файла специального типа таким же, как у исходного.
В итоге получаем копию директории источника. Кстати, это можно использовать при переносе ОС на другой винчестер, подправив /etc/fstab, установив/переустановив grub на новом винте - получаем рабочую систему, но это уже другая тема.

Для вывода информации о работе утилиты, существует опция -v, --verbose . Чем больше опций -v , тем боле информативным будет вывод утилиты. Максимальная информативность достигается при четырех опциях -v, --verbose .

Если у нас содержится в директории источника актуальная информация, то чтобы не засорять приемник информацией, которая в процессе работы была удалена или перемещена в источнике, нужно старые файлы и директории удалить. Для этого есть несколько опций удаления, каждая из которых предоставляет свой алгоритм удаления. Их аж шесть!
--del - сокращенная форма --delete-during ;
--delete - просто удалить посторонние файлы из приемника;
--delete-before - приемник удаляет перед передачей;
--delete-during - приемник удаляет в процессе передачи, но не перед;
--delete-delay - отложенное удаление/найти файлы для удаления в процессе передачи, но удалить после передачи;
--delete-after - приемник удаляет после передачи, но не перед ней;
--delete-excluded - так же удалить исключенные файлы в приемнике, для этого задается шаблон (--exclude=PATTERN).

Допустим у нас на приемнике есть более свежие файлы, и мы не хотим что бы они были перезаписаны старыми из источника, то для этого применяется ключ -u, --update .
-u, --update - пропустить файлы, если на приемнике файл новее.
Не стоит пугаться если изменились даты директорий, т.к. сами файлы небыли перезаписаны.

Порой файлы могут повредится или быть модифицырованы, но совпадать и датой и размером. То можно использовать проверку контрольной суммы, опция -c, --checksum .

Моей задачей было разобраться, как сделать резервную копию коллекций фотографий, музыки, наработок по университету и работе. При этом в источнике информация всегда актуальная, а то что удалено - мусор. Пример для решения моей задачи:
rsync -auvv --delete-during foobar_src/ foobar_dst/
Это обновит мой приемник, если он был уже чем то заполнен - вычистит то, чего нет в источнике, но не затронет файлы которые поновее, выведет статистику и состояние по каждому файлу.

Удаленная работа
Кроме того, очень полезным будет его способность работать через ssh. Что обеспечивает шифрование канала, что очень важно, если вы синхронизируете два сервера в сети интернет. Для уменьшение трафика, rsync так-же умеет сжимать данные, при передаче по сети.
Необходимы следующие опции:
-e - задать удаленный шелл для использования;
-z - сжимать передаваемые данные, либо задать:
-compress-level=9 - сжатие с установкой уровня компрессии.

Пример копирования с удаленного хоста по протоколу ssh:
rsync -avv --delete-during -compress-level=9 -e "ssh -p remote_ssh_port" user@host:/dir/to/foobar_src foobar_dst/
При этом, на стороне источника нужно иметь установленную утилиту rsync.

Надеюсь эта информация будет полезна многим. Больше информации про утилиту rsync вы сможете найти в ее же документации, благо она хорошо описана.
Там же вы можете найти информацию о том, как поднять дэмон rSync для непосредственного подключения без использования удаленного ssh шелла, а так же описание множества других опций на любой вкус и цвет.

Теги: rsync, копирование, резервирование файлов, синхронизация файлов

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

Rsync примеры синхронизации: основное использование

Давайте создадим две директории внутри / tmp, называемые «foo» и «bar», и создадим большое количество фиктивных файлов внутри / tmp / foo

mkdir /tmp/foo /tmp/bar
for i in `seq 1 100`;do touch /tmp/foo/file$i;done

Теперь у нас есть 100 файлов в / tmp / foo; / Tmp / bar все равно не должно быть. Мы можем использовать rsync для копирования всех файлов из / tmp / foo в / tmp / bar:

rsync /tmp/foo/* /tmp/bar

Используя базовое файловое расширение, мы можем захватить все файлы и скопировать их в другой каталог. Что делать, если есть каталог внутри / tmp / foo? Он не будет передан. Нам нужно будет использовать флаг -r (-рекурсивный), чтобы пройти по каталогу, передав каждый файл внутри:

rsync -r /tmp/foo/ /tmp/bar

Это очень простой пример и даже не затрагивает реальную силу команды rsync. Существуют флаги для сохранения разрешений, владельцев, групп, символических ссылок и т. Д. Поскольку эти флаги так часто используются, флаг -a (-archive) действует как псевдоним, чтобы включить их все, включая -r.

Очистите / tmp / bar, создайте символическую ссылку на один файл в / tmp / foo и используйте rsync для рекурсивной копирования всех файлов:

find /tmp/bar -delete
ln -s /tmp/foo/file100 /tmp/foo/file101
rsync -r /tmp/foo/ /tmp/bar

Мы видим, что rsync опустил символическую ссылку, которую мы создали. Снова очистите / tmp / bar, и давайте попробуем еще раз, на этот раз с использованием флага -a:

find /tmp/bar -delete
rsync -a /tmp/foo/ /tmp/bar

Используйте chown для изменения права собственности на файл в / tmp / foo другому пользователю и скопируйте файлы, используя -a to / tmp / bar. Запустите ls -l и обратите внимание, что право собственности перемещено вместе с файлом. Удобный материал!

ПРИМЕЧАНИЕ . Существует разница между включением косой черты (/) в конце пути источника и ее отсутствием; Первый передаст все файлы ВНУТРИ указанного каталога, в то время как последний передаст сам каталог со всеми файлами внутри.

The -a Flag

Как мы и говорили ранее, в этой статье мы разберем Rsync примеры синхронизации и команды. Но для того чтобы их выполнять, нужно знать основы для набора флагов.
Ранее мы упоминали, что флаг -a (-archive) является псевдонимом для набора других флагов -rltpgoD. Сломанный, каждый флаг выполняет следующие действия:

R — Рекурсивный

L — Перенести любые обнаруженные символические ссылки

T — Сохранять метки времени

P — Сохранять разрешения

G — Сохранять группы

O — Сохранять право собственности

D — Сохранение блоков и символьных устройств

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

H — Удобный для чтения формат файлов

Все любят отзывы

Флаг -v (–verbose) даст вам больше информации о состоянии передачи, включая краткое изложение в конце, которое будет выглядеть примерно так:

$ rsync -av foo/ bar
building file list … done
sent 1040 bytes received 20 bytes 2120.00 bytes/sec
total size is 7 speedup is 0.01

Если вы хотите получить больше статистики, запустите rsync с флагом -stats. Это даст вам подробный список общего количества файлов, переданных файлов, контрольных показателей и даже усредненной скорости передачи. С другой стороны, -q (-quiet) будет подавлять весь вывод, который может использоваться для скриптов, когда обратная связь не требуется.

Удаленные передачи сделаны просто

Истинная сила rsync заключается в способности выполнять не только локальные передачи, но и отдаленные передачи. Если вы раньше использовали scp, синтаксис для удаленных передач очень похож:

rsync @:

В качестве примера, rsync, использующий этот синтаксис, будет выглядеть следующим образом:

rsync -avh /tmp/foo/ root@host2:/tmp/bar

Обратите внимание на: (двоеточие) между удаленным сервером и удаленным путем; Это необходимо.

Больше вариантов

Rsync поставляется с большим списком доступных опций, слишком много, чтобы переходить в одну статью. Последними флагами, которые мы рассмотрим, являются флаги -exclude, -exclude-from, -update и -delete

Исключить файлы на основе шаблона. Rsync еще не поддерживает регулярное выражение, поэтому работает только стандартное сопоставление файлов и работа с глобусами

Исключить файлы, перечисленные в файле с разделителями строк.

Обновлять файлы в месте назначения ТОЛЬКО, если исходная копия была изменена совсем недавно

Удалите файлы в месте назначения ТОЛЬКО, если исходная копия больше не существует.

Альтернативные порты SSH

Если вы изменили порт SSH на своем сервере, вам нужно будет указать rsync использовать новый номер порта.

Пример с обычным портом SSH:
rsync -azh /local/path/file [email protected]:/remote/path/file

Пример с альтернативным портом SSH (22334):
rsync -azh /local/path/file -e ‘ssh -p 22334’ [email protected]:/remote/path/file

Удаленные передачи без пароля

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

Если у Вас остались вопросы по теме «Rsync примеры синхронизации» - пишите их в комментарии. Обязательно укажите какую версию операционной системы вы используете, чтобы мы могли помочь с вашим вопросом.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter .

rsync в основном предназначен для удаленной синхронизации.
rsync используется для выполнения операций резервного копирования в UNIX / Linux.
rsync — это утилита, которая используется для синхронизации файлов и директорий двух различных локаций. Считается как одна из самых эффективных. Резервные копии можно создавать как на локальном сервере так и на удаленном.

Некоторые важные возможности rsync

Скорость : В первый раз, rsync реплицирует полностью весь контент между источниками и каталогами назначения. В дальнейшем, rsync перемещает только измененные блоки или байты в назначенную локацию, причем делает это действительно быстро. Также имеется возможность ограничить скорость синхронизации.
Безопасность : rsync позволяет шифровать информацию, используя ssh протокол в процессе перемещения данных.
Меньшая пропускная способность : rsync использует блочное сжатие и распаковку данных на приемной и отправляющей стороне в указанном порядке, возможность «докачки» файлов. Таким образом пропускная способность будет использоваться rsync-ом всегда гораздо меньше по сравнению с остальными протоколами передачи данных.

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

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

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

Push (копирование файлов с локальной машины на удаленную)
Обязательным параметром является «ИСТОЧНИК», их может быть несколько.

Рассмотрим несколько примеров:

Примеры:

Скопируется на сервер 192.168.1.1 содержимое папок /backup/file1/ /backup/file2/ в папку backup

В этом примере уже скопируются сами папки

# rsync -zavP /backup/file1/ /backup/file2/ [email protected]:/backup

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

# rsync -zavP --bwlimit=100 /backup/file1/ [email protected]:/backup

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

# rsync -сzavP /backup/file1/ [email protected]:/backup

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

# rsync -zavP [email protected]:/backup /backup/file1/

Как исключить файл или директорию при копировании?
Исключаем директорию temp файл test.txt и все файлы с расширением tgz расположенные в /home/data

# rsync -azVP --exclude temp/ --exclude test.txt --exclude *.tgz /home/data/ [email protected]:/backup

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

# rsync -azVP --exclude /temp/ --exclude test.txt --exclude *.tgz --force --delete /home/data/ [email protected]:/backup

Исключаем директорию /temp файл test.txt и все файлы с расширением tgz расположенные в /home/data

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

# rsync -zavP "-e ssh -p 12345" /var/lib/ [email protected]:/backup # rsync --progress -avz -e ssh /home/ root@сайт:/home/

Копирует с локального хоста содержимое папки home, на хост сайт в папку home. Для аутентификации используется учетная запись root. В случае обрыва соединения во время копирования, достаточно просто повторить команду и копирование начнется с того места, когда произошел обрыв соединения.

Rsync --progress --bwlimit=10 -avz -e ssh /home root@сайт:/home/

Небольшое изменение. Удаляем «/» после папки home и у нас уже копируется сама папка вместе со всем содержимым. Так же ограничиваем скорость копирования до 10кБ/с, что бы не забивать интернет канал.

Опции:
-a, --archive режим архива, при использовании заменяет несколько ключей (-rlptgoD)

— n отладочный режим
-t , --times – обновлять время модификации файла на приёмной стороне. При отсутствии этой опции или -a становиться неэффективной оптимизация передачи по времени изменения файлов
-r рекурсивно. (Копирует все файлы, включая вложенные каталоги)
-l при копировании сохраняет символические ссылки
-p сохраняет права на файлы
— t сохраняет время изменения файлов
— g сохраняет группу файлов
— o сохраняет владельца файлов (работает только из под root)
— D сохраняет файлы устройств и специальны файлы
— P, отображение прогресса при копировании;
— q, не выводит сообщения об ошибках;
— с, --checksum проверка файлов по контрольной сумме, а по размеру и дате модификации. Дополнительная нагрузка на процессор, сильно увеличивает время синхронизации;
— size-only – использование для сверки только размер файлов
— ignore-errors, продолжение копирования и удаления даже после появления ошибок;
— max-delete, максимальное число удаляемых за один раз файлов и каталогов;
— files-from=FILE, задается список файлов и директорий для копирования в файле;
— numeric-ids – не транслировать имена владельца и группы в цифровые UID и GID, оставить на удалённой стороне номера как есть
— R – использовать относительные пути при создании символических ссылок
— A, --acls – сохранение списков ACL
— H, --hard-links – сохранение жестких ссылок
— S, --sparse – оптимизировать разреженные файлы
— x, --one-file-system – не выходить за пределы текущей точки монтирования
— u, update пропускать обновление файлов, которые новее исходных
— h, human-readable вывод цифр в читаемом виде (Кб, Мб, Гб)
-v verbose подробные вывод операций (отладочной информации)
-z сжатие файлов при копировании
— compress-level - уровень сжатия
— e ssh использовать при копировании ssh

Progress показывает прогресс выполнения копирования
--bwlimit =KBPS ограничивает скорость передачи файлов (Kbit/s)
--del – удалить файлы в папке назначения которых нет в источнике (точная копия)
– –delete-after удалить после. Если в основном месте был удален какой-то файл, или каталог,
то после синхронизации в backup сервере, в каталоге он тоже будет удален
- - password-file Путь, где находится файл с паролем.

Перед тем как запустить скрипт на рабочей машине, опробуйте всё в отладочном режиме, для этого используется ключ -n . В этом случае, rsync не будет менять или удалять файлы, но покажет, весь ход работы.

Rsync -a --progress /home/ /mnt/export/

Копирует внутри одного компьютера содержимое папки home, в папку /mnt/export/. Подобное копирование применяется когда необходимо сохранить все права на перемещаемые файлы.