<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://178.140.10.58:8080/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://178.140.10.58:8080/feed.php">
        <title>Библиотека знаний - rsync</title>
        <description>Заметки IT программиста</description>
        <link>http://178.140.10.58:8080/</link>
        <image rdf:resource="http://178.140.10.58:8080/lib/exe/fetch.php?media=wiki:dokuwiki.svg" />
       <dc:date>2026-04-17T10:37:05+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://178.140.10.58:8080/doku.php?id=rsync:%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2"/>
                <rdf:li rdf:resource="http://178.140.10.58:8080/doku.php?id=rsync:rsync_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F"/>
                <rdf:li rdf:resource="http://178.140.10.58:8080/doku.php?id=rsync:script1"/>
                <rdf:li rdf:resource="http://178.140.10.58:8080/doku.php?id=rsync:script2"/>
                <rdf:li rdf:resource="http://178.140.10.58:8080/doku.php?id=rsync:start"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://178.140.10.58:8080/lib/exe/fetch.php?media=wiki:dokuwiki.svg">
        <title>Библиотека знаний</title>
        <link>http://178.140.10.58:8080/</link>
        <url>http://178.140.10.58:8080/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
    </image>
    <item rdf:about="http://178.140.10.58:8080/doku.php?id=rsync:%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2">
        <dc:format>text/html</dc:format>
        <dc:date>2011-10-21T10:43:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title></title>
        <link>http://178.140.10.58:8080/doku.php?id=rsync:%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2</link>
        <description>
&lt;p&gt;
rsync {OPTIONS} {FROM} {TO}
Копирование содержимого директории /local/folder/ с локальной машины на удаленный сервер user@server, в директорию /remote/folder/
&lt;/p&gt;

&lt;p&gt;
rsync -e &amp;quot;ssh -p 22&amp;quot; –progress –partial –force -avz /local/folder/ user@server:/remote/folder/
Важно обратить внимание на последний слэш: если он есть то копируется содержимое папки, иначе - вся директория, вместе с названием.
&lt;/p&gt;

&lt;p&gt;
–progress - отображение прогрессбара
–partial - сохранение частей файлов после копирования (см. детали алгоритма работы rsync), ускоряет последующие копирования
–forse - удаление не пустых директорий
-e ssh - использование ssh для синхронизации, порт указывается так -e &amp;quot;ssh -p22&amp;quot;, настройка подключений по ssh без ввода пароля описана тут
-a - алиас для группы ключей (-rlptgoD), сохраняет разные атрибуты файлов/директорий при копировании, включает рекурсию
-v - вывод в консоль подробных действий
-z - компрессия передаваемых файлов
Копирование отдельного файла
&lt;/p&gt;

&lt;p&gt;
rsync –progress –partial -avz /local/file.ext user@remote.server:/remote/folder/
Синхронизация двух локальных папок с удалением из {TO} всего чего нет в {FROM}
&lt;/p&gt;

&lt;p&gt;
rsync -av –delete /local/from/ /local/to/
Тоже предназначение, как и у предыдущей команды, только физически ничего не меняется (симуляция процесса)
&lt;/p&gt;

&lt;p&gt;
rsync -avn –delete /local/from/ /local/to/
Показать разницу между двумя каталогами
&lt;/p&gt;

&lt;p&gt;
rsync -avi /local/folder1/ /local/folder2/
И то, из-за чего мне понадобился rsync: надо синхронизировать из периодически обновляемого хранилища группу файл в другую директорию. В rsync есть опция –files-from=list.txt которая синхронизирует только файл из списка в list.txt, разделитель - новая строка.
&lt;/p&gt;

&lt;p&gt;
rsync -avh –files-from=list.txt –progress /local/folder1/ /local/folder2/
Несколько других полезных опции rsync
&lt;/p&gt;

&lt;p&gt;
–exclude=&amp;#039;*.pyc&amp;#039; - исключить файлы совпадающие с маской *.pyc, regexp не поддерживается
–exclude-from=&amp;#039;files.txt&amp;#039; - исключить файлы, которые упомянуты в files.txt, разделить имен - новая строка
-h - human-readable формат для размера файлов
-u - если файл в {TO} новее чем в {FROM}, то не заменять
–existing - обновление только уже существующих файлов, новые не копируются
–max-size=&amp;#039;7MB&amp;#039; - не передавать файлы, больше 7 МБайт
&lt;/p&gt;
</description>
    </item>
    <item rdf:about="http://178.140.10.58:8080/doku.php?id=rsync:rsync_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F">
        <dc:format>text/html</dc:format>
        <dc:date>2015-11-03T09:10:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>RSYNC - Документация</title>
        <link>http://178.140.10.58:8080/doku.php?id=rsync:rsync_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F</link>
        <description>&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:shell&amp;amp;do=showtag&amp;amp;tag=shell&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:shell&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; shell&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:network&amp;amp;do=showtag&amp;amp;tag=network&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:network&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; network&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:utils&amp;amp;do=showtag&amp;amp;tag=utils&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:utils&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; utils&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:backup&amp;amp;do=showtag&amp;amp;tag=backup&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:backup&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; backup&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:ssh&amp;amp;do=showtag&amp;amp;tag=ssh&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:ssh&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; ssh&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:rsync&amp;amp;do=showtag&amp;amp;tag=rsync&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:rsync&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; rsync&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;rsync_-_документация&quot;&gt;RSYNC - Документация&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RSYNC - \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rsync_-_\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;47-96&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;синтаксис&quot;&gt;СИНТАКСИС&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... SRC [SRC]... DEST
rsync [OPTION]... [USER@]HOST::SRC [DEST]
rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0418\u041d\u0422\u0410\u041a\u0421\u0418\u0421&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;97-411&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;описание&quot;&gt;ОПИСАНИЕ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Утилита rsync ведет себя во многом подобно rcp с той разницей, что имеет гораздо больше параметров и использует протокол удаленного обновления (remote-update protocol) для значительного ускорения передачи файлов, которые уже существуют в месте назначения.
&lt;/p&gt;

&lt;p&gt;
Благодаря этому протоколу rsync передает только различия между двумя наборами файлов через сетевое соединение, используя эффективный алгоритм поиска контрольных сумм (cheksum-search algorithm), описанный в сопровождающей этот пакет документации.
&lt;/p&gt;

&lt;p&gt;
Вот некоторые дополнительные особенности rsync:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 поддержка копирования ссылок, файлов устройств, атрибутов владельца, группы и прав
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 параметры исключения путей exclude и exclude-from подобно GNU tar
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 CVS-подобный режим исключения для определенных файлов, которые игнорируются тем же образом, каким их должен игнорировать CVS
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 может прозрачно использовать любую оболочку удаленного доступа, включая rsh или ssh
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 не нуждается в привилегиях суперпользователя root
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 конвейеризация передач файлов для уменьшения задержек
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 поддержка анонимного сервера rsync или сервера rsync с аутентификацией (идеально для зеркалирования)
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u041f\u0418\u0421\u0410\u041d\u0418\u0415&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;412-2432&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;главное&quot;&gt;ГЛАВНОЕ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Относительно rsync существует восемь способов его использования:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Для локального копирования файлов, когда ни исходный SRC, ни конечный DEST пути не содержат двоеточия : .
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Для копирования локальных файлов на удаленный хост, используя программу удаленной оболочки в качестве транспорта (например, rsh или ssh). В этом случае конечный путь DEST содержит одно двоеточие : как разделитель адреса удаленного хоста и пути файловой системы на нем.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Для копирования с удаленного хоста в локальные файлы, используя программу удаленной оболочки. Это происходит, если исходный путь SRC содержит двоеточие : .
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Для копирования с удаленного rsync-сервера в локальные файлы, когда исходный путь SRC содержит либо двойное двоеточие :: , либо он сформирован в виде &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;, начинающийся с rsync:/\/ .
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Для копирования локальных файлов на удаленный rsync-сервер. В этом случае конечный путь DEST содержит :: или является &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;&amp;#039;ом вида rsync:/\/ .
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Для копирования с удаленной машины с использованием удаленной оболочки как транспорта и удаленного rsync-сервера. Это происходит, когда исходный путь SRC содержит разделителем двойное двоеточие :: и установлен параметр –rsh=COMMAND (или -e &amp;quot;COMMAND&amp;quot;).
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Для копирования с локальной машины на удаленную с использованием удаленной оболочки как транспорта и удаленного rsync-сервера. Это происходит, когда конечный путь DEST содержит разделителем двойное двоеточие :: и установлен параметр –rsh=COMMAND (или -e &amp;quot;COMMAND&amp;quot;).
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Для получения списка файлов на удаленной машине. Это происходит, если не указать (оставить пустым) локальный путь.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Обратите внимание, что во всех случаях (кроме запроса списка) как минимум один путь (либо исходный SRC, либо конечный DEST) должен быть локальным.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0413\u041b\u0410\u0412\u041d\u041e\u0415&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0433\u043b\u0430\u0432\u043d\u043e\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2433-5465&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;установка&quot;&gt;УСТАНОВКА&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
За инструкциями по установке обращайтесь в файл README.
&lt;/p&gt;

&lt;p&gt;
Для удаленных передач rsync использует ssh для выполнения коммуникаций с удаленными хостами, поэтому сразу после установки Вы можете использовать rsync относительно любой машины, к которой возможен доступ через ssh (также как и к тем, где запущен rsync-сервер). Но можно сконфигурировать использование другой оболочки, например, rsh или remsh.
&lt;/p&gt;

&lt;p&gt;
Вы можете указать альтернативу rsh либо с помощью параметра командной строки -e, либо с помощью переменной окружения RSYNC_RSH.
&lt;/p&gt;

&lt;p&gt;
Обратите внимание, что rsync должна быть установлена на обоих хостах, которые вовлечены в операцию копирования.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0421\u0422\u0410\u041d\u041e\u0412\u041a\u0410&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;5466-6627&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;использование&quot;&gt;ИСПОЛЬЗОВАНИЕ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Применение rsync подобно rcp. Вы должны указать исходный путь и конечный путь назначения, один из которых может быть на удаленном хосте.
&lt;/p&gt;

&lt;p&gt;
Возможно, лучший способ объяснить синтаксис - это привести примеры:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rsync *.c foo:src/&lt;/pre&gt;

&lt;p&gt;
Копирует все файлы по шаблону *.c из текущего каталога в каталог src , расположенный на машине foo . Если какой-либо из файлов уже существует, rsync использует протокол удаленного обновления для передачи только различий. За деталями протокола обращайтесь к соответствующей документации.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rsync -avz foo:src/bar /data/tmp&lt;/pre&gt;

&lt;p&gt;
Копирует все файлы рекурсивно из каталога src/bar с машины foo в локальный каталог /data/tmp/bar . Передача файлов происходит в &amp;quot;архивном&amp;quot; режиме, который гарантирует сохранение символьных ссылок, файлов-устройств, атрибутов, разрешений и т.д. Кроме того, используется сжатие для уменьшения объема непосредственно передаваемых данных.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rsync -avz foo:src/bar/ /data/tmp&lt;/pre&gt;

&lt;p&gt;
Слэш в окончании исходного пути меняет поведение при копировании так, что все файлы копируются в каталог /data/tmp без создания дополнительного уровня вложения каталогов. Завершающий исходный путь слэш означает &amp;quot;копировать содержимое этого каталога&amp;quot;. Без завершающего слэша - &amp;quot;копировать каталог&amp;quot;. В обоих случаях (со слэшем и без него) атрибуты содержащего файлы каталога копируются на содержащий их копии каталог назначения. Другими словами, в каждом последующем примере команды копируют файлы одинаково, включая атрибуты /dest/foo :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rsync -avz /src/foo /dest&lt;/pre&gt;

&lt;p&gt;
rsync -avz /src/foo/ /dest/foo
Вы также можете использовать rsync в режиме только локального копирования, когда ни один из путей НЕ содержит двоеточия : . Тогда rsync ведет себя как улучшенная команда копирования.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rsync somehost.mydomain.com::&lt;/pre&gt;

&lt;p&gt;
Запрашивает весь список анонимно-доступных модулей на машине somehost.mydomain.com. (Смотрите следующую секцию на предмет деталей.)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0421\u041f\u041e\u041b\u042c\u0417\u041e\u0412\u0410\u041d\u0418\u0415&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;6628-9851&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;подключение_к_rsync-серверу&quot;&gt;ПОДКЛЮЧЕНИЕ К RSYNC-СЕРВЕРУ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
rsync можно использовать без обращения к удаленной оболочке как транспорту. В этом случае Вы будете подключаться к удаленному rsync-серверу, запущенному на 873 порту TCP.
&lt;/p&gt;

&lt;p&gt;
Вы можете осуществлять соединение через web-прокси, устанавливая переменную окружения RSYNC_PROXY, равной паре hostname:port, соответствующей Вашему web-прокси. В этом случае Ваш web-прокси должен разрешать проксирование 873 порта.
&lt;/p&gt;

&lt;p&gt;
Использование rsync-сервера аналогично варианту с удаленной оболочкой за исключением:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Вы используете двойное двоеточие :: , а не одинарное, как разделитель имени хоста и пути.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 удаленный сервер может выводить сообщение дня (motd), когда Вы подсоединяетесь.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 если Вы опускаете указание пути на удаленном сервере, то он показывает список доступных путей.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 если Вы опускаете локальный путь копирования, то Вам предоставляется список указанных файлов на
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 удаленном сервере.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Некоторые пути на удаленном сервере могут быть доступными только по аутентификации. Тогда вы получите приглашение ввести пароль при подключении. Можно избежать запроса пароля, предварительно выставив переменную RSYNC_PASSWORD в значение с необходимым паролем или указав параметр в командной строке –password-file . Это удобно при использовании rsync в скриптах.
&lt;/p&gt;
&lt;div class=&quot;plugin_note notetip&quot;&gt;ВНИМАНИЕ: На некоторых системах переменные окружения видимы всеми пользователями. На таких системах рекомендуется использовать –password-file .
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u041e\u0414\u041a\u041b\u042e\u0427\u0415\u041d\u0418\u0415 \u041a RSYNC-\u0421\u0415\u0420\u0412\u0415\u0420\u0423&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_\u043a_rsync-\u0441\u0435\u0440\u0432\u0435\u0440\u0443&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;9852-12393&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;подключение_к_rsync-серверу_через_удаленную_оболочку&quot;&gt;ПОДКЛЮЧЕНИЕ К RSYNC-СЕРВЕРУ ЧЕРЕЗ УДАЛЕННУЮ ОБОЛОЧКУ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Иногда бывает полезно при подключении к rsync-серверу передавать файлы, используя удаленную оболочку как транспорт. Это особенно полезно, если нужно подключиться к удаленной машине через ssh (для шифрации или в обход сетевого экрана), но при этом сохранить доступ к функциональным особенностям rsync-сервера (см. ЗАПУСК RSYNC-СЕРВЕРА ПОВЕРХ УДАЛЕННОЙ ОБОЛОЧКИ).
&lt;/p&gt;

&lt;p&gt;
С пользовательской точки зрения этот способ такой же, как и подключение к rsync-серверу, за исключением того, что необходимо явно указать программу удаленной оболочки в командной строке параметром –rsh=COMMAND. (Установка RSYNC_RSH в окружении не активизирует эту функциональность.)
&lt;/p&gt;

&lt;p&gt;
В порядке необходимости различать пользователя удаленной оболочки и пользователя удаленного rsync-сервера Вы можете использовать &amp;#039;-l user&amp;#039; в указании программы оболочки:
&lt;/p&gt;

&lt;p&gt;
rsync -av –rsh=&amp;quot;ssh -l ssh-user&amp;quot; rsync-user@host::module[/path] local-path
Здесь &amp;quot;ssh-user&amp;quot; имеет значение на уровне ssh; &amp;quot;rsync-user&amp;quot; проверяется относительно rsyncd.conf на удаленной стороне.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u041e\u0414\u041a\u041b\u042e\u0427\u0415\u041d\u0418\u0415 \u041a RSYNC-\u0421\u0415\u0420\u0412\u0415\u0420\u0423 \u0427\u0415\u0420\u0415\u0417 \u0423\u0414\u0410\u041b\u0415\u041d\u041d\u0423\u042e \u041e\u0411\u041e\u041b\u041e\u0427\u041a\u0423&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_\u043a_rsync-\u0441\u0435\u0440\u0432\u0435\u0440\u0443_\u0447\u0435\u0440\u0435\u0437_\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u0443\u044e_\u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;12394-14218&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;запуск_rsync_сервера&quot;&gt;ЗАПУСК RSYNC СЕРВЕРА&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
rsync-сервер конфигурируется с помощью специального файла, которым по умолчанию выбирается /etc/rsyncd.conf, кроме тех случаев, когда rsync запускается поверх удаленной оболочки и не от root. В этом случае выбирается rsyncd.conf из текущего каталога на удаленной машине (обычно \$HOME). Смотрите страницы руководства по rsyncd.conf(5) на предмет деталей.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0410\u041f\u0423\u0421\u041a RSYNC \u0421\u0415\u0420\u0412\u0415\u0420\u0410&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043f\u0443\u0441\u043a_rsync_\u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;14219-14865&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;запуск_rsync-сервера_поверх_удаленной_оболочки&quot;&gt;ЗАПУСК RSYNC-СЕРВЕРА ПОВЕРХ УДАЛЕННОЙ ОБОЛОЧКИ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Некоторые конфигурационные параметры не будут доступны, если удаленный пользователь не root (chroot, setuid/setgid и т.д.). Нет необходимости в конфигурировании inetd или включении порта rsync-сервера в список доступных сетевых служб, если rsync-сервер запущен только через программу удаленной оболочки.
&lt;/p&gt;

&lt;p&gt;
Для запуска rsync-сервера с ssh-ключом ограниченного применения см. соответствующий раздел rsyncd.conf(5).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0410\u041f\u0423\u0421\u041a RSYNC-\u0421\u0415\u0420\u0412\u0415\u0420\u0410 \u041f\u041e\u0412\u0415\u0420\u0425 \u0423\u0414\u0410\u041b\u0415\u041d\u041d\u041e\u0419 \u041e\u0411\u041e\u041b\u041e\u0427\u041a\u0418&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043f\u0443\u0441\u043a_rsync-\u0441\u0435\u0440\u0432\u0435\u0440\u0430_\u043f\u043e\u0432\u0435\u0440\u0445_\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439_\u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;14866-15666&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;примеры&quot;&gt;ПРИМЕРЫ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Далее приведено несколько примеров, как использовать rsync.
&lt;/p&gt;

&lt;p&gt;
Для резервного архивирования домашнего каталога моей жены, который содержит большие MS Word файлы и почтовые папки, я использую задание для cron&amp;#039;а, которое запускается
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rsync -Cavz . arvidsjaur:backup&lt;/pre&gt;

&lt;p&gt;
каждую ночь через PPP-соединение для дублирования каталога на мою машину &amp;quot;arvidsjaur&amp;quot;.
&lt;/p&gt;

&lt;p&gt;
Для синхронизации моего дерева samba-исходников я использую Makefile-указания:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;get: 
rsync -avuzb --exclude &amp;#039;*~&amp;#039; samba:samba/ .
put: 
rsync -Cavuzb . samba:samba/
sync: get put&lt;/pre&gt;

&lt;p&gt;
Это позволяет мне синхронизировать с CVS-каталогом на другом конце соединения. Затем я осуществляю cvs-операции на удаленной машине, что сохраняет мне массу времени, т.к. передача по удаленному cvs-протоколу не очень эффективна.
&lt;/p&gt;

&lt;p&gt;
Я зеркалирую каталог между моими &amp;quot;старым&amp;quot; и &amp;quot;новым&amp;quot; ftp-сайтами командой
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rsync -az -e ssh --delete ~ftp/pub/samba/ nimbus:&amp;quot;~ftp/pub/tridge/samba&amp;quot;&lt;/pre&gt;

&lt;p&gt;
это запускается cron&amp;#039;ом несколько раз в день.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0420\u0418\u041c\u0415\u0420\u042b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043c\u0435\u0440\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;15667-17225&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;сводка_параметров&quot;&gt;СВОДКА ПАРАМЕТРОВ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Далее краткий обзор параметров, понимаемых rsync. Пожалуйста, обращайтесь к более детальному описанию чуть ниже.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -v, –verbose увеличить уровень подробностей
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -q, –quiet уменьшить уровень подробностей
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -c, –checksum  проверять контрольные суммы
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -a, –archive архивный режим, эквивалент для -rlptgoD\
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -r, –recursive рекурсивно входить в подкаталоги
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –no-recursive  отключить действие –recursive
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –no-implied-dirs не передавать затрагиваемые параметром -R каталоги
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -R, –relative  использовать относительные пути
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -b, –backup  создавать резервную копию (см. –suffix и –backup-dir)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –backup-dir  создавать резервную копию в этом каталоге
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –suffix=SUFFIX  суффикс для резервной копии (по умолчанию ~ в отсутствие –backup-dir)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -u, –update  только обновление (не переписывает более новые файлы)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -l, –links  копировать символьные ссылки как символьные ссылки
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -L, –copy-links  копировать то, на что ссылаются символьные ссылки
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –copy-unsafe-links  копировать ccылки за пределы исходного дерева каталогов
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –safe-links  не копировать любые символьные ссылки, которые ссылаются за пределы дерева каталогов назначения
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -H, –hard-links  сохранять жесткие ссылки
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -p, –perms  сохранять разрешения
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -o, –owner  сохранять владельца (только root)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -g, –group  сохранять группу
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -D, –devices  сохранять файлы устройств (только root)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -t, –times  сохранять время
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -S, –sparse  эффективно обработать фрагментированные файлы
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -n, –dry-run  показать, что скопируется
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -W, –whole-file  копировать весь файл без rsync-алгоритма
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –no-whole-file  отключить –whole-file
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -x, –one-file-system  не выходить за пределы файловой системы
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -B, –block-size=SIZE  размер блока контрольных сумм (по умолчанию 700)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -e, –rsh=COMMAND  указывает замену программу удаленной оболочки
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –rsync-path=PATH  указывает путь к rsync на удаленной машине
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –existing  только обновить те файлы, которые уже существуют
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –ignore-existing  пропускать те файлы, которые уже существуют на приемной стороне
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –delete  удалять файлы, которых нет на передающей стороне
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –delete-excluded  также удалять те файлы, которые исключены из списка копирования
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –delete-after  удалять после копирования, а не до него
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –ignore-errors  удалить даже при наличии ошибок ввода/вывода
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –max-delete=NUM  не удалять больше, чем NUM файлов
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –partial  сохранять частично переданные файлы
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –force  принудительно удалять даже не пустые каталоги
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –numeric-ids  не преобразовывать значения uid/gid по именам пользователя/группы
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –timeout=TIME  установить время ожидания ввода/вывода в секундах
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -I, –ignore-times  отключить &amp;quot;быструю проверку&amp;quot; файлов по времени модификации и размеру
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –size-only  отключить проверку времени модификации при &amp;quot;быстрой проверке&amp;quot; файлов (проверять только размер)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –modify-window=NUM  сравнивать времена модификации файлов с пониженной точностью
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -T, –temp-dir=DIR  каталог для временных файлов
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –compare-dest=DIR  также сравнивать принятые файлы относительно каталога DIR
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –link-dest=DIR  создавать жесткие ссылки в каталоге DIR на не изменявшиеся файлы
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -P  эквивалент для –partial –progress
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -z, –compress  сжимать поток передачи данных
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -C, –cvs-exclude  автоматический пропуск файлов тем же способом, что и в cvs
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –exclude=PATTERN  исключить файлы, соответствующие шаблону PATTERN
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –exclude-from=FILE  шаблоны исключения брать из файла FILE
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –include=PATTERN  не исключать файлы по шаблону PATTERN
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –include-from=FILE  не исключать файлы по шаблонам в файле FILE
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –files-from=FILE  читать имена файлов для копирования из файла FILE
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -0, –from0  нуль - разделитель всех списков файлов
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –version  вывести номер версии
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –daemon  запустить как rsync-демон
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –no-detach  не отключаться от родительского процесса
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –address=ADDRESS  слушать на указанном адресе
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –config=FILE  указать другой rsyncd.conf файл
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –port=PORT  слушать другой порт
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –blocking-io  использовать блочный ввод/вывод для удаленной оболочки
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –no-blocking-io  отключить –blocking-io
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –stats  выдавать статистику по передаче файлов
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –progress  показать % выполнения во время передачи
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –log-format=FORMAT  формат лог-файла передач
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –password-file=FILE  читать пароль из файла FILE
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –bwlimit=KBPS  ограничить скорость ввода/вывода, Кбайт/с
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –read-batch=PREFIX  для пакетного режима читать набор файлов с префиксом PREFIX
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –write-batch=PREFIX  для пакетного режима записать набор файлов с префиксом PREFIX
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -h, –help  показать помощь
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0412\u041e\u0414\u041a\u0410 \u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420\u041e\u0412&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0432\u043e\u0434\u043a\u0430_\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;17226-24590&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;параметры&quot;&gt;ПАРАМЕТРЫ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
rsync использует соглашение о длинных именах параметров GNU. Многие из параметров командной строки имеют два варианта: один - короткий, а другой - длинный. Ниже это отражено в разделении запятой двух вариантов. Некоторые параметры имеют только длинный вариант. Знак &amp;#039;=&amp;#039; для параметров с дополнительным значением необязателен и может быть заменен на пробел.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -h, –help  Печатает короткую подсказку, описывающую доступные параметры rsync
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –version Печатает номер версии rsync и завершается
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -v, –verbose Этот параметр увеличивает сумму подробностей, которые выводятся в течение передачи. По умолчанию, rsync работает молча. Один -v будет иметь следствием выдачу списка переданных файлов и короткий итог в конце. Два -v раскрывают детали о пропущенных файлах и выдают несколько больше информации в завершение. Большее число может понадобится только при отладке rsync.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -q, –quiet Уменьшает сумму подробностей о передаче, преимущественно, сообщения от удаленного сервера. Этот параметр полезен при вызове из cron.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -I, –ignore-times  Обычно rsync пропускает файлы, чей размер и время модификации идентичны. Этот параметр отключает такое поведение &amp;quot;быстрой проверки&amp;quot;.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –size-only Обычно rsync пропускает файлы, чей размер и время модификации идентичны. С –size-only файлы будут пропускаться, если их размер одинаков, независимо от времени модификации. Это полезно при использовании rsync сразу после работы другой зеркалирующей системы, которая не сохранила точно времена.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –modify-window При сравнение двух меток времени rsync рассматривает эти метки равными, если они расходятся в пределах значения modify_window. Обычно это значение ноль, но Вы можете найти полезным установку его в большую величину в некоторых случаях. На практике, при передаче на файловую систему Windows FAT, которая не может представлять время с точностью до секунды, –modify_window=1 весьма полезна.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -c, –checksum  Принуждает на передающей стороне подсчитывать контрольные суммы всех файлов, используя 128-битный алгоритм MD4 перед передачей. Контрольная сумма затем проверяется на приемной стороне для того, чтобы пропускать передачи уже существующих файлов с одинаковыми размером и контрольной суммой. Этот параметр может приводить к некоторому замедлению.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -a, –archive Эквивалентно набору -rlptgoD. Это быстрый способ указать, что Вам нужна рекурсия и Вы хотите сохранить почти все.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Однако заметьте, что -a не сохраняет жесткие ссылки, потому что поиск многосвязных файлов дорог. Вам придется отдельно указывать -H.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -r, –recursive Указывает rsync копировать каталоги рекурсивно. Без указания этого rsync совсем не будет копировать каталоги.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -R, –relative  Использовать относительные пути. Это значит, что посылаются полные пути, указанные в командной строке, а не последние части имен файлов. На практике это полезно, когда Вам нужно послать несколько различных каталогов за раз. Например, если указать команду:
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class=&quot;code&quot;&gt;rsync foo/bar/foo.c remote:/tmp/&lt;/pre&gt;

&lt;p&gt;
то она создаст файл foo.c в /tmp на удаленной машине. Если вместо этого указать
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rsync -R foo/bar/foo.c remote:/tmp/&lt;/pre&gt;

&lt;p&gt;
то файл создастся в /tmp/foo/bar/foo.c на удаленной машине - полный путь сохранится.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –no-relative
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Выключает параметр –relative. Это нужно только если Вы хотите использовать параметр –files-from без подразумеваемого им поведения с включенным параметром –relative.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –no-implied-dirs
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
В комбинации с –relative все затрагиваемые каталоги в каждом пути явно не копируются как часть процесса передачи. Это делает передачу более оптимальной и также позволяет иметь непарные (см. пример ниже) символьные ссылки в подразумеваемых передачей путях. Например, если передается файл &amp;quot;/path/foo/file&amp;quot; с параметром -R, то по умолчанию rsync следит, чтобы &amp;quot;/path&amp;quot; и &amp;quot;/path/foo&amp;quot; в точности соответствовали каталогам/ссылкам на приемной стороне. Параметр –no-implied-dirs позволяет игнорировать несоответствие, когда &amp;quot;/path&amp;quot; - реальный каталог на одной стороне и символьная ссылка на другой. rsync не пытается с этим параметром что-либо менять в этом случае.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -b, –backup  С этим параметром существовавшие до передачи файлы на приемной стороне переименовываются, как только соответствующий файл передан или удален. Вы можете контролировать, куда перемещаются файлы и какой суффикс (если нужно) добавляется к имени, используя параметры –backup-dir и –suffix.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –backup-dir=DIR  В комбинации с –backup указывает каталог, куда сохранять резервные копии. Это весьма полезно для инкрементального резервирования. Вы можете дополнительно указать суффикс с помощью –suffix (иначе резервные копии файлов будут сохранять свои исходные имена).
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –suffix=SUFFIX Этот параметр позволяет указать суффикс, отличный от суффикса по умолчанию, для резервных копий файлов при установленном –backup (-b). По умолчанию этот суффикс установлен в ~ без установки –backup-dir, установка которого сбрасывает этот суффикс в пустую строку.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -u, –update  Указывает пропускать любые файлы, уже существующие на приемной стороне с более поздней датой, чем у исходных файлов.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -l, –links Если обнаружена символьная ссылка, то она же создается и на приемной стороне.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -L, –copy-links  Если обнаружена символьная ссылка, то на приемную сторону копируется файл, на который она указывает, а не такая же символьная ссылка.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –copy-unsafe-links Копирует все объекты за пределами исходного дерева каталогов, на которые ссылаются символьные ссылки. Абсолютные символьные ссылки, а также, при выставленном –relative, любые символьные ссылки в пределах исходного дерева каталогов, рассматриваются как обычные файлы.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –safe-links  Указывает игнорировать любую символьную ссылку, которая относится к объекту за пределами конечного дерева каталогов. Все абсолютные ссылки также пропускаются. Использование этого параметра в комбинации с –relative может дать неожиданные результаты.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -H, –hard-links  Указывает пересоздать жесткие ссылки на конечной стороне в соответствии с тем, что имеется на исходной. Без этого параметра жесткие ссылки обрабатываются как обычные файлы.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Обратите внимание, что rsync может обнаруживать жесткие ссылки, только если обе части ссылки попадают в список предназначенных к передаче файлов.
С этим параметром передача может быть довольно-таки медленной, так что пользуйтесь им только при необходимости.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -W, –whole-file  Этот параметр отключает дифференциальный алгоритм rsync&amp;#039;а и с ним весь файл передается как есть, целиком. Передача может происходить быстрее с этим параметром, если полоса пропускания между исходной и конечной машинами шире, чем полоса пропускания доступа к диску (особенно, если &amp;quot;диск&amp;quot; в действительности сетевая файловая система). Этот параметр включен по умолчанию, если и исходная, и конечная цели находятся локально.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –no-whole-file Выключает действие параметра –whole-file, если последний включен по умолчанию.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -p, –perms Копирует все права на приемную сторону точь в точь с оригиналом.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Без указания этого параметра каждый новый файл получает те права доступа, что имеет исходный с учетом umask, действующей на приемной стороне, в то время как все другие (включая обновляемые) сохраняют свои уже существующие разрешения (это то же поведение, что имеют другие утилиты копирования файлов, такие как cp).
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -o, –owner Копирует атрибуты владельца на приемную сторону в точности с оригиналом. На большинстве систем только супер-пользователь имеет право устанавливать владельца файла. Нужно заметить, что если удаленный демон действует в chroot-окружении, то подразумевается наличие параметра –numeric-ids, потому что на удаленной стороне в этом случае нет доступа к именам пользователей в /etc/passwd.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -g, –group Копирует атрибуты группы на приемную сторону в точности с оригиналом. Если удаленная сторона не действует из-под супер-пользователя, то сохранятся только те значения групп, членом которых является пользователь приемной стороны (имеет значение имя группы, а не ее id).
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -D, –devices Указывает передавать информацию о символьных и блочных устройствах для пересоздания их на приемной стороне. Доступно только супер-пользователю.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -t, –times Указывает передавать время модификации файлов и обновлять им соответствующий атрибут на приемной стороне. Обратите внимание, что если этот параметр не установлен, то становится неэффективной оптимизация передачи по исключению не изменявшихся по времени файлов; другими словами, пропуск -t или -a будет означать, что следующая передача будет осуществляться с параметром -I, для всех файлов будут сравниваться контрольные суммы, а в журнале появятся соответствующие сообщения о них, даже если они не изменялись.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -n, –dry-run Указывает не осуществлять никаких передач, а только сообщать о тех действиях, которые могли бы произойти.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -S, –sparse  Пытаться эффективнее обработать фрагментацию файлов, чтобы сэкономить пространство на приемной стороне.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;plugin_note notetip&quot;&gt;ЗАМЕЧАНИЕ: Не используйте этот параметр, если в точке назначения имеется файловая система &amp;quot;tmpfs&amp;quot; Solaris. Не представляется возможным правильно управлять поиском среди &amp;quot;дырок&amp;quot; (null regions), что заканчивается повреждением файлов.
&lt;/div&gt;&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -x, –one-file-system Требует не переходить границ файловой системы при рекурсивном копировании. Это полезно при необходимости копирования только одной файловой системы.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –existing  Указывает не создавать никаких новых файлов - только обновить те, которые уже существуют на приемной стороне.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –ignore-existing Указывает не обновлять файлы, которые уже существуют на приемной стороне.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –max-delete=NUM  Не удалять больше, чем NUM файлов и каталогов. Это полезно при зеркалировании очень массивных деревьев каталогов для предохранения от неприятностей.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –delete  Удалять любые файлы на приемной стороне, которых нет на передающей. Файлы, исключенные из передачи, исключаются также и из процесса удаления, если не указана –delete-excluded.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Этот параметр не оказывает никакого влияния, если не включено рекурсивное копирование каталогов.
Этот параметр может быть опасным при неправильном использовании! Очень хорошим правилом может стать использование сначала холостого выполнения rsync (-n) для просмотра того, что за файлы могут удалиться и нет ли среди них важных.
При возникновении каких-либо ошибок ввода-вывода на передающей стороне удаление любых файлов на приемной автоматически отключается. Это предотвращает от массивного удаления файлов на приемной стороне из-за временных ошибок файловой системы (например, NFS) на передающей. Это поведение можно отключить параметром –ignore-errors.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –delete-excluded В дополнение к файлам, удаляемым на приемной стороне из-за отсутствия их на передающей, указывает удалять также любые исключенные параметром –exclude файлы на приемной стороне. Подразумевается наличие параметра –delete.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –delete-after  По умолчанию, rsync сначала выполняет удаление файлов перед копированием для пущей уверенности, что хватит свободного места на приемной стороне. Если же Вы хотите, чтобы удаление производилось после, то используйте –delete-after. Подразумевается наличие параметра –delete.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –ignore-errors При удалении (–delete) форсирует процесс и игнорирует любые ошибки, даже ошибки ввода-вывода.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –force Удалять каталоги при замене их не-каталогами, даже если они не пусты. Уместен только без
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –delete, потому что удаление происходит только каталогов одного уровня. Требует –recursive (который подразумевается, если -a) для значимого эффекта.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -B, –block-size=BLOCKSIZE  Регулирует размер блока, используемый rsync-алгоритмом. См. техническое описание на предмет деталей.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -e, –rsh=COMMAND Позволяет выбрать альтернативную программу удаленной оболочки для осуществления соединения между удаленной и локальной копиями rsync. Обычно rsync сконфигурирован для использования ssh по умолчанию, но Вы можете предпочесть использовать rsh в локальной сети.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Если этот параметр используется с указанием пути вида [user@]host::module/path, то программа удаленной оболочки COMMAND будет использована для запуска rsync-сервера на удаленной стороне, а все данные будут передаваться через соединение удаленной оболочки, а не напрямую через соединение с rsync-сервером на &amp;quot;том&amp;quot; конце. См. раздел &amp;quot;ПОДКЛЮЧЕНИЕ К RSYNC-СЕРВЕРУ ЧЕРЕЗ УДАЛЕННУЮ ОБОЛОЧКУ&amp;quot;.
Аргументы командной строки для COMMAND разрешено указывать в форме, при которой COMMAND представляется для rsync в виде одного аргумента. Например:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -e &amp;quot;ssh -p 2234&amp;quot;  (Заметьте, что ssh-пользователи могут альтернативно настраивать специфичные для своего окружения параметры подключения в своих .ssh/config файлах.)
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Вы также можете выбирать программу удаленной оболочки через переменную окружения RSYNC_RSH, которая принимает тот же диапазон значений, что и -e.
См. также –blocking-io, на которую влияет установка параметра -e.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –rsync-path=PATH Указывает путь к копии rsync на удаленной стороне. Полезен, если rsync&amp;#039;а нет в Ваших путях поиска. Заметьте, что здесь указывается полный путь к программе, а не каталог, где она лежит.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -C, –cvs-exclude Этим параметром Вы исключаете широкий диапазон файлов, которые Вы не хотите передавать между системами. При этом используется тот же алгоритм, что использует CVS для определения игнорируемых файлов.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
  Список исключений изначально включает в себя:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;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 Позволяет выборочно исключать определенные файлы из процесса передачи. Это наиболее полезно при рекурсивной передаче.&lt;/pre&gt;

&lt;p&gt;
Вы можете использовать так много –exclude, как Вам заблагорассудится для построения произвольного списка исключаемых файлов.
См. секцию &amp;quot;ШАБЛОНЫ ИСКЛЮЧЕНИЯ&amp;quot; за информацией о синтаксисе для этого параметра.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –exclude-file=FILE Подобен параметру –exclude, но в отличие от него использует шаблоны исключаемых фалов, перечисленные в файле FILE. Пустые строки вместе со строками, начинающимися с &amp;#039;;&amp;#039; или &amp;#039;#&amp;#039;, игнорируются. Если FILE указан как -, то список шаблонов читается со стандартного ввода.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –include=PATTERN Указывает шаблоны для имен тех файлов, которые нельзя исключать из процесса. Полезен тем, что позволяет Вам строить довольно сложные правила включения/исключения.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
См. секцию &amp;quot;ШАБЛОНЫ ИСКЛЮЧЕНИЯ&amp;quot; за информацией о синтаксисе для этого параметра.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –include-from=FILE Указывает брать список обязательно включаемых в передачу файлов из файла FILE. Если FILE указан как -, то список шаблонов читается со стандартного ввода.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –files-from=FILE Позволяет задать точный список файлов для передачи (который будет прочитан из указанного FILE или из стандартного ввода, если указан -). Это также меняет поведение rsync по умолчанию в целях облегчения процесса передачи заданных файлов и каталогов. Например, по умолчанию включается использование опции –relative (для отключения этого используйте –no-relative), на принимающей стороне создаются все указанные в списке каталоги (а не пропускаются безгласно, как если бы не использовалась опция -r), а поведение -a (–archive) не подразумевает наличие -r (–recursive) - его, при необходимости, нужно указывать явно.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Все имена файлов, прочитанные из FILE, считаются относительными к исходному каталогу – первые слэши убираются и не допускаются ссылки &amp;quot;..&amp;quot;, указывающие выше по дереву исходного каталога. Для примера рассмотрим:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 rsync -a –files-from=/tmp/foo /usr remote:/backup
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Если /tmp/foo содержит строку bin (или даже &amp;quot;/bin&amp;quot;), каталог /usr/bin будет создан как /backup/bin на удаленной машине (но содержимое /usr/bin не должно передаваться, кроме тех случаев, когда объекты явно указаны в /tmp/foo, или в случае указания параметра -r). Также учитывайте, что эффект от –relative (включенный по умолчанию) касается копирования путей, прочитанных из файла, – он не принуждает копировать полностью указанный исходный путь (/usr в примере).
В дополнение, –files-from файл может быть прочитан с удаленной машины, а не локально, если указать перед именем файла &amp;quot;host:&amp;quot; (это должно соответствовать одному из концов передачи). Для краткости, можно указывать только префикс &amp;quot;:&amp;quot; для обозначения удаленного участника копирования. Например:
rsync -a –files-from=:/path/file-list src:/ /tmp/copy
эта команда должна скопировать все файлы указанные в файле /path/file-list, который расположен на удаленной машине &amp;quot;src&amp;quot;.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -0, –from0 Говорит rsync, что имена файлов, читаемые извне, заканчиваются символом &amp;#039;\0&amp;#039;, не NL, CR или CR+LF. Это касается параметров –exclude-from, –include-from, and –files-from.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -T, –temp-dir=DIR
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Инструктирует использовать DIR как каталог временных копий передаваемых файлов на принимающей стороне. По умолчанию временные файлы создаются в каталоге назначения.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –compare-dest=DIR  Инструктирует использовать DIR на машине назначения как каталог, относительно содержимого которого осуществляется сравнение во время процесса передачи при условии отсутствия файлов в каталоге назначения. Это полезно для осуществления передачи в новое место, оставляя существующие файлы неприкосновенными, а затем перенося и очищая, когда все файлы были переданы (например, при перемещении каталогов в новое место и удалении старого, хотя при этом пропускаются не изменявшиеся файлы; см. также –link-dest).
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Прим. переводчика: Существование этого параметра обусловлено необходимостью обновлять, например, дерево с взаимозависимыми файлами. В этом случае нежелательно осуществлять копирование на пофайловой основе. Параметр –compare-dest позволяет указывать временный каталог назначения, куда и копируются передаваемые файлы. По окончании процесса передачи rsync переименовывает оригинальное дерево назначения, затем переименовывает временный каталог DIR в оригинальный и, наконец, удаляет переименованный на первом шаге оригинальный каталог со &amp;quot;старыми&amp;quot; файлами.
Этот параметр повышает полезность –partial, потому что частично переданные файлы будут оставаться в новом временном каталоге до тех пор, пока не окажутся целиком на месте. Если DIR задан как относительный путь, то он соотносится к каталогу назначения.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –link-dest=DIR Ведет себя также, как и –compare-dest, но также создает жесткие ссылки в DIR на не изменявшиеся файлы в каталоге назначения. Файлы с измененными правами и владением не подвергаются этому. Как и в случае –compare-dest, если DIR задается относительным именем, то и действия осуществляются относительно каталога назначения.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -z, –compress  С этим параметром rsync сжимает все передаваемые данные файлов. Это полезно на медленных линиях. Метод сжатия, используемый при этом, тот же, что реализует gzip.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Заметьте, что при этом обычно достигается лучший коэффициент сжатия, чем может быть достигнут, используя сжатие программ удаленной оболочки или сжатие транспортного уровня, т.к. в процесс сжатия вовлекается вся информация, посылаемая в соответствующих блоках данных.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –numeric-ids Вместо имен групп и пользователей посылаются их числовые id и ставятся в соответствие друг другу на обоих концах.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
По умолчанию rsync использует имена групп и пользователей для определения владельца файлов. Специальные uid 0 и gid 0 никогда не отображаются через имена пользователей/групп, даже если не указана –numeric-ids.
Если исходная система работает в ограниченном chroot-окружении или если пользователь или группа не существуют на приемной стороне, то используются исходные числовые id.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –timeout=TIMEOUT Позволяет устанавливать максимальное время ожидания ввода-вывода в секундах. Если за указанный период ничего не передано, то работа rsync завершается. По умолчанию 0, что означает без ожидания.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –daemon  Запускает rsync как демон. Демон доступен для клиентов через синтаксис host::module или rsync:/\/host/module.  Если стандартным вводом является сокет, то rsync полагает условием запуск от inetd, иначе он отключается от текущего терминала и становится фоновым процессом-демоном. Демон читает конфигурационный файл (rsyncd.conf) на каждое соединение от клиентов и соответственно отвечает на их запросы.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –no-detach При запуске демоном этот параметр инструктирует rsync не отключаться от терминала и стать фоновым процессом. Он требуется при запуске службой под Cygwin, и также может быть полезен, если rsync находится под наблюдением таких программ как daemontools или AIX&amp;#039;s System Resource Controller. –no-detach также рекомендуется к применению при запуске rsync под отладчиком. Этот параметр не имеет никакого эффекта при запуске от inetd или sshd.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –address По умолчанию rsync использует групповой адрес 0.0.0.0, когда запускается как демон с –daemon или при подключениях к rsync-серверу. –address позволяет Вам указать точный IP-адрес (или хост-имя) для этого. Это делает возможным виртуальный хостинг в сочетании с –config.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –config=FILE Указывает альтернативный файл конфигурации. Это имеет значение только если указан –daemon. По умолчанию /etc/rsyncd.conf за исключением случая, когда демон запускается поверх удаленной оболочки и удаленный пользователь не root. В последнем случае rsyncd.conf по умолчанию располагается в текущем каталоге (обычно $HOME).
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –port=PORT Указывает альтернативный номер TCP порта для работы, а не 873 по умолчанию.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –blocking-io Указывает использовать блокирующий ввод-вывод при запуске поверх программы-транспорта удаленной оболочки. Если этой программой являются либо rsh, либо remsh, то rsync использует блокирующий ввод-вывод по умолчанию, иначе по умолчанию используется неблокирующий ввод-вывод. (Заметьте, что ssh предпочитает неблокирующий.)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –no-blocking-io  Отключает действие –blocking-io, когда оно активировано по умолчанию.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –log-format=FORMAT Позволяет Вам точно указывать, что rsync сообщает (журналирует) на стандартный вывод на по-файловой основе. Формат сообщений определяется тем же соглашением, что и для параметра журналирования в файле rsyncd.conf.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –stats Указывает выводить подробную статистику по передаче файлов, позволяя Вам оценить, насколько эффективен алгоритм rsync относительно Ваших данных.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –partial По умолчанию rsync будет удалять все частично-переданные файлы в случае прерывания передачи. В некоторых случаях более желательно сохранять такие файлы. Используя параметр –partial, можно указать rsync сохранять частично-переданный файл, что может ускорить передачу всего файла при последовательном повторении таких передач.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –progress  Указывает выводить rsync информацию о ходе передачи. Скучающему пользователю будет на что посмотреть. Подразумевает наличие –verbose без увеличения подробностей.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -P  Эквивалент для –partial –progress . Автор нашел для себя частым использование этой комбинации, поэтому для облегчения ввел отдельный параметр.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –password-file Позволяет Вам предоставить пароль для доступа к rsync-серверу, сохранив его в файле. Заметьте, что этот параметр полезен только при использовании для доступа к rsync-серверу встроенного rsync-транспорта, при использовании программы удаленной оболочки он бесполезен. Файл не должен быть всем доступен на чтение. Он должен содержать только пароль, в одну строчку.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –bwlimit=KBPS  Позволяет указать максимальную скорость передачи, килобайт в секунду. Этот параметр наиболее эффективен при использовании rsync для передачи больших файлов (несколько мегабайт и выше). В соответствии с природой rsync-передач передается обычный блок данных, затем если rsync определяет, что скорость выше установленного, то он вводит задержку перед посылкой следующего блока. В результате средняя скорость передачи равна указанному пределу. Нулевое значение означает отсутствие этого ограничения.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –write-batch=PREFIX  Генерирует набор файлов, которые могут быть переданы в пакетном обновлении. Каждое имя файла в наборе начинается с PREFIX. См. раздел &amp;quot;ПАКЕТНЫЙ РЕЖИМ&amp;quot; за деталями.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –read-batch=PREFIX Применяет ранее сгенерированный пакет изменений, используя тот набор файлов, чьи имена начинаются с PREFIX. См. раздел &amp;quot;ПАКЕТНЫЙ РЕЖИМ&amp;quot; за деталями.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Опции rsync
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -c — обязательное сравнение контрольных сумм образов в начале работы. Если исходный и результирующий файлы имеют одинаковый размер и время последней модификации, но при этом различны, эта опция форсирует их синхронизацию.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -v — подробный вывод информации о происходящем. Можно указывать несколько раз. Позволяет развлечься разглядыванием кучи внутренней информации о пересылки данных в процессе обновления.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –inplace — обновление образа производится без создания временного файла. Полезно при недостатке места, а также в случае нестабильной связи: –inplace позволяет продолжить обновление образа с того места, на котором обновление прекратилось из-за обрыва связи. Использование этой опции слегка снижает эффективность работы алгоритма расчёта разницы между файлами.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -h, –human-readable — показывать размеры переданных/обработанных данных в удобном виде (вместо байт), например 234K или 1,35G
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -z, –compress — включить сжатие передаваемых данных.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –progress — показывать индикацию процесса обработки файла.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –partial — не удалять локальный файл перед синхронизацией
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 -P — тоже что и –partial вместе с –progress
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –stats — выводить статистику — показывает сколько было принято/передано, сколько удалось сэкономить и т.п.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420\u042b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;24591-68502&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;шаблоны_исключения&quot;&gt;ШАБЛОНЫ ИСКЛЮЧЕНИЯ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Шаблоны исключения и включения, будучи заданными, позволяют гибко выделять, какие файлы должны передаваться, а какие должны быть пропущены.
&lt;/p&gt;

&lt;p&gt;
rync строит упорядоченный список на основе параметров –include/–exclude, указанных в командной строке. Rsync проверяет каждое имя файла или каталога относительно соответствия каждому шаблону включения/исключения. В действие вступает первое же совпадение. Если совпавший шаблон исключающий, то соответствующий файл пропускается. Если шаблон включающий, то не пропускается. При отсутствии подходящих шаблонов к имени файла он также не пропускается.
&lt;/p&gt;

&lt;p&gt;
Имена файлов проверяемых по таким шаблонам задаются относительно каталога назначения, &amp;quot;верхнего каталога&amp;quot;, так что шаблоны необязательно должны включать элементы исходного или конечного каталогов. Единственный случай, когда шаблоны будут проверяться относительно абсолютных путей к файлам или каталогам, - это случай, когда исходным путем является корневой каталог файловой системы.
&lt;/p&gt;

&lt;p&gt;
Заметьте, что при использовании параметра -r (он подразумевается при -a) каждая отдельная часть каждого пути просматривается сверху вглубь, так что шаблоны включения/исключения применяются рекурсивно к каждой такой части.
&lt;/p&gt;

&lt;p&gt;
Также обратите внимание, что параметры –include и –exclude допускают только по одному шаблону каждый. Для добавления множества шаблонов используйте параметры –include-from и –exclude-from или множество параметров –include и –exclude соответственно.
&lt;/p&gt;

&lt;p&gt;
Шаблоны могут быть заданы в нескольких формах. Правила для них таковы:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Если шаблон начинается с /, то он проверяется на соответствие с началом имени файла, в противном случае - относительно завершающей части имени. Это эквивалент начального ^ в регулярных выражениях. Таким образом, &amp;quot;/foo&amp;quot; должен соответствовать файлу с именем &amp;quot;foo&amp;quot; в вершине передаваемого дерева. С другой стороны, &amp;quot;foo&amp;quot; должен соответствовать любому файлу &amp;quot;foo&amp;quot; везде в пределах дерева каталогов, потому что алгоритм применяется рекурсивно сверху вглубь. Он работает так, как если бы каждая составная часть пути была завершением имени файла. Начальный / не превращает шаблон в абсолютный путь.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Если шаблон заканчивается на /, то он соответствует только каталогу, не файлу, не ссылке и не устройству.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Если шаблон содержит символы подстановки из набора *?[ , то при проверке соответствия используются правила подстановки командной оболочки для имен файлов. В противном случае используется просто соответствие строке.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 В соответствии двойной звездочки &amp;quot;* *&amp;quot; входит слэш, в то время как для одиночной звездочки &amp;quot;*&amp;quot; на слэше совпадение заканчивается.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Если шаблон содержит слэш / (не считая завершающего слэша) или &amp;quot;* *&amp;quot; , то такой шаблон проверяется на соответствие полному имени файла, включая любые вышестоящие каталоги. Если шаблон не содержит / или &amp;quot;* *&amp;quot;, то такой шаблон проверяется относительно завершающей части имени файла. Еще раз, помните, что алгоритм применяется рекурсивно, так что &amp;quot;полным именем файла&amp;quot; может оказаться в действительности любая часть пути в глубине иерархии от начального каталога.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Если шаблон начинается на &amp;quot;+ &amp;quot; (плюс с последующим пробелом), то это всегда рассматривается как включающий шаблон, даже если указан как часть параметра исключения. Сама часть &amp;quot;+ &amp;quot; не учитывается при проверке на соответствие.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Если шаблон начинается на &amp;quot;- &amp;quot; (минус с последующим пробелом), то это всегда рассматривается как исключающий шаблон, даже если он фигурирует как часть параметра включения. Сама часть &amp;quot;- &amp;quot; не учитывается при проверке на соответствие.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Если шаблоном указан одиночный восклицательный знак ! , то текущий список включения/исключения сбрасывается удалением всех ранее определенных шаблонов.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Правила +/- наиболее полезны в списках, читаемых из файла, позволяя Вам иметь один общий список, который содержит как исключающие, так и включающие шаблоны.
&lt;/p&gt;

&lt;p&gt;
Если Вы завершите исключающий список указанием –exclude &amp;#039;*&amp;#039;, то обратите внимание, что из-за рекурсивного характера алгоритм остановится на родительских каталогах и не будет пробовать файлы внутри них за исключением тех случаев, когда Вы явно укажете включать родительские каталоги файлов, которые Вы хотите включить. Для включения всех каталогов используйте –include &amp;#039;*/&amp;#039; до –exclude &amp;#039;*&amp;#039;.
&lt;/p&gt;

&lt;p&gt;
Несколько примеров включения/исключения:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –exclude &amp;quot;*.o&amp;quot; исключить все имена файлов, соответствующие *.o
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –exclude &amp;quot;/foo&amp;quot; исключить файл с именем foo в верхнем каталоге
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –exclude &amp;quot;foo/&amp;quot; исключить любой каталог с именем foo
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –exclude &amp;quot;/foo/*/bar&amp;quot; исключить любой файл с именем bar в двух уровнях вглубь по иерархии от каталога &amp;quot;foo&amp;quot; в вершине дерева
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –exclude &amp;quot;/foo/**/bar&amp;quot; исключить любой файл с именем bar в двух и более уровнях вглубь по иерархии от верхнего каталога &amp;quot;foo&amp;quot;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –include &amp;quot;*/&amp;quot; –include &amp;quot;*.c&amp;quot; –exclude &amp;quot;*&amp;quot; включить только каталоги и файлы с Си-исходниками
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 –include &amp;quot;foo/&amp;quot; –include &amp;quot;foo/bar.c&amp;quot; –exclude &amp;quot;*&amp;quot; включит только foo/bar.c (каталог foo/ нужно включать явно, иначе он будет пропущен из-за &amp;quot;*&amp;quot;)
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0428\u0410\u0411\u041b\u041e\u041d\u042b \u0418\u0421\u041a\u041b\u042e\u0427\u0415\u041d\u0418\u042f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0448\u0430\u0431\u043b\u043e\u043d\u044b_\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;68503-77246&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;пакетный_режим&quot;&gt;ПАКЕТНЫЙ РЕЖИМ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Заметьте: Пакетный режим должен рассматриваться как экспериментальный в этой версии rsync. Интерфейс и дизайн могут измениться, прежде чем его реализация стабилизируется.
&lt;/p&gt;

&lt;p&gt;
Пакетный режим может использоваться для выполнения обновлений нескольких идентичных систем. Предположим, что имеется дерево каталогов, которое нужно реплицировать на некоторое количество машин. Теперь предположим, что в это исходное дерево внесены изменения, которые нужно распространить на те машины. В порядке реализации этого в пакетном режиме rsync запускается с параметром –write-batch для копирования изменений исходного дерева на одну из конечных машин. Этот параметр заставляет rsync сохранить в набор файлов пакетного обновления (см. ниже) информацию, необходимую для повторения той же операции копирования относительно и других машин. Имя каждого файла в наборе начинается с префикса, указанного пользователем в аргументе для параметра –write-batch. Затем этот набор файлов копируется на каждую из оставшихся удаленных машин, где запускается rsync с параметром –read-batch, тем же префиксом и конечным деревом назначения. Rsync обновляет последнее, используя информацию, сохраненную в наборе файлов пакетного обновления.
&lt;/p&gt;

&lt;p&gt;
Набор состоит из 4 файлов:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &amp;lt;prefix&amp;gt;.rsync_argvs параметры и аргументы командной строки
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &amp;lt;prefix&amp;gt;.rsync_flist внутренние метаданные rsync&amp;#039;а о перемещаемых файлах
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &amp;lt;prefix&amp;gt;.rsync_csums контрольные суммы
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &amp;lt;prefix&amp;gt;.rsync_delta блоки данных для обновления и изменения файлов
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Файл .rsync_argvs содержит необходимые команды оболочки, подходящие для обновления конечного дерева каталогов, используя набор файлов пакетного обновления. Это можно использовать при запуске из Bourne-подобной оболочки, дополнительно передавая параметр альтернативного пути который затем используется вместо оригинального. Последнее полезно, если конечный путь отличается от оригинального конечного пути.
&lt;/p&gt;

&lt;p&gt;
Генерация набора файлов пакетного обновления позволяет избежать многократного повторения создания информации о состоянии файлов, контрольных суммах и блоках данных при обновлении многих конечных деревьев каталогов. Многоадресные транспортные протоколы могут быть использованы для передачи файлов пакетного обновления параллельно на несколько машин за раз вместо посылки их на каждую индивидуально.
&lt;/p&gt;

&lt;p&gt;
Примеры:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ rsync --write-batch=pfx -a /source/dir/ /adest/dir/
$ rcp pfx.rsync_* remote:
$ ssh remote rsync --read-batch=pfx -a /bdest/dir/
# или альтернативно
$ ssh remote ./pfx.rsync_argvs /bdest/dir/&lt;/pre&gt;

&lt;p&gt;
В этом примере rsync используется для обновления /adest/dir/ из /source/dir/ , и информация для повторения этой операции сохраняется в файлах pfx.rsync_* . Эти файлы затем копируются на машину с именем &amp;quot;remote&amp;quot; . После этого rsync запускается на &amp;quot;remote&amp;quot; для обновления /bdest/dir/ тем же способом, что и /adest/dir/ . Последняя строка демонстрирует как можно использовать rsync_argvs для запуска rsync.
&lt;/p&gt;

&lt;p&gt;
Предостережения:
&lt;/p&gt;

&lt;p&gt;
Параметр –read-batch требует аргументом конечное дерево назначения, что значит обновлять идентично тому дереву назначения, которое было использовано для создания набора файлов обновления. Если выясняется различие между конечными деревьями, то обновление немедленно прекращается, оставляя дерево назначения в частично обновленном состоянии. В таком случае rsync может быть использован в своем обычном режиме (не пакетном) для исправления дерева назначения.
&lt;/p&gt;

&lt;p&gt;
Версия rsync должна быть везде одинаковой относительно той версии, которая использовалась для создания оригинала.
&lt;/p&gt;

&lt;p&gt;
Параметр -z/–compress не работает в пакетном режиме и выдает ошибку использования. Вместо этого могут быть использованы сторонние средства сжатия для уменьшения размера файлов пакетного обновления при транспортировке к цели.
&lt;/p&gt;

&lt;p&gt;
Параметр -n/–dryrun не работает в пакетном режиме и выдает ошибку выполнения.
&lt;/p&gt;

&lt;p&gt;
См. &lt;a href=&quot;http://www.ils.unc.edu/i2dsi/unc_rsync+.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.ils.unc.edu/i2dsi/unc_rsync+.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.ils.unc.edu/i2dsi/unc_rsync+.html&lt;/a&gt; на предмет документации и технических описаний.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0410\u041a\u0415\u0422\u041d\u042b\u0419 \u0420\u0415\u0416\u0418\u041c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439_\u0440\u0435\u0436\u0438\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;77247-84027&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;символические_ссылки&quot;&gt;СИМВОЛИЧЕСКИЕ ССЫЛКИ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Три основных сценария поведения возможны при обнаружении символических ссылок в исходном каталоге.
&lt;/p&gt;

&lt;p&gt;
По умолчанию символические ссылки не передаются совсем. Для любой существующей ссылки в этом случае выдается сообщение &amp;quot;skipping non-regular&amp;quot; (&amp;quot;пропуск нерегулярного&amp;quot;).
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Если указан параметр –links, то символические ссылки на тот же объект в конечном месте заново пересоздаются. Заметьте, что –archive подразумевает –links.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Если указан параметр –copy-links, то символическая ссылка &amp;quot;раскрывается&amp;quot; копированием того объекта, на который она указывает, вместо создания ссылки.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
rsync также различает безопасные и небезопасные символические ссылки. Примером того, где это может быть использовано, может послужить такое зеркалирование web-сайта, при котором желательно быть уверенным, что в зеркальной копии нет символических ссылок на /etc/passwd в доступной всем пользователям части сайта. При использовании –copy-unsafe-links любые ссылки копируются в конечное место в виде файла, на который они указывают. Параметр –safe-links указывает полностью пропускать небезопасные ссылки.
&lt;/p&gt;

&lt;p&gt;
Символические ссылки считаются небезопасными, если они указывают на абсолютный путь (начинающийся с /), если они пустые или если они содержат достаточное количество &amp;quot;..&amp;quot;, чтобы выйти за пределы каталога копирования.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0418\u041c\u0412\u041e\u041b\u0418\u0427\u0415\u0421\u041a\u0418\u0415 \u0421\u0421\u042b\u041b\u041a\u0418&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435_\u0441\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;84028-86384&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;диагностика&quot;&gt;ДИАГНОСТИКА&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
rsync порой производит сообщения об ошибках, которые могут показаться немного загадочными. Одним из таких сообщений является &amp;quot;protocol version mismatch - is your shell clean?&amp;quot; (&amp;quot;несоответствие версий - ваша оболочка в порядке?&amp;quot;).
&lt;/p&gt;

&lt;p&gt;
Это сообщение обычно является следствием того, что Ваши запускающие скрипты или возможности удаленной оболочки производят лишний мусор в потоке, который rsync использует в качестве транспорта. Способ диагностирования этой проблемы следующий:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh remotehost /bin/true &amp;gt; out.dat&lt;/pre&gt;

&lt;p&gt;
и посмотреть в out.dat . Если все работает корректно, то этот файл должен быть нулевого размера. Если Вы получаете вышеупомянутое сообщение от rsync, то Вы, возможно, найдете какие-то текст или данные в файле out.dat . Взгляните на его содержимое и по нему проверьте то, что может его производить. Наиболее общая причина - это неправильно настроенные скрипты запуска (такие как .cshrc или .profile), которые содержат выражения, выдающие сообщения при не интерактивном входе в систему.
&lt;/p&gt;

&lt;p&gt;
Если Вы имеете трудности с отладкой шаблонов включения и(или) исключения, то попробуйте указать параметр -vv. При таком уровне подробностей rsync будет показывать, почему включен или исключен каждый отдельный файл.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u0418\u0410\u0413\u041d\u041e\u0421\u0422\u0418\u041a\u0410&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;86385-88520&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;коды_завершения&quot;&gt;КОДЫ ЗАВЕРШЕНИЯ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 0 Успешно
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 1 Синтаксическая ошибка или ошибка использования
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 2 Несовместимость протоколов
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 3 Ошибки выбора входных/выходных файлов и каталогов
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 4 Запрошенное действие не поддерживается: была сделана попытка работы с 64-битными файлами на платформе, которая их не поддерживает; или указан параметр, который поддерживается только клиентом и не поддерживается сервером.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 5 Ошибка при попытке начать работать по протоколу клиент-сервер
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 10  Ошибка сокета ввода/вывода
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 11  Ошибка ввода/вывода файла
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 12  Ошибка в потоке данных rsync-протокола
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 13  Ошибки при диагностике
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 14  Ошибка в IPC-коде
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 20  Получены сигналы или SIGUSR1, или SIGINT
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 21  Вызов waitpid() возвращает ошибку
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 22  Error allocating core memory buffers
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 23  Незавершенная передача из-за ошибки
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 24  Незавершенная передача из-за пропадания исходного файла
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 30  Время ожидания при передаче/приеме данных
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u041e\u0414\u042b \u0417\u0410\u0412\u0415\u0420\u0428\u0415\u041d\u0418\u042f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u0434\u044b_\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;88521-90102&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;переменные_окружения&quot;&gt;ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 CVSIGNORE Переменная окружения CVSIGNORE дополняет исключающие шаблоны из файла .cvsignore. За деталями см. параметр –cvs-exclude.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 RSYNC_RSH Переменная окружения RSYNC_RSH позволяет переопределить программу удаленной оболочки, используемую rsync&amp;#039;ом как транспорт. Параметры командной строки для оболочки указываются после имени программы, также как и для параметра -e.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 RSYNC_PROXY Переменная окружения RSYNC_PROXY позволяет указать rsync-клиенту использовать web-прокси для подключения к rsync-серверу. Вы должны указать прокси в виде пары hostname:port .
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 RSYNC_PASSWORD  Установка значения RSYNC_PASSWORD позволяет осуществить rsync-соединение к rsync-серверу без вмешательства пользователя для ввода пароля. Заметьте, что это не тоже самое, что и пароль для транспортной оболочки, например, ssh.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 USER или LOGNAME  Переменные окружения USER или LOGNAME используются для определения пользователя по умолчанию, имя которого предоставляется rsync-серверу для аутентификации.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 HOME  Переменная HOME используется для поиска пользовательского файла .cvsignore.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0415\u0420\u0415\u041c\u0415\u041d\u041d\u042b\u0415 \u041e\u041a\u0420\u0423\u0416\u0415\u041d\u0418\u042f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435_\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;90103-91944&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;файлы&quot;&gt;ФАЙЛЫ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
/etc/rsyncd.conf или rsyncd.conf
&lt;/p&gt;

&lt;p&gt;
СМ. ТАКЖЕ
&lt;/p&gt;

&lt;p&gt;
rsyncd.conf(5)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0424\u0410\u0419\u041b\u042b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0444\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;91945-92042&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit21&quot; id=&quot;диагностика1&quot;&gt;ДИАГНОСТИКА&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u0418\u0410\u0413\u041d\u041e\u0421\u0422\u0418\u041a\u0410&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u04301&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;92043-92082&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit22&quot; id=&quot;ошибки&quot;&gt;ОШИБКИ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Информация о времени передается как unix-структура time_t .
&lt;/p&gt;

&lt;p&gt;
При передаче на файловую систему FAT rsync может скопировать не измененные файлы. См. комментарий к параметру –modify-window.
&lt;/p&gt;

&lt;p&gt;
Права на файлы, устройства и т.п. передаются как изначальные числовые значения.
&lt;/p&gt;

&lt;p&gt;
См. также комментарии к параметру –delete.
&lt;/p&gt;

&lt;p&gt;
Пожалуйста, сообщайте об ошибках! См. web-сайт &lt;a href=&quot;http://rsync.samba.org/&quot; class=&quot;urlextern&quot; title=&quot;http://rsync.samba.org/&quot; rel=&quot;ugc nofollow&quot;&gt;http://rsync.samba.org/&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0428\u0418\u0411\u041a\u0418&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0448\u0438\u0431\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;92083-92750&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit23&quot; id=&quot;credits&quot;&gt;CREDITS&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
rsync распространяется на условиях &lt;abbr title=&quot;GNU General Public License&quot;&gt;GPL&lt;/abbr&gt;. См. файл COPYING на предмет деталей.
&lt;/p&gt;

&lt;p&gt;
Web-сайт доступен по адресу &lt;a href=&quot;http://rsync.samba.org/&quot; class=&quot;urlextern&quot; title=&quot;http://rsync.samba.org/&quot; rel=&quot;ugc nofollow&quot;&gt;http://rsync.samba.org/&lt;/a&gt;. Сайт содержит в том числе &lt;abbr title=&quot;Frequently Asked Questions&quot;&gt;FAQ&lt;/abbr&gt;-O-Matic, который отвечает на многие незатронутые в этом руководстве вопросы.
&lt;/p&gt;

&lt;p&gt;
Первичный ftp-сервер для rsync &lt;a href=&quot;ftp://rsync.samba.org/pub/rsync&quot; class=&quot;urlextern&quot; title=&quot;ftp://rsync.samba.org/pub/rsync&quot; rel=&quot;ugc nofollow&quot;&gt;ftp://rsync.samba.org/pub/rsync&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Нам было бы приятно услышать от Вас, что Вам понравилась наша программа.
&lt;/p&gt;

&lt;p&gt;
Эта программа использует превосходную библиотеку сжатия zlib, написанную Jean-loup Gailly и Mark Adler.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CREDITS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;credits&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;92751-93543&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit24&quot; id=&quot;благодарности&quot;&gt;БЛАГОДАРНОСТИ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Благодарим Richard Brent, Brendan Mackay, Bill Waite, Stephen Rothwell и David Bell за полезные предложения, патчи и тестирование rsync. Если мы пропустили некоторых людей, то пусть примут наши извинения.
&lt;/p&gt;

&lt;p&gt;
Специальные благодарности: David Dykstra, Jos Backus, Sebastian Krahmer.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u041b\u0410\u0413\u041e\u0414\u0410\u0420\u041d\u041e\u0421\u0422\u0418&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;93544-93997&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit25&quot; id=&quot;автор&quot;&gt;АВТОР&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
rsync была написана Andrew Tridgell &lt;a href=&quot;mailto:&amp;#116;&amp;#114;&amp;#105;&amp;#100;&amp;#103;&amp;#101;&amp;#64;&amp;#115;&amp;#97;&amp;#109;&amp;#98;&amp;#97;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#116;&amp;#114;&amp;#105;&amp;#100;&amp;#103;&amp;#101;&amp;#64;&amp;#115;&amp;#97;&amp;#109;&amp;#98;&amp;#97;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;&amp;#116;&amp;#114;&amp;#105;&amp;#100;&amp;#103;&amp;#101;&amp;#64;&amp;#115;&amp;#97;&amp;#109;&amp;#98;&amp;#97;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&lt;/a&gt; and Paul Mackerras.
&lt;/p&gt;

&lt;p&gt;
Сейчас rsync сопровождается Martin Pool &lt;a href=&quot;mailto:&amp;#109;&amp;#98;&amp;#112;&amp;#64;&amp;#115;&amp;#97;&amp;#109;&amp;#98;&amp;#97;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#98;&amp;#112;&amp;#64;&amp;#115;&amp;#97;&amp;#109;&amp;#98;&amp;#97;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;&amp;#109;&amp;#98;&amp;#112;&amp;#64;&amp;#115;&amp;#97;&amp;#109;&amp;#98;&amp;#97;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Списки рассылок для поддержки и разработки доступны по адресу &lt;a href=&quot;http://lists.samba.org&quot; class=&quot;urlextern&quot; title=&quot;http://lists.samba.org&quot; rel=&quot;ugc nofollow&quot;&gt;http://lists.samba.org&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Если Вы подозреваете, что нашли уязвимость в rsync, пожалуйста, известите Martin Pool и Andrew Tridgell. Для других вопросов пользуйтесь списком рассылки.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0412\u0422\u041e\u0420&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0432\u0442\u043e\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;93998-94586&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit26&quot; id=&quot;перевод&quot;&gt;ПЕРЕВОД&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Sergey Golovin &lt;a href=&quot;mailto:&amp;#115;&amp;#118;&amp;#103;&amp;#111;&amp;#108;&amp;#64;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#114;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#118;&amp;#103;&amp;#111;&amp;#108;&amp;#64;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#114;&amp;#117;&quot;&gt;&amp;#115;&amp;#118;&amp;#103;&amp;#111;&amp;#108;&amp;#64;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#114;&amp;#117;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Aleksandr Blokhin &lt;a href=&quot;mailto:&amp;#115;&amp;#97;&amp;#115;&amp;#115;&amp;#64;&amp;#97;&amp;#108;&amp;#116;&amp;#108;&amp;#105;&amp;#110;&amp;#117;&amp;#120;&amp;#46;&amp;#114;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#97;&amp;#115;&amp;#115;&amp;#64;&amp;#97;&amp;#108;&amp;#116;&amp;#108;&amp;#105;&amp;#110;&amp;#117;&amp;#120;&amp;#46;&amp;#114;&amp;#117;&quot;&gt;&amp;#115;&amp;#97;&amp;#115;&amp;#115;&amp;#64;&amp;#97;&amp;#108;&amp;#116;&amp;#108;&amp;#105;&amp;#110;&amp;#117;&amp;#120;&amp;#46;&amp;#114;&amp;#117;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0415\u0420\u0415\u0412\u041e\u0414&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0435\u0432\u043e\u0434&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;94587-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="http://178.140.10.58:8080/doku.php?id=rsync:script1">
        <dc:format>text/html</dc:format>
        <dc:date>2015-09-30T12:55:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title></title>
        <link>http://178.140.10.58:8080/doku.php?id=rsync:script1</link>
        <description>&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:ssh&amp;amp;do=showtag&amp;amp;tag=ssh&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:ssh&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; ssh&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:rsync&amp;amp;do=showtag&amp;amp;tag=rsync&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:rsync&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; rsync&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:backup&amp;amp;do=showtag&amp;amp;tag=backup&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:backup&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; backup&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:script&amp;amp;do=showtag&amp;amp;tag=script&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:script&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; script&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh
# simple rsync backup script written by farmal.in 2011-01-21
#
# latest backup is always in $SDIR/domains/$domain/latest folder
# all backups which are older than 7 days would be deleted
# backup.ini file can&amp;#039;t contain comments, empty lines and spaces in domain names
#
# example of a GOOD backup.ini:
# mydomain.com user@mydomain.com:/path/to/public_html
#
 
SDIR=&amp;quot;/usr/local/backup&amp;quot;
SKEY=&amp;quot;$SDIR/.ssh/id_rsa&amp;quot;
SLOG=&amp;quot;$SDIR/backup.log&amp;quot;
PID_FILE=&amp;quot;$SDIR/backup.pid&amp;quot;
ADMIN_EMAIL=&amp;quot;email@domain.com&amp;quot;
 
 
if [ -e $PID_FILE ]; then
        echo &amp;quot;this task is already running or previous run was completed with errors on `hostname`&amp;quot; | mail -s &amp;quot;Some mess with backups on `hostname`...&amp;quot; $ADMIN_EMAIL
        exit
fi
 
touch $PID_FILE
 
# redirecting all output to logfile
exec &amp;gt;&amp;gt; $SLOG 2&amp;gt;&amp;amp;1
 
# parsing backup.ini file into $domain and $from variables
cat backup.ini | while read domain from ; do
    destination=&amp;quot;$SDIR/domains/$domain&amp;quot;
    # downloading a fresh copy in &amp;#039;latest&amp;#039; directory
    echo -e &amp;quot;`date` *** $domain backup started&amp;quot;&amp;gt;&amp;gt;$SLOG
 
    # start counting rsync worktime
    start=$(date +%s)
    rsync --archive --one-file-system --delete -e &amp;quot;ssh -i $SKEY&amp;quot; &amp;quot;$from&amp;quot; &amp;quot;$destination/latest&amp;quot; || (echo -e &amp;quot;Error when rsyncing $domain. \n\n For more information see $SLOG:\n\n `tail $SLOG`&amp;quot; | mail -s &amp;quot;rsync error&amp;quot; $ADMIN_EMAIL &amp;amp; continue)
    finish=$(date +%s)
    echo -e &amp;quot;`date` *** RSYNC worked for $((finish - start)) seconds&amp;quot;&amp;gt;&amp;gt;$SLOG
 
    # cloning the fresh copy by hardlinking
    cp --archive --link &amp;quot;$destination/latest&amp;quot; &amp;quot;$destination/`date +%F`&amp;quot;
    # deleting all previous copies which are older than 7 days by creation date, but not &amp;#039;latest&amp;#039;
    find &amp;quot;$destination&amp;quot; -maxdepth 1 -ctime +7 -type d -path &amp;quot;$destination/????-??-??&amp;quot; -exec rm -r -f {} \;
    echo &amp;quot;`date` *** The size of $domain/latest is now `du -sh $destination/latest | awk &amp;#039;{print $1}&amp;#039;` &amp;quot;&amp;gt;&amp;gt;$SLOG
    echo -e &amp;quot;`date` *** $domain backup ended&amp;quot;&amp;gt;&amp;gt;$SLOG
    echo -e &amp;quot;`date` *** Total allocated `du -sh $destination | awk &amp;#039;{print $1}&amp;#039;`&amp;quot;&amp;gt;&amp;gt;$SLOG
    echo -e &amp;quot;------------------------------------------------------------------&amp;quot;&amp;gt;&amp;gt;$SLOG
done
 
rm $PID_FILE&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="http://178.140.10.58:8080/doku.php?id=rsync:script2">
        <dc:format>text/html</dc:format>
        <dc:date>2015-09-30T12:58:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title></title>
        <link>http://178.140.10.58:8080/doku.php?id=rsync:script2</link>
        <description>&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:ssh&amp;amp;do=showtag&amp;amp;tag=ssh&quot; class=&quot;wikilink1&quot; title=&quot;tag:ssh&quot; rel=&quot;tag&quot;&gt;ssh&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:rsync&amp;amp;do=showtag&amp;amp;tag=rsync&quot; class=&quot;wikilink1&quot; title=&quot;tag:rsync&quot; rel=&quot;tag&quot;&gt;rsync&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:backup&amp;amp;do=showtag&amp;amp;tag=backup&quot; class=&quot;wikilink1&quot; title=&quot;tag:backup&quot; rel=&quot;tag&quot;&gt;backup&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:script&amp;amp;do=showtag&amp;amp;tag=script&quot; class=&quot;wikilink1&quot; title=&quot;tag:script&quot; rel=&quot;tag&quot;&gt;script&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
#
# bontmia (Backup Over Network To Multiple Incremental Archives)
#
# This was written to get the functionality of glastree (Jeremy Wohl)
# available to use towards remote hosts and having a selective long
# term storage.
#
# Written by John Enok Vollestad in April 2003 and have later
# undergone some bugfixes and enhancements.

print_usage()
{
    cat &amp;lt;&amp;lt;EOF | ${PAGER:-more}

NAME
        Bontmia - Backup Over Network To Multiple Incremental Archives
        Version 0.14

SYNOPSIS
        bontmia --dest &amp;lt;dest. dir&amp;gt; [options] [source dir [source dir ...]]

DESCRIPTION
        Bontmia is a network-based backup tool that saves configurable
        numbers of last month, week, day, hour, and minute backups.
        Each backup is a complete snapshot of the original
        directories.  Only new and changed files are copied over the
        network when generating a snapshot.  Remote access is
        implemented securely using ssh.  Unchanged files are stored as
        hard links in the archive and therefore takes virtually no
        space.

        The backups is stored in a directory structure in the format
        YYYY/MM/DD/HH:MM.  Each directory contains a snapshot of the
        backed up directories.  This is stored incrementally by
        letting every file not changed between backups be a hard link
        to the same file in the previous backup.  The actual copying
        is done with rsync.  To avoid typing inn a password you do as
        usual with ssh by generating a public key on the host where
        the backup is stored, read the manual page for ssh, and adding
        this to the list of authorized hosts on the remote computer,
        read the manual page for sshd.

        Which backup to store for how long is configurable, see below.

        The return value is 0 on success and 1 if backing up one of
        the sources failed.

        The destination can not be remote.  If you want to place the
        backup on a remote server, then run Bontmia as a command with
        ssh like &amp;quot;ssh user@host.domain bontmia &amp;lt;options&amp;gt;&amp;quot;.

        Use at your own risk.

ARGUMENTS
        --dest &amp;lt;dir&amp;gt; 
                Sets the destination directories where the backups is
                placed.  WARNING! existing files in this directory
                will be DELETED!


OPTIONS
        --rotation &amp;lt;spec&amp;gt;

                Specifies the number of backups in each category to
                save.  The &amp;#039;spec&amp;#039; is of the form

          [0-9]*minutes[0-9]*hours[0-9]*days[0-9]*weeks[0-9]*month[0-9]*years

                so 0minutes0hours7days4weeks12month2years is an
                example for daily backup.  Bontmia should be run in
                cron or manually the numbers given here only specifies
                how many backups to save.

                The different categories (minutes, hours ...) is just
                overlapping filters.  More than one filter might save
                a backup and a backup is removed when no filter saves
                the backup any more.

                The number of days given here will apply like this:

                If the number of days to save is 3 then the last
                backup within each of the last 3 days when backup were
                done willl be saved.  This means that if you do backup
                like this:

                day:    0 1 2 3 4 5
                backup: y - y - y y

                Where y means a backup were done and - means it were
                not then after the backup done on day 5 is done, then
                the backups on day 2, 4 and 5 is saved when the last 3
                day backups is saved.  Use the dryrun option below to
                experiment and learn more about this option.

        --dryrun
                When this option is used, the backup is not performed,
                but the backups to be removed is listed.  This is
                handy when you want to ensure that you do not remove
                all the precious backups when used in combination with
                the rotation option.

        --bwlimit &amp;lt;number&amp;gt;
                Specifies a maximum transfer rate in kilobytes per
                second. This option is most effective with large files
                (several megabytes and up). Due to the nature of rsync
                transfers, blocks of data are sent, then if rsync
                determines the transfer was too fast, it will wait
                before sending the next data block. The result is an
                average transfer rate equalling the specified limit. A
                value of zero specifies no limit.  The default is no
                limit.

        --temp &amp;lt;temp dir&amp;gt;
                Specifies the directory used for temporary files during
                transfer.  NB! This MUST be on the same disk volume as
                destination or incremental copy will not work.

        --port &amp;lt;number&amp;gt;
                Specifies the port number to connect to on the remote
                host when using ssh, which is the only option.


EXAMPLES
        bontmia --dest ./backup  --rotation \\
                5minutes0hours0days0weeks0month0years \\
                foo@bar:/baz/zoot

        Here there is made a copy of foo@bar:/baz/zoot in the
        directory backup on the local host.  If this command is run
        every minute, there is store one backup for every minute for
        the last 5 minutes.  If it is run once every day.  There is
        still stored the last 5 backups done at unique minutes so the
        last 5 backups is stored which means 5 last days.

        Hint: set the values for times shorter than the interval used
              when doing backup to 0.

        bontmia --dest ./backup  --rotation \\
                0minutes0hours7days4weeks12month0years \\
                foo@bar:/baz/zoot

        Here there will at the most be stored 7 + 4 + 12 backups
        (minus overlap between the backups).  This can be a good
        command to run nightly.


        bontmia --dest ./backup  --rotation \\
                0minutes24hours7days4weeks12month0years \\
                foo@bar:/baz/zoot

        This is for running every hour.  Remember that only the
        changes is transferred and running more often not necessarily
        will mean copying more data over the network.


        bontmia --dryrun --dest ./backup  --rotation \\
                0minutes24hours7days4weeks12month0years \\
                /home/bar/baz foo.no:/var/db

        With the dryrun option it show what would happen if the backup
        were run.  No action on the file system done.


        When bontmia runs it sends output to standard output.  If you
        do not want this you can redirect it to /dev/null.

CONTACT
        Bontmia was written in april 2003 by John Enok Vollestad
        &amp;lt;john.enok@vollestad.no&amp;gt; to merge the functionality of
        glastree and rsync in one application with a more flexible
        selection of long term storage.  It has later undergone some
        bugfixes and enhancements. http://folk.uio.no/johnen/bontmia/

EOF
    exit 1
}


unlock_destination()
{
    rm -f &amp;quot;${tmpdir}/is_running.lock&amp;quot;
}


lock_destination()
{
    # Ensure that there is no other bontmia running against the same destination
    touch /tmp/bontmia_lock_file.$$
    echo &amp;quot;no&amp;quot; | mv -i /tmp/bontmia_lock_file.$$ &amp;quot;${tmpdir}&amp;quot;/is_running.lock 2&amp;gt;&amp;amp;1 | \
  grep &amp;quot;overwrite&amp;quot; &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;amp; {
	echo &amp;quot;Bontmia is already doing a backup on this tmpdir:&amp;quot;
	echo &amp;quot;    ${tmpdir}&amp;quot;
	echo
	echo &amp;quot;    If you are sure this is false you can manually remove the lockfile:&amp;quot;
	echo &amp;quot;        ${tmpdir}/is_running.lock&amp;quot;
	echo
	exit 1
    }
}


full_name() {
    host=&amp;quot;${1}&amp;quot;;
    if host ${host} | grep &amp;quot;domain name pointer&amp;quot; &amp;gt;/dev/null; then
	host ${host} | cut -f5 -d&amp;#039; &amp;#039; | sed -e &amp;#039;s/\.$//&amp;#039;;
    else
	if host ${host} | grep &amp;quot;has address&amp;quot; &amp;gt;/dev/null; then
	    full_name $(host ${host} | grep &amp;quot;has address&amp;quot; | cut -f4 -d&amp;#039; &amp;#039;);
	fi;
    fi;
}


filter_template()
{
    attribute=&amp;quot;${1}&amp;quot;
    grep_value=&amp;quot;${2}&amp;quot;
    last_number=&amp;quot;${3}&amp;quot;
    sort_options=&amp;quot;${4}&amp;quot;
    template_name=&amp;quot;${5}&amp;quot;

    if test &amp;quot;x${sort_options}&amp;quot; != x; then
	sort=&amp;quot;sort ${sort_options}&amp;quot;
    else
	sort=&amp;quot;cat&amp;quot;
    fi

    (
	cd &amp;quot;${backup_destination}&amp;quot;
	for archive in */*/*/*; do
	    year=$(echo ${archive} | cut -f1 -d&amp;#039;/&amp;#039;)
	    month=$(echo ${archive} | cut -f2 -d&amp;#039;/&amp;#039;)
	    day=$(echo ${archive} | cut -f3 -d&amp;#039;/&amp;#039;)
	    the_clock=$(echo ${archive} | cut -f4 -d&amp;#039;/&amp;#039;)
	    
	    the_date=${year}-${month}-${day}
	    date -d &amp;quot;${the_date}&amp;quot; &amp;quot;+%Y/%m/%d/${the_clock}@${template_name}@${attribute}&amp;quot; || {
		echo &amp;quot;Could not read the time of a previous backup&amp;quot;
		echo &amp;quot;Please email the author&amp;quot;
		unlock_destination
		exit 1
	    }
	done | egrep &amp;quot;@.*@${grep_value}&amp;quot; | sort -r | ${sort} | tail -${last_number}
    )
}


handle_last_unfinished()
{
    if test -e ${tmpdir}/unfinished_backup/*; then
	echo
	echo &amp;quot;WARNING: Last backup did not complete&amp;quot;
	echo &amp;quot;  This unfinished backup is now removed&amp;quot;
	echo
	chmod -R u+w &amp;quot;${tmpdir}/unfinished_backup&amp;quot;
	rm -rf &amp;quot;${tmpdir}/unfinished_backup&amp;quot;
    fi
}


make_hard-link_copy_of_last_backup()
{
    last_backup=$(find ${backup_destination} -maxdepth 4 -mindepth 4 | sort | tail -1)
    if test x${last_backup} != x ; then
	echo &amp;quot;Making a hard-link replication of the last backup&amp;quot;
	echo &amp;quot;  (${last_backup})&amp;quot;
	if test &amp;quot;x${dryrun}&amp;quot; == &amp;quot;xno&amp;quot;; then
	    mkdir -p &amp;quot;${tmpdir}/unfinished_backup/${this_backup}&amp;quot; || {
		unlock_destination
		exit 1
	    }
	    cp -lR &amp;quot;${last_backup}/&amp;quot;* &amp;quot;${tmpdir}/unfinished_backup/${this_backup}&amp;quot; &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 || {
		echo &amp;quot;    WARNING: The last backup had NO files!&amp;quot;
		echo &amp;quot;             Or tmpdir is not on the same volume as destination&amp;quot;
	    }
	fi
	first=&amp;quot;no&amp;quot;
    else
	echo &amp;quot;No previous backup detected, will start with an empty replication&amp;quot;
	if test &amp;quot;x${dryrun}&amp;quot; == &amp;quot;xno&amp;quot;; then
	    mkdir -p &amp;quot;${tmpdir}/unfinished_backup/$this_backup&amp;quot; || {
		unlock_destination
		exit 1
	    }
	fi
	first=&amp;quot;yes&amp;quot;
    fi
}


moving_complete_backup_into_archive()
{
    echo
    echo &amp;quot;Moving the complete backup into the backup archive&amp;quot;
    echo &amp;quot;  ($tmpdir/unfinished_backup -&amp;gt; $backup_destination/)&amp;quot;
    
    if test &amp;quot;x$dryrun&amp;quot; == &amp;quot;xno&amp;quot;; then
	mkdir -p &amp;quot;$backup_destination/$this_backup&amp;quot; || {
	    unlock_destination
	    exit 1
	}
	mv &amp;quot;$tmpdir/unfinished_backup/$this_backup/&amp;quot;* &amp;quot;$backup_destination/$this_backup/&amp;quot; || {
	    unlock_destination
	    exit 1
	}
    fi
}


do_the_backup_exist()
{
    if test -e &amp;quot;$backup_destination/$1&amp;quot;; then
	echo &amp;quot;The backup destination already exist&amp;quot;
	echo &amp;quot;This means that there is less than a minute since the last backup&amp;quot;
	unlock_destination
	exit 1
    fi
}


make_backup()
{
    this_backup=$(date +%Y)/$(date +%m)/$(date +%d)/$(date +%H\:%M)

    do_the_backup_exist &amp;quot;$this_backup&amp;quot;

    handle_last_unfinished
    make_hard-link_copy_of_last_backup

    # Apply changes to the hard-link copy
    echo
    if test &amp;quot;x$first&amp;quot; == &amp;quot;xyes&amp;quot;; then
	echo &amp;quot;Backing up&amp;quot;
    else
	echo &amp;quot;Backing up by modifying the replication&amp;quot;
    fi

    for dir in ${backup_dirs} ; do
	dir_wo_user=$(echo &amp;quot;$dir&amp;quot; | cut -f2- -d&amp;#039;@&amp;#039;)
	echo &amp;quot;  ${dir_wo_user}&amp;quot;
	hostname=$(echo &amp;quot;$dir&amp;quot; | cut -f2- -d&amp;#039;@&amp;#039; | cut -f1 -d&amp;#039;:&amp;#039;)&amp;quot;:&amp;quot;
	userhost=$(echo &amp;quot;$dir&amp;quot; | cut -f1 -d&amp;#039;:&amp;#039;)

	if test &amp;quot;x$hostname&amp;quot; == &amp;quot;x$(hostname):&amp;quot;; then
	    # remove hostname from dir to speed up local backup
	    dir=$(echo &amp;quot;$dir&amp;quot; | cut -f2 -d&amp;#039;:&amp;#039;)
	fi

	if test &amp;quot;x$dryrun&amp;quot; == &amp;quot;xno&amp;quot;; then
	    mkdir -p &amp;quot;$tmpdir/unfinished_backup/$this_backup/$hostname&amp;quot;

	    rsync ${rsync_options} -e &amp;quot;ssh -p $port&amp;quot; &amp;quot;${dir}&amp;quot; &amp;quot;${tmpdir}/unfinished_backup/$this_backup/${hostname}&amp;quot; 2&amp;gt;&amp;amp;1 &amp;gt;/tmp/bontmia_rsync_output.$$ || {
		echo
		echo &amp;quot;  Caught an error doing rsync (return code $?)&amp;quot;
		echo &amp;quot;  The last 10 lines of output from rsync:&amp;quot;
		tail -10 /tmp/bontmia_rsync_output.$$
		echo
		echo &amp;quot;  Retrying rsync...&amp;quot;
		rsync ${rsync_options} -e &amp;quot;ssh -p $port&amp;quot; &amp;quot;${dir}&amp;quot; &amp;quot;${tmpdir}/unfinished_backup/$this_backup/${hostname}&amp;quot; 2&amp;gt;&amp;amp;1 &amp;gt;/tmp/bontmia_rsync_output.$$ || {
		    echo
		    echo &amp;quot;  Still no luck.  Rsync failed with returncode $?&amp;quot;
		    echo &amp;quot;  $dir&amp;quot;
		    echo &amp;quot;  Please check that there is room for all the data&amp;quot;
		    echo &amp;quot;  The last 10 lines of output from rsync:&amp;quot;
		    tail -10 /tmp/bontmia_rsync_output.$$.2
		    echo
		    echo
		    echo &amp;quot;  Continuing with the next backup source&amp;quot;
		    echo
		    exit_status=&amp;quot;1&amp;quot;
		}
	    }
	fi
    done
    
    delete_outside_sync &amp;quot;${tmpdir}/unfinished_backup/$this_backup/&amp;quot;
    
    moving_complete_backup_into_archive

    if test &amp;quot;x$dryrun&amp;quot; == &amp;quot;xno&amp;quot;; then
	chmod -R u+w ${tmpdir}/unfinished_backup
	rm -rf &amp;quot;$tmpdir/unfinished_backup&amp;quot;
    fi
}


delete_old_backup()
{
    echo
    echo &amp;quot;Calculates which backups to save&amp;quot;
    echo &amp;quot;($filter_minutes minutes, $filter_hours hours, $filter_days days, $filter_weeks weeks, $filter_monthly months, $filter_years years)&amp;quot;

    # by saving the x last, the backups will not be deleted even if no
    # new backups is created

#    archives_to_save=$( (

    archives_with_filter=$(
	    if ! test &amp;quot;0$filter_minutes&amp;quot; -ge 0 2&amp;gt;/dev/null; then
		print_usage
	    else
		filter_template &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;$filter_minutes&amp;quot; &amp;quot;-u&amp;quot; &amp;quot;minutes&amp;quot;
	    fi

	    if ! test &amp;quot;0$filter_hours&amp;quot; -ge 0 2&amp;gt;/dev/null; then
		print_usage
	    else
		filter_template &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;$filter_hours&amp;quot; &amp;quot;-u -k 1,1 -t :&amp;quot; &amp;quot;hours&amp;quot;
	    fi

	    if ! test &amp;quot;0$filter_days&amp;quot; -ge 0 2&amp;gt;/dev/null; then
		print_usage
	    else
		filter_template &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;$filter_days&amp;quot; &amp;quot;-u -k 1,3 -t /&amp;quot; &amp;quot;days&amp;quot;
	    fi

	    if ! test &amp;quot;0$filter_weeks&amp;quot; -ge 0 2&amp;gt;/dev/null; then
		print_usage
	    else
		filter_template &amp;quot;%Y-%V&amp;quot; &amp;quot;&amp;quot; &amp;quot;$filter_weeks&amp;quot; &amp;quot;-u -k 3 -t @&amp;quot; &amp;quot;weeks&amp;quot;
	    fi

	    if ! test &amp;quot;0$filter_monthly&amp;quot; -ge 0 2&amp;gt;/dev/null; then
		print_usage
	    else
		filter_template &amp;quot;%B&amp;quot; &amp;quot;&amp;quot; &amp;quot;$filter_monthly&amp;quot; &amp;quot;-u -k 1,2 -t /&amp;quot; &amp;quot;month&amp;quot;
	    fi

	    if ! test &amp;quot;0$filter_years&amp;quot; -ge 0 2&amp;gt;/dev/null; then
		print_usage
	    else
		filter_template &amp;quot;%Y&amp;quot; &amp;quot;&amp;quot; &amp;quot;$filter_years&amp;quot; &amp;quot;-u -k 1,1 -t /&amp;quot; &amp;quot;years&amp;quot;
	    fi
    )
    
    archives_to_save=$(echo &amp;quot;$archives_with_filter&amp;quot; | cut -f1 -d&amp;#039;@&amp;#039; | sort -u)

    (
	cd ${backup_destination}
	for archive in */*/*/*; do
	    if ! echo &amp;quot;${archives_to_save}&amp;quot; | grep &amp;quot;^${archive}$&amp;quot; &amp;gt;/dev/null; then
		echo &amp;quot;  Removing ${backup_destination}/$archive&amp;quot;
		if test &amp;quot;x$dryrun&amp;quot; == &amp;quot;xno&amp;quot;; then
		    chmod -R u+w ${archive}
		    rm -rf ${archive}
		    rmdir -p $(echo ${archive} | cut -f1-3 -d&amp;#039;/&amp;#039;) 2&amp;gt;/dev/null
		fi
	    else
		echo -n &amp;quot;  Saving ${backup_destination}/$archive by filters:  &amp;quot;
		filters=$(echo &amp;quot;$archives_with_filter&amp;quot; | grep &amp;quot;${archive}&amp;quot; | cut -f2 -d&amp;#039;@&amp;#039;)
		echo $filters
	    fi
	done
    )
}


delete_outside_sync()
{
    # Since we do a copy from last sync with cp -l, we have to
    # remove the extras here

    echo
    echo &amp;quot;Deletes files that should not be in the latest snapshot&amp;quot;
    if test &amp;quot;x$dryrun&amp;quot; == &amp;quot;xno&amp;quot;; then
	(
	    cd $1
	    IFS=&amp;#039;
&amp;#039;
	    for f in $(find -mindepth 1 -depth | egrep -v &amp;quot;$bdirmatch&amp;quot;); do
		if test -e &amp;quot;$f&amp;quot; ||
		    test -h &amp;quot;$f&amp;quot;; then
		    rmdir &amp;quot;$f&amp;quot; 2&amp;gt;/dev/null
		    rm -f &amp;quot;$f&amp;quot; 2&amp;gt;/dev/null
		fi
	    done
	    unset IFS
	)
    fi
}


knead_source_path()
{
    source=&amp;quot;$1&amp;quot;

    # remove trailing &amp;#039;/&amp;#039;
    if echo &amp;quot;$source&amp;quot; | grep &amp;quot;/$&amp;quot; &amp;gt;/dev/null; then
	source=$(echo &amp;quot;$source&amp;quot; | sed -e &amp;#039;s/\/$//&amp;#039;)
    fi
    
    # make the path absolute
    if ! echo &amp;quot;$source&amp;quot; | grep &amp;quot;:&amp;quot; &amp;gt;/dev/null &amp;amp;&amp;amp;
	! echo &amp;quot;$source&amp;quot; | grep &amp;quot;^/&amp;quot; &amp;gt;/dev/null; then
	if echo &amp;quot;$source&amp;quot; | grep &amp;quot;^./&amp;quot; &amp;gt;/dev/null; then
	    source=$(echo &amp;quot;$source&amp;quot; | sed -e &amp;#039;s/^\.\///&amp;#039;)
	fi
	source=&amp;quot;$current_dir/$source&amp;quot;
    fi

    echo &amp;quot;$source&amp;quot;
}


knead_dest_path()
{
    dest=&amp;quot;$1&amp;quot;

    if echo &amp;quot;$dest&amp;quot; | grep &amp;quot;:&amp;quot; &amp;gt;/dev/null; then
	# The destination can not be remote
	print_usage
    fi

    # remove trailing &amp;#039;/&amp;#039;
    if echo &amp;quot;$dest&amp;quot; | grep &amp;quot;/$&amp;quot; &amp;gt;/dev/null; then
	dest=$(echo &amp;quot;$dest&amp;quot; | sed -e &amp;#039;s/\/$//&amp;#039;)
    fi

    # make the path absolute
    if ! echo &amp;quot;$dest&amp;quot; | grep &amp;quot;^/&amp;quot; &amp;gt;/dev/null; then
	if echo &amp;quot;$dest&amp;quot; | grep &amp;quot;^./&amp;quot; &amp;gt;/dev/null; then
	    dest=$(echo &amp;quot;$dest&amp;quot; | sed -e &amp;#039;s/^\.\///&amp;#039;)
	fi
	dest=&amp;quot;$current_dir/$dest&amp;quot;
    fi

    echo &amp;quot;$dest&amp;quot;
}


check_program()
{
    program=&amp;quot;$1&amp;quot;
    type -a &amp;quot;$program&amp;quot; &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 } || {
	echo &amp;quot;You need $program installed and in the path&amp;quot;
	echo &amp;quot;Aborting&amp;quot;
	unlock_destination
	exit 1
    }
}


check_for_programs()
{
    check_program rsync
    check_program host
    check_program date
    find /tmp -maxdepth 1 -mindepth 1 &amp;gt;/dev/null 2&amp;gt;/dev/null || {
	echo &amp;quot;&amp;#039;find&amp;#039; on your system does not support the &amp;#039;--maxdepth&amp;#039; and&amp;quot;
	echo &amp;quot;&amp;#039;--mindepth&amp;#039; options&amp;quot;
	echo &amp;quot;You might not have the GNU version of &amp;#039;find&amp;#039;&amp;quot;
	echo &amp;quot;Aborting&amp;quot;
	unlock_destination
	exit 1
    }
    date -d 20030303 &amp;gt;/dev/null 2&amp;gt;/dev/null || {
	echo &amp;quot;&amp;#039;date&amp;#039; on your system does not support the &amp;#039;--date&amp;#039; option&amp;quot;
	echo &amp;quot;You might not have the GNU version of &amp;#039;date&amp;#039;&amp;quot;
	echo &amp;quot;Aborting&amp;quot;
	unlock_destination
	exit 1
    }
    check_program cp
    touch /tmp/bontmia_test_cp_file.$$ || {
	echo &amp;quot;Could not create a temporary file on /tmp&amp;quot;
	echo &amp;quot;Please make sure that /tmp is writable&amp;quot;
	echo &amp;quot;Aborting&amp;quot;
	unlock_destination
	exit 1
    }
    cp -l /tmp/bontmia_test_cp_file.$$ /tmp/bontmia_test_cp_file.$$.2 &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 || {
	echo &amp;quot;cp on your system does not support the -l option&amp;quot;
	echo &amp;quot;You might not have the GNU version of &amp;#039;cp&amp;#039;&amp;quot;
	echo &amp;quot;Aborting&amp;quot;
	unlock_destination
	exit 1
    }
    rm -f /tmp/bontmia_test_cp_file.$$ /tmp/bontmia_test_cp_file.$$.2
}


#################################################################


if test &amp;quot;x$*&amp;quot; == x; then
    print_usage
fi

current_dir=$(pwd)

filter_minutes=&amp;quot;3&amp;quot;
filter_hours=&amp;quot;24&amp;quot;
filter_days=&amp;quot;7&amp;quot;
filter_weeks=&amp;quot;4&amp;quot;
filter_monthly=&amp;quot;12&amp;quot;
filter_years=&amp;quot;0&amp;quot;
bwlimit=&amp;quot;&amp;quot;
backup_dirs=&amp;quot;&amp;quot;
exit_status=&amp;quot;0&amp;quot;
do_del_old=&amp;quot;no&amp;quot;
port=&amp;quot;22&amp;quot;
compression=&amp;quot;&amp;quot;
rotation=&amp;quot;&amp;quot;
dryrun=&amp;quot;no&amp;quot;

while test &amp;quot;x$*&amp;quot; != x; do
    case &amp;quot;$1&amp;quot; in 
	( &amp;quot;--dryrun&amp;quot; )
	    shift
	    dryrun=&amp;quot;yes&amp;quot;;;
	( &amp;quot;--rotation&amp;quot; )
	    shift
	    rotation=$(echo &amp;quot;$1&amp;quot; | perl -e &amp;#039;$_=&amp;lt;STDIN&amp;gt;; m/^([0-9]*)minutes([0-9]*)hours([0-9]*)days([0-9]*)weeks([0-9]*)month([0-9]*)years$/ || exit 1;                   
print &amp;quot;minutes:$1\n&amp;quot;;
print &amp;quot;hours:$2\n&amp;quot;;
print &amp;quot;days:$3\n&amp;quot;;
print &amp;quot;weeks:$4\n&amp;quot;;
print &amp;quot;month:$5\n&amp;quot;;
print &amp;quot;years:$6\n&amp;quot;;
&amp;#039;) || {
		echo &amp;quot;the option to rotation were not right!&amp;quot;
		print_usage
}
	    filter_minutes=$(echo &amp;quot;$rotation&amp;quot; | grep minutes | cut -f2 -d&amp;#039;:&amp;#039;)
	    filter_hours=$(echo &amp;quot;$rotation&amp;quot; | grep hours | cut -f2 -d&amp;#039;:&amp;#039;)
	    filter_days=$(echo &amp;quot;$rotation&amp;quot; | grep days | cut -f2 -d&amp;#039;:&amp;#039;)
	    filter_weeks=$(echo &amp;quot;$rotation&amp;quot; | grep weeks | cut -f2 -d&amp;#039;:&amp;#039;)
	    filter_monthly=$(echo &amp;quot;$rotation&amp;quot; | grep month | cut -f2 -d&amp;#039;:&amp;#039;)
	    filter_years=$(echo &amp;quot;$rotation&amp;quot; | grep years | cut -f2 -d&amp;#039;:&amp;#039;)
	    do_del_old=&amp;quot;yes&amp;quot;;
	    shift;;
	( &amp;quot;--port&amp;quot; )
	    shift
	    port=&amp;quot;$1&amp;quot;
	    shift;;
	( &amp;quot;--bwlimit&amp;quot; )
	    shift
	    bwlimit=&amp;quot;--bwlimit=$1&amp;quot;
	    shift;;
	( &amp;quot;--temp&amp;quot; )
	    shift
	    tmpdir=&amp;quot;$1&amp;quot;
	    shift;;
	( &amp;quot;--compression&amp;quot; )
	    compression=&amp;quot;-z&amp;quot;
	    shift;;
	( &amp;quot;--dest&amp;quot; )
	    shift;
	    backup_destination=&amp;quot;$(knead_dest_path &amp;quot;$1&amp;quot;)&amp;quot;;
	    if ! test -d &amp;quot;$1&amp;quot;; then
		echo &amp;quot;Destination dir $backup_destination does not exist or is not a directory&amp;quot;
		exit 1
	    fi
	    shift;;
	( [^-]* ) # The rest is sources
	    if test &amp;quot;x$1&amp;quot; == &amp;quot;x&amp;quot;; then
		echo &amp;quot;Missing source directories&amp;quot;
		exit 1
	    fi
	    backup_dirs=&amp;quot;&amp;quot;
	    while test &amp;quot;x$*&amp;quot; != x; do
		dir=&amp;quot;$1&amp;quot;
		if ! echo &amp;quot;$dir&amp;quot; | grep &amp;quot;:&amp;quot; &amp;gt;/dev/null; then
		    remotehost=&amp;quot;$(hostname)&amp;quot;
		    dir=&amp;quot;$remotehost:$(knead_source_path &amp;quot;$dir&amp;quot;)&amp;quot;
		else
		    backuppath=&amp;quot;$(echo &amp;quot;$dir&amp;quot; | cut -f2- -d&amp;#039;:&amp;#039;)&amp;quot;
		    if echo &amp;quot;$dir&amp;quot; | grep &amp;quot;@&amp;quot; &amp;gt;/dev/null; then
			remotehost=$(echo &amp;quot;$dir&amp;quot; | cut -f1 -d&amp;#039;:&amp;#039; | cut -f2 -d&amp;#039;@&amp;#039;)
			remoteuser=$(echo &amp;quot;$dir&amp;quot; | cut -f1 -d&amp;#039;:&amp;#039; | cut -f1 -d&amp;#039;@&amp;#039;)
		    else
			remotehost=$(echo &amp;quot;$dir&amp;quot; | cut -f1 -d&amp;#039;:&amp;#039;)
			remoteuser=&amp;quot;$(whoami)&amp;quot;
		    fi

		    #remotehost=$(full_name $remotehost)

		    if echo &amp;quot;$dir&amp;quot; | cut -f2- -d&amp;#039;:&amp;#039; | grep &amp;quot;^/&amp;quot; &amp;gt;/dev/null; then
			abolutepart=&amp;quot;&amp;quot;
		    else
			absolutepart=$(ssh $remotehost pwd)&amp;quot;/&amp;quot;
		    fi
	
		    dir=&amp;quot;$remoteuser@$remotehost:$absolutepart$backuppath&amp;quot;
		fi
		backup_dirs=&amp;quot;$backup_dirs $(knead_source_path &amp;quot;$dir&amp;quot;)&amp;quot;
		shift
	    done;;
	( * )
	    print_usage
	    exit 1;;
    esac
done

check_for_programs

tmpdir=${tmpdir:-&amp;quot;$backup_destination&amp;quot;}
rsync_options=&amp;quot;-azv -T $tmpdir --force --relative --hard-links --delete $bwlimit&amp;quot; # --stats&amp;quot;

# to speed up checking for files outside the backup areas
bdirmatch=$(
    first=&amp;quot;yes&amp;quot;
    echo -n &amp;quot;^(&amp;quot;
    for d in $backup_dirs; do
	dir=&amp;quot;$d&amp;quot;
	if test &amp;quot;$first&amp;quot; == &amp;quot;yes&amp;quot;; then
	    if echo &amp;quot;$dir&amp;quot; | grep &amp;quot;:&amp;quot; &amp;gt;/dev/null; then
		dir_wo_user=$(echo &amp;quot;$dir&amp;quot; | cut -f2- -d&amp;#039;@&amp;#039;)
		echo -n &amp;quot;./$dir_wo_user/&amp;quot;
	    else
		echo -n &amp;quot;.$dir/&amp;quot;
	    fi
	    first=&amp;quot;no&amp;quot;
	else
	    if echo &amp;quot;$dir&amp;quot; | grep &amp;quot;:&amp;quot; &amp;gt;/dev/null; then
		dir_wo_user=$(echo &amp;quot;$dir&amp;quot; | cut -f2- -d&amp;#039;@&amp;#039;)
		echo -n &amp;quot;|./$dir_wo_user/&amp;quot;
	    else
		echo -n &amp;quot;|.$dir/&amp;quot;
	    fi
	fi
    done
    echo -n &amp;quot;)&amp;quot;
)

echo &amp;quot;bdirmatch: $bdirmatch&amp;quot;

lock_destination

if test &amp;quot;x$backup_dirs&amp;quot; != x; then
    make_backup
fi

if test &amp;quot;x$do_del_old&amp;quot; == xyes; then
    delete_old_backup
fi

unlock_destination
exit $exit_status&lt;/pre&gt;
</description>
    </item>
    <item rdf:about="http://178.140.10.58:8080/doku.php?id=rsync:start">
        <dc:format>text/html</dc:format>
        <dc:date>2015-09-30T12:59:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Использование Rsync  как сервер</title>
        <link>http://178.140.10.58:8080/doku.php?id=rsync:start</link>
        <description>&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:backup&amp;amp;do=showtag&amp;amp;tag=backup&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:backup&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; backup&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:sync&amp;amp;do=showtag&amp;amp;tag=sync&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:sync&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; sync&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:shell&amp;amp;do=showtag&amp;amp;tag=shell&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:shell&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; shell&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:ssh&amp;amp;do=showtag&amp;amp;tag=ssh&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:ssh&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; ssh&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:server&amp;amp;do=showtag&amp;amp;tag=server&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:server&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; server&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:rsync&amp;amp;do=showtag&amp;amp;tag=rsync&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:rsync&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; rsync&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;h3 class=&quot;sectionedit1&quot; id=&quot;использование_rsync_как_сервер&quot;&gt;Использование Rsync  как сервер&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Реализация Rsync-сервера построена следующим образом. Есть отдельный сервер куда будут складываться все бэкапы. С этого сервера запускается по крону команда rsync с параметрами, которая реализует коннект к удаленным машинам в сети. На всех машинах работает Rsync-служба, в конфиге которой прописано какие именно каталоги нужно синхронизировать.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Rsync  \u043a\u0430\u043a \u0441\u0435\u0440\u0432\u0435\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435_rsync_\u043a\u0430\u043a_\u0441\u0435\u0440\u0432\u0435\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;45-732&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;настройка_rsync_-_службы_на_удаленных_серверах&quot;&gt;Настройка Rsync - службы, на удаленных серверах&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Правим конфиг Rsync-сервера. Где искать в разных дистрибутивах:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;FreeBSD
/usr/local/etc/rsyncd.conf

Gentoo
/etc/rsyncd.conf

HP-UX 11.xx
/etc/rsyncd.conf&lt;/pre&gt;

&lt;p&gt;
rsyncd.conf:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#если запускать через inetd то pid file не используем
pid file = /var/run/rsyncd.pid

# Файл приветствия (Можно описать информацию о самом сервере, полезно когда серверов будет много)
motd file = /etc/hello_rsync

# Файл логов
log file = /var/log/rsyncd.log

# Писать в лог о скачиваемых файлах
transfer logging = true

# Описание секции для синхронизации /etc/
[etc]
        path = /etc/                                 # Путь к директории
        uid = root                                   # Пользователь под каким запускать крипт
        gid = sys                                    # По умолчанию будет gid = nobody, что недаст    #работать
        read only = yes                              # Только чтение (а больше и не нужно)
        list = yes                                   # Разрешать просмотр файлов
        comment = ETC - derectory                    # Комментарий
        hosts allow = 192.168.0.6,192.168.0.52       # Хосты с которых разрешен коннект
        auth users = backup                          # Разрешенный пользователи службы rsync 
        secrets file = /root/rsyncd.scrt             # Файл с паролем
#если не указывать auth users то можно будет работать анонимно и не заморачиваться secrets file&amp;#039;ами
&lt;/pre&gt;

&lt;p&gt;
Теперь создадим файл приветствия, файлы для логов и пароля.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
pdc# vim /etc/hello_rsync

#################################################################
#                                                               #
#         Hello from rsync server  (pdc.myhost.com)             #
#         Server Adress : 192.168.1.254                         #
#         Server        : AMD Computer Corp                     #
#         Hardware      : 1x AMD(R)2X CPU, 2180MB RAM           #
#         Contact Name  : admin@myhost.com                      #
#                                                               #
#################################################################


pdc# touch /var/log/rsyncd.log
pdc# chmod 0600 /var/log/rsyncd.log
pdc# chown root:wheel /var/log/rsyncd.log
pdc# cat &amp;gt; /root/rsyncd.scrt
backup:rsync_passwd
pdc# chown root:wheel /root/rsyncd.scrt
pdc# chmod 0600 /root/rsyncd.scrt&lt;/pre&gt;

&lt;p&gt;
Внимание! ВАЖНО.
Очень важны права доступа к файлу с паролем. Если права будут отличными от тех что нужно, у вас не будет проходить аутентификация.
&lt;/p&gt;

&lt;p&gt;
Теперь добавим службу rsync в автоматический запуск:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
FreeBSD
mv /usr/local/etc/rc.d/rsyncd /usr/local/etc/rc.d/rsyncd.sh
echo rsyncd_enable=\&amp;quot;YES\&amp;quot; &amp;gt;&amp;gt; /etc/rc.conf
/usr/local/etc/rc.d/rsyncd.sh start

Gentoo
rc-update add rsyncd default
/etc/init.d/rsyncd start

Для запуска через inetd например в HP-UX

добавляем строку в /etc/services:
rsync 873/tcp

а в /etc/inetd.conf добавляем строку:
rsyc  stream tcp nowait root /usr/local/bin/rsync rsyncd --daemon

(/usr/local/bin/rsync меняем на то место куда на вашей системе был установлен rsync)
&lt;/pre&gt;

&lt;p&gt;
Теперь переходим на сервер, куда будут собираться все наши BackUp.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Rsync - \u0441\u043b\u0443\u0436\u0431\u044b, \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_rsync_-_\u0441\u043b\u0443\u0436\u0431\u044b_\u043d\u0430_\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445_\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;733-4842&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;настройка_rsync_-_скрипта_на_backup_-_сервере&quot;&gt;Настройка Rsync - скрипта, на BAckUp - сервере&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
На Нашем BackUp - сервере создаем директории, куда будут складываться все наши резервные копии. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;saturn# mkdir -p /home/backup/pdc.myhost.com/etc/
saturn# chmod -R 0700 /home/backup/pdc.myhost.com/etc/&lt;/pre&gt;

&lt;p&gt;
Теперь создаем файл с паролем. По правилам хорошего тона, прячем его в /root/
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;saturn# cat &amp;gt; /root/rsyncd.scrt
rsync_passwd
saturn# chown root:wheel /root/rsyncd.scrt
saturn# chmod 0600 /root/rsyncd.scrt&lt;/pre&gt;

&lt;p&gt;
Теперь проверяем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
saturn ~ # rsync pdc::
#################################################################
#                                                               #
#         Hello from rsync server  (pdc.myhost.com)             #
#         Server Adress : 192.168.1.254                         #
#         Server        : AMD Computer Corp                     #
#         Hardware      : 1x AMD(R)2X CPU, 2180MB RAM           #
#         Contact Name  : admin@myhost.com                      #
#                                                               #
#################################################################

etc             ETC - derectory
&lt;/pre&gt;

&lt;p&gt;
Теперь делаем полную синхронизацию следующей командой.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rsync -uvroght --delete-after --password-file=/root/rsyncd.scrt backup@pdc.myhost.com::etc  /home/backup/pdc.myhost.com/etc/&lt;/pre&gt;

&lt;p&gt;
Для автоматизации, я создал два файла /root/rsync_day.sh, который запускается по крону каждый час, в нем у меня синхронизируется svn-репозиторий. И /root/rsync_night.sh - который запускается только ночью. В нем у меня синхронизируется /etc/ /home/ и прочее. Кому что синхронизировать, решать вам.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Rsync - \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u043d\u0430 BAckUp - \u0441\u0435\u0440\u0432\u0435\u0440\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_rsync_-_\u0441\u043a\u0440\u0438\u043f\u0442\u0430_\u043d\u0430_backup_-_\u0441\u0435\u0440\u0432\u0435\u0440\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;4843-6935&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;детальное_описание_ключей_rsync&quot;&gt;Детальное описание ключей rsync&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-v&lt;/code&gt;&amp;#039;, &lt;code&gt;&amp;#039;–verbose&lt;/code&gt;&amp;#039;               увеличение отладочной информации
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-u&lt;/code&gt;&amp;#039;, &lt;code&gt;&amp;#039;–update&lt;/code&gt;&amp;#039;                пропускать обновление файлов, которые новее исходных
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-r&lt;/code&gt;&amp;#039;, &lt;code&gt;&amp;#039;–recursive&lt;/code&gt;&amp;#039;             рекурсия в директориях
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-o&lt;/code&gt;&amp;#039;, &lt;code&gt;&amp;#039;–owner&lt;/code&gt;&amp;#039;                 сохранить владельца (только под root)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-g&lt;/code&gt;&amp;#039;, &lt;code&gt;&amp;#039;–group&lt;/code&gt;&amp;#039;                 сохранить группу
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-h&lt;/code&gt;&amp;#039;, &lt;code&gt;&amp;#039;–human-readable&lt;/code&gt;&amp;#039;        вывод цифр в читаемом виде (Кб, Мб, Гб)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-t&lt;/code&gt;&amp;#039;, &lt;code&gt;&amp;#039;–times&lt;/code&gt;&amp;#039;                 сохранить дату изменения
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-p&lt;/code&gt;&amp;#039;, &lt;code&gt;&amp;#039;–perms&lt;/code&gt;&amp;#039;                 сохранить права доступа
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–delete-after&lt;/code&gt;&amp;#039;              удалить после. Если в основном месте был удален какой-то файл, или каталог, то после синхронизации в backup сервере, в каталоге он тоже будет удален–password-file             Путь, где находится файл с паролем.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Обязательно включите ключ -v, –verbose, тогда в консоль вам будет выводиться вся информация о процессе. Если у вас настроено отсылка сообщений службой ssmtp, то вы сможете получать письма с информацией о том как отработал cron. И соответственно как прошла синхронизация.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 rsync&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0435_\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435_\u043a\u043b\u044e\u0447\u0435\u0439_rsync&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;6936-8690&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;преимущества_и_недостатки&quot;&gt;Преимущества и недостатки&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Преимущества такого вида резервной синхронизации я вижу в полной автоматизации процесса. Так же письменное уведомление, о том как проходит процесс. (При условии что настроена служба ssmtp).  Так же к преимужествам можно отнести что мы имеем полную рабочую версию каталогов, с правами доступа. Это дает нам преимущества быстрого переключения на резервный сервер служб, которые постоянно работают. К примеру svn-репозиторий, web-хостинг. Мы не тратим время на разархивирование, копирование и прочее. Переключаем на шлюзе порты, и работаем над восстановлением упавшего сервака.
&lt;/p&gt;

&lt;p&gt;
К недостаткам можно отнести какую-то несовместимость rsync с svn-базами. Кто знает подробности, можете описать.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430_\u0438_\u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;8691-9991&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit6&quot; id=&quot;простое_использование_rsync&quot;&gt;Простое использование rsync&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;rsync -vaHx --progress --numeric-ids --delete \
  --exclude-from=asylum_backup.excludes --delete-excluded \
  root@asylum:/home/asylum/ /backup/rsync/asylum/_home_asylum.demo/&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Опции
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-v, –verbose&lt;/code&gt;&amp;#039; - говорливость, выводит имена обрабатываемых файлов;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-a, –archive&lt;/code&gt;&amp;#039; - работа в режиме архивирования, сохраняются права доступа и информация о владельцах;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-H, –hard-links&lt;/code&gt;&amp;#039; - сохранять жесткие ссылки, оставляя их на другом конце бэкапа;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-x, –one-file-system&lt;/code&gt;&amp;#039; - не выходить за пределы текущей точки монтирования;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–progress&lt;/code&gt;&amp;#039; - показывать сколько процентов осталось до завершения и скорость передачи;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–numeric-ids&lt;/code&gt;&amp;#039; - не транслировать имена владельца и группы в цифровые UID и GID, оставить на удаленной стороне номера как есть;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–delete&lt;/code&gt;&amp;#039; - удалять из бэкапа файлы, которых уже нет на стороне источника;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–exclude-from=asylum_backup.excludes&lt;/code&gt;&amp;#039; - список файлов исключенных из бэкапа, допускается использование масок, напирмер  &amp;quot;htdocs/*/*.jpg&amp;quot;;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–delete-excluded&lt;/code&gt;&amp;#039; - удалять части которые уже есть на стороне бэкапа, но появились в списке исключения;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;root@&lt;/code&gt;&amp;#039; - под каким пользоателем осущестляются подключение;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;asylum&lt;/code&gt;&amp;#039; - имя хоста к которому производится подключение;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;/home/asylum/&lt;/code&gt;&amp;#039; - директория источник, которую нужно бэкапить;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;/backup/rsync/asylum/_home_asylum.demo/&lt;/code&gt;&amp;#039; - куда сохранять бэкап;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Для определения транспорта нужно задать переменную
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
RSYNC_RSH &amp;quot;ssh -c arcfour -o Compression=no -x&amp;quot;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;ssh&lt;/code&gt;&amp;#039; - транспорт ssh (можно задать через &amp;quot;-e ssh&amp;quot;);
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-c arcfour&lt;/code&gt;&amp;#039; - тип шифрования;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-o Compression=no&lt;/code&gt;&amp;#039; - отключить сжатие средствами ssh, rsync сам сжимает данные;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-x&lt;/code&gt;&amp;#039; - отключаем X туннелинг;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Другие полезные опции:
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-n, –dry-run&lt;/code&gt;&amp;#039; - режим тестирования, реально никаких действий по копированию не производится, только эмуляция;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-W, –whole-file&lt;/code&gt;&amp;#039; - передает файлы целиком, а не блоками, как задумано в [&lt;a href=&quot;http://www.opennet.ru/base/dev/rsync_algorythm.txt.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.opennet.ru/base/dev/rsync_algorythm.txt.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.opennet.ru/base/dev/rsync_algorythm.txt.html&lt;/a&gt; оригинальном алгоритме rsync];
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-c, –checksum&lt;/code&gt;&amp;#039; - использование сверки по контрольным суммам, а не по времени изменения и размеру;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-S, –sparse&lt;/code&gt;&amp;#039; - допускает оптимизацию дискового пространства через создание &amp;quot;дырявых&amp;quot; файлов;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–delete&lt;/code&gt;&amp;#039; отличается от &lt;code&gt;&amp;#039;–delete-after&lt;/code&gt;&amp;#039; тем, что удаление производится вначале, а не на завершающей стадии процесса бэкапа. &lt;code&gt;&amp;#039;–delete-after&lt;/code&gt;&amp;#039; работает быстрее, так как не требует лишней стадии обхода списка файлов, но требует использования опции &lt;code&gt;&amp;#039;–force&lt;/code&gt;&amp;#039; для обработки таких ситуаций как удаление файла и появление диретории с тем же именем;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-T, –temp-dir=DIR&lt;/code&gt;&amp;#039; - сохранять временные файлы в отдельной диретории, а не в текущей;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–compare-dest=DIR&lt;/code&gt;&amp;#039; - сохранять новые и измененные файлы в отдельной директории, не трогая на время коприрования основную директорию назначения, в конце - разом, путем переименования, обновить содержимое бэкапа;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–link-dest=DIR&lt;/code&gt;&amp;#039; - использовать жесткие ссылки на файлы в DIR, например, для создания подобия снапшотов;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–bwlimit&lt;/code&gt;&amp;#039; - ограничение пропускной способности, чтобы не забивать канал;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–ignore-errors&lt;/code&gt;&amp;#039; - продолжать копирование и удаление после появления ошибок;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–max-delete&lt;/code&gt;&amp;#039; - ограничение максимально числа удаляемых за один раз файлов и каталогов;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-z, –compress&lt;/code&gt;&amp;#039; - включить сжатие передаваемых данных;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-A, –acls&lt;/code&gt;&amp;#039; - сохранять не только права доступа, но и &lt;abbr title=&quot;Access Control List&quot;&gt;ACL&lt;/abbr&gt;;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;-D&lt;/code&gt;&amp;#039; - сохранять файлы устройств
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–files-from=FILE&lt;/code&gt;&amp;#039; - задать список директорий и файлов для бэкапа в файле;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–times&lt;/code&gt;&amp;#039; - синхронизировать время модификации файлов;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;code&gt;&amp;#039;–backup&lt;/code&gt;&amp;#039; - старые измененные или удаленные файлы не теряются а переименовываются или перемещаются в заданную чере &lt;code&gt;&amp;#039;–backup-dir=DIR&lt;/code&gt;&amp;#039; директорию. Пример инкрементального бэкапа:
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class=&quot;code&quot;&gt;    rsync --force --ignore-errors --delete --delete-excluded --exclude-from=exclude_file \
      --backup --backup-dir=`date +%Y-%m-%d` -av&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0441\u0442\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 rsync&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0441\u0442\u043e\u0435_\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435_rsync&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;9992-16181&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;заметки&quot;&gt;Заметки&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 rsync потребляет примерно 100 байт на каждый файл в списке, поэтому при передаче огромного числа файлов к памяти нужно относиться аккуратно;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Шаблон начинающийся с &amp;#039;/&amp;#039; проверяется с начала строки, иначе с конца;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Для задания шаблона только для директорий нужно указать в конце &amp;#039;/&amp;#039;;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Если необходимо исключить все поддиректории в /dir, кроме /dir/best, в список исключений нужно поместить:
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class=&quot;code&quot;&gt;    + /dir/best/
    - /dir/*&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043c\u0435\u0442\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043c\u0435\u0442\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;16182-16939&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;ссылки&quot;&gt;Ссылки&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Повествование построено на основе статьи &amp;quot;[&lt;a href=&quot;http://www.sanitarium.net/golug/rsync_backups.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.sanitarium.net/golug/rsync_backups.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.sanitarium.net/golug/rsync_backups.html&lt;/a&gt; Backups using rsync]&amp;quot;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;a href=&quot;http://rsync.samba.org/&quot; class=&quot;urlextern&quot; title=&quot;http://rsync.samba.org/&quot; rel=&quot;ugc nofollow&quot;&gt;http://rsync.samba.org/&lt;/a&gt; &amp;amp;#8212; страница проекта rsync
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 [&lt;a href=&quot;http://www.opennet.ru/man.shtml?topic=rsync&amp;amp;category=1&amp;amp;russian=0&quot; class=&quot;urlextern&quot; title=&quot;http://www.opennet.ru/man.shtml?topic=rsync&amp;amp;category=1&amp;amp;russian=0&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.opennet.ru/man.shtml?topic=rsync&amp;amp;category=1&amp;amp;russian=0&lt;/a&gt; man rsync] на русском языке
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Статья: [&lt;a href=&quot;http://www.opennet.ru/base/sys/rsync_backup.txt.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.opennet.ru/base/sys/rsync_backup.txt.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.opennet.ru/base/sys/rsync_backup.txt.html&lt;/a&gt; Бекап файловой системы Linux-сервера с помощью rsync]
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Статья: [&lt;a href=&quot;http://www.linuxfocus.org/Russian/March2004/article326.shtml&quot; class=&quot;urlextern&quot; title=&quot;http://www.linuxfocus.org/Russian/March2004/article326.shtml&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.linuxfocus.org/Russian/March2004/article326.shtml&lt;/a&gt; Rsync: лучшая система резервного копирования]
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 [&lt;a href=&quot;http://rsync.samba.org/FAQ.html&quot; class=&quot;urlextern&quot; title=&quot;http://rsync.samba.org/FAQ.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://rsync.samba.org/FAQ.html&lt;/a&gt; Rsync &lt;abbr title=&quot;Frequently Asked Questions&quot;&gt;FAQ&lt;/abbr&gt;]
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 [&lt;a href=&quot;http://rsync.samba.org/examples.html&quot; class=&quot;urlextern&quot; title=&quot;http://rsync.samba.org/examples.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://rsync.samba.org/examples.html&lt;/a&gt; Пример на сайте rsync]
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Статья: [&lt;a href=&quot;http://www.mikerubel.org/computers/rsync_snapshots/&quot; class=&quot;urlextern&quot; title=&quot;http://www.mikerubel.org/computers/rsync_snapshots/&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.mikerubel.org/computers/rsync_snapshots/&lt;/a&gt; Easy Automated Snapshot-Style Backups with Linux and Rsync]
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Статья: [&lt;a href=&quot;http://www.linux.com/article.pl?sid=04/11/04/0346256&quot; class=&quot;urlextern&quot; title=&quot;http://www.linux.com/article.pl?sid=04/11/04/0346256&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.linux.com/article.pl?sid=04/11/04/0346256&lt;/a&gt; Making secure remote backups with Rsync]
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Статья: [&lt;a href=&quot;http://ezine.daemonnews.org/200211/ports.html&quot; class=&quot;urlextern&quot; title=&quot;http://ezine.daemonnews.org/200211/ports.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://ezine.daemonnews.org/200211/ports.html&lt;/a&gt; Trawling the Ports Collection - rsync: The intelligent way to copy files]
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;16940-&amp;quot;} --&gt;</description>
    </item>
</rdf:RDF>
