<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>https://mediawiki.zina.run/index.php?action=history&amp;feed=atom&amp;title=Rsync</id>
	<title>Rsync - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zina.run/index.php?action=history&amp;feed=atom&amp;title=Rsync"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zina.run/index.php?title=Rsync&amp;action=history"/>
	<updated>2026-10-12T11:09:41Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://mediawiki.zina.run/index.php?title=Rsync&amp;diff=472&amp;oldid=prev</id>
		<title>Romych: /* Копирование на NAS */</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zina.run/index.php?title=Rsync&amp;diff=472&amp;oldid=prev"/>
		<updated>2022-03-02T14:19:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Копирование на NAS&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;* [http://rmcreative.ru/blog/post/bekap-na-nas-synology-cherez-rsync Бэкап на NAS Synology через rsync]&lt;br /&gt;
* http://xgu.ru/wiki/rsync&lt;br /&gt;
&lt;br /&gt;
== Основные параметры ==&lt;br /&gt;
&lt;br /&gt;
=== Простое копирование ===&lt;br /&gt;
&lt;br /&gt;
 rsync -a &amp;lt;что копировать&amp;gt; &amp;lt;куда копировать&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; — archive mode — это набор сразу несколькких параметров , включающих в себя рекурсивность, сохранение прав, групп, времени, копирование симлинков и специальных файлов.&lt;br /&gt;
&lt;br /&gt;
=== Важно: формат имен каталогов ===&lt;br /&gt;
&lt;br /&gt;
При копировании каталогов (а не файлов) следует обратить внимание на знак &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; замыкающий имя каталога-источника, т.к. rsync будет интерпретировать результат по-разному:&lt;br /&gt;
&lt;br /&gt;
 rsync -a каталог-источник каталог-назначения/&lt;br /&gt;
 rsync -a каталог-источник/ каталог-назначения/&lt;br /&gt;
&lt;br /&gt;
Наличие завершающих слешей &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; обязательно, иначе результат копирования будет содержать корневую папку &amp;lt;code&amp;gt;каталог-источник&amp;lt;/code&amp;gt; внутри &amp;lt;code&amp;gt;каталога-назначения&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Копирование файла &amp;lt;code&amp;gt;а&amp;lt;/code&amp;gt; из &amp;lt;code&amp;gt;dir1&amp;lt;/code&amp;gt; в &amp;lt;code&amp;gt;dir2&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 rsync -a ~/dir1/a ~/dir2/&lt;br /&gt;
&lt;br /&gt;
Копирование всех файлов из &amp;lt;code&amp;gt;dir1&amp;lt;/code&amp;gt; в &amp;lt;code&amp;gt;dir2&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 rsync -a ~/dir1/ ~/dir2/&lt;br /&gt;
&lt;br /&gt;
Копирование самой директории &amp;lt;code&amp;gt;dir1&amp;lt;/code&amp;gt; (со всем содержимым) в &amp;lt;code&amp;gt;dir2&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 rsync -a ~/dir1 ~/dir2/&lt;br /&gt;
&lt;br /&gt;
=== Сжатие / компрессия во время передачи ===&lt;br /&gt;
&lt;br /&gt;
Параметр &amp;lt;code&amp;gt;-z&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;--compress&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 rsync -az &amp;lt;что копировать&amp;gt; &amp;lt;куда копировать&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работает лучше, чем обычное архивирование, потому что интеллектуально сжимает только те блоки, которые будут копироваться.&lt;br /&gt;
&lt;br /&gt;
=== Отображение информации во время копирования ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; — отображдение большего количества информации&lt;br /&gt;
* &amp;lt;code&amp;gt;-h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--human-readable&amp;lt;/code&amp;gt; — отображение чисел в человекопонятном формате&lt;br /&gt;
* &amp;lt;code&amp;gt;--progress&amp;lt;/code&amp;gt; — прогресс копирования&lt;br /&gt;
&lt;br /&gt;
Соответственно, более информативный вид команды:&lt;br /&gt;
&lt;br /&gt;
 rsync -avh --progress &amp;lt;что копировать&amp;gt; &amp;lt;куда копировать&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Синхронизация каталогов ===&lt;br /&gt;
&lt;br /&gt;
По умолчанию rsync копирует только:&lt;br /&gt;
&lt;br /&gt;
* новые файлы, которых еще нету на месте назначения, &lt;br /&gt;
* измененные файлы, отличающиеся от тех, что есть на месте назначения.&lt;br /&gt;
&lt;br /&gt;
Т.е. уже по умолчанию он хорошо работает и корректно синхронизирует место назначения с источником, не гоняя по сети ненужные файлы.&lt;br /&gt;
&lt;br /&gt;
==== а) на месте назначения есть более свежие версии файлов ====&lt;br /&gt;
&lt;br /&gt;
В ситуации, когда на месте назначения могут быть файлы более новые, чем на источнике, и их нужно сохранить, следует добавить параметр &amp;lt;code&amp;gt;-u&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;--update&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Также в этой ситуации может помочь двусторонняя синхронизация (объединить содержимое &amp;lt;code&amp;gt;dir1&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;dir2&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
 rsync -a ~/dir1/ ~/dir2/ &amp;amp;&amp;amp; rsync -a ~/dir2/ ~/dir1/&lt;br /&gt;
&lt;br /&gt;
==== б) на источнике были удалены файлы, которые больше не нужны ====&lt;br /&gt;
&lt;br /&gt;
По умолчанию rsync не удаляет на месте назначения файлы, которые были удалены на источнике. Это поведение можно изменить с помощью параметра &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Точная копия каталогов (с удалением всех файлов из &amp;lt;code&amp;gt;dir2&amp;lt;/code&amp;gt;, которых нет в &amp;lt;code&amp;gt;dir1&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
 rsync -a --delete ~/dir1/ ~/dir2/&lt;br /&gt;
&lt;br /&gt;
=== Исключения, которые не нужно копировать ===&lt;br /&gt;
&lt;br /&gt;
Исключить каталоги, синхронизация которых не требуется (например, каталог &amp;lt;code&amp;gt;dir3&amp;lt;/code&amp;gt;, находящийся в &amp;lt;code&amp;gt;dir1&amp;lt;/code&amp;gt;, при копировании последнего в &amp;lt;code&amp;gt;dir2&amp;lt;/code&amp;gt; будет пропущен):&lt;br /&gt;
&lt;br /&gt;
 rsync -a ~/dir1/ --exclude=&amp;quot;./~dir3/&amp;quot; ~/dir2/&lt;br /&gt;
&lt;br /&gt;
Исключение нескольких каталогов делается повторением парметра &amp;lt;code&amp;gt;--exclude&amp;lt;/code&amp;gt;. Примеры исключений из реальной жизни:&lt;br /&gt;
&lt;br /&gt;
 --exclude=&amp;quot;- mod-tmp/&amp;quot; &lt;br /&gt;
 --exclude=&amp;quot;- munin/&amp;quot; &lt;br /&gt;
 --exclude=&amp;quot;- nginx-logs/&amp;quot; &lt;br /&gt;
 --exclude=&amp;quot;- httpd-logs/&amp;quot; &lt;br /&gt;
 --exclude=&amp;quot;- mysql_db_error.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Большие файлы и докачка ===&lt;br /&gt;
&lt;br /&gt;
По умолчанию в rsync в случае разрыва соединения частично переданные файлы удаляются. Чтобы изменить это, необходимо добавить параметр &amp;lt;code&amp;gt;--partial&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Есть короткий параметр &amp;lt;code&amp;gt;-P&amp;lt;/code&amp;gt;, который включает в себя два других параметра:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;--partial&amp;lt;/code&amp;gt; — сохранять частично скопированные файлы.&lt;br /&gt;
* &amp;lt;code&amp;gt;--progress&amp;lt;/code&amp;gt; — отображать прогресс передачи файлов.&lt;br /&gt;
&lt;br /&gt;
Учитывайте, что в результате у вас могут образовываться в месте назначения файлы, скопированные лишь частично.&lt;br /&gt;
&lt;br /&gt;
Можно использовать параметр &amp;lt;code&amp;gt;--partial-dir=DIR&amp;lt;/code&amp;gt; (например &amp;lt;code&amp;gt;--partial-dir=.rsync-partial&amp;lt;/code&amp;gt;), чтобы в место назначения попадали только полностью скопированные файлы, а частично скопированные хранились в отдельной папке.&lt;br /&gt;
&lt;br /&gt;
Параметр &amp;lt;code&amp;gt;--append-verify&amp;lt;/code&amp;gt; сравнивает файлы на обоих концах передачи по контрольным суммам. Этот параметр позволяет сделать полноценную и безопасную синхронизацию даже в случае, если был обрыв передачи при предыдущем копировании.&lt;br /&gt;
&lt;br /&gt;
При использовании &amp;lt;code&amp;gt;--append-verify&amp;lt;/code&amp;gt; rsync будет вести себя так же, как и всегда, для всех файлов одинакового размера. Если файлы отличаются модификацией или датой, он перезапишет цель файлом источника без дальнейшего изучения этих файлов. &lt;br /&gt;
&lt;br /&gt;
Параметр &amp;lt;code&amp;gt;--checksum&amp;lt;/code&amp;gt; сравнивает содержимое (контрольные суммы) каждой пары файлов с одинаковым именем и размером, т.е. это более долгий вариант сравнения.&lt;br /&gt;
&lt;br /&gt;
Итого: для копирования больших файлов с возможностью докачки нужно использовать ключи &amp;lt;code&amp;gt;--partial&amp;lt;/code&amp;gt; (или &amp;lt;code&amp;gt;-P&amp;lt;/code&amp;gt;, или &amp;lt;code&amp;gt;--partial-dir=.rsync-partial&amp;lt;/code&amp;gt;) и &amp;lt;code&amp;gt;--append-verify&amp;lt;/code&amp;gt;. Параметр &amp;lt;code&amp;gt;--partial&amp;lt;/code&amp;gt; говорит о том, что нужно оставлять даже не полностью скопированные файлы, а &amp;lt;code&amp;gt;--append-verify&amp;lt;/code&amp;gt; говорит о том, что если файл уже есть нужно проверить, возможно он не полностью синхронизирован, и синхронизировать остаток.&lt;br /&gt;
&lt;br /&gt;
=== Работа с удаленной машиной ===&lt;br /&gt;
&lt;br /&gt;
Для использования SSH не нужно никаких дополнительных параметров типа &amp;lt;code&amp;gt;-e ssh&amp;lt;/code&amp;gt;. Если цель указывается в виде &amp;lt;code&amp;gt;user@host:/path/to/files&amp;lt;/code&amp;gt;, то и так по умолчанию будет использован SSH.&lt;br /&gt;
&lt;br /&gt;
Параметр &amp;lt;code&amp;gt;-e ssh&amp;lt;/code&amp;gt; может потребоваться, если нужно указать какие-то специфические особенности использования SSH:&lt;br /&gt;
&lt;br /&gt;
* указать нестандартный порт SSH: &amp;lt;code&amp;gt;-e &amp;#039;ssh -p 2222&amp;#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
* указать нестандартное расположение приватного ключа: &amp;lt;code&amp;gt;-e &amp;#039;ssh -i /path/to/private/key/file.pem&amp;#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Синхронизация-копирование с локальной машины на хостинг ==&lt;br /&gt;
&lt;br /&gt;
 rsync -avzh --delete --progress /var/www/observer.test/html/ zinamuseum@zinahost.com:www/observer.megalit.org/&lt;br /&gt;
&lt;br /&gt;
== Копирование на NAS ==&lt;br /&gt;
&lt;br /&gt;
Для доступа к NAS снаружи нужно в роутере прописать перенаправление TCP порта 873.&lt;br /&gt;
&lt;br /&gt;
Указывать наш NAS rsync-у будем в виде &lt;br /&gt;
&lt;br /&gt;
 rsync@134.249.168.79::NetBackup/&lt;br /&gt;
&lt;br /&gt;
Копируем директорию на удаленную систему&lt;br /&gt;
&lt;br /&gt;
 rsync -av /tmp/photos rsync@134.249.168.79::NetBackup/&lt;br /&gt;
&lt;br /&gt;
 rsync -av --progress /var/www/ rsync@134.249.168.79::NetBackup/91.197.131.59/2014-11-07 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
== Копирование с NAS на сервер ==&lt;br /&gt;
&lt;br /&gt;
 rsync -zauvP --exclude=&amp;quot;- cache/**&amp;quot; /var/www/s_techlguagmailc/ root@77.120.120.73:/var/www/s_techlguagmailc/&lt;br /&gt;
&lt;br /&gt;
== Копирование с одного сервера на другой ==&lt;br /&gt;
&lt;br /&gt;
 rsync -zauvP --exclude=&amp;quot;- cache/&amp;quot; --exclude=&amp;quot;- mod-tmp/&amp;quot; /var/www/s_techlguagmailc/ root@77.120.120.73:/var/www/s_techlguagmailc/&lt;br /&gt;
&lt;br /&gt;
 rsync -zauvP --exclude=&amp;quot;- cache/&amp;quot; /var/www/ rsync@134.249.168.79::NetBackup/91.197.131.59/2014-11-07&lt;br /&gt;
&lt;br /&gt;
Находимся на новом сервере, копируем файлы сайта со старого сервера &amp;lt;code&amp;gt;host.com&amp;lt;/code&amp;gt; в папку &amp;lt;code&amp;gt;old&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 rsync --recursive --perms --times --partial --progress --verbose USER@HOST.COM:/var/www/USER/data/www old&lt;br /&gt;
&lt;br /&gt;
 rsync -rptPv USER@HOST.COM:www old&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-z&amp;lt;/code&amp;gt; — compress file data during the transfer&lt;br /&gt;
* &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; — archive mode; equals &amp;lt;code&amp;gt;-rlptgoD&amp;lt;/code&amp;gt; (no &amp;lt;code&amp;gt;-H&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-X&amp;lt;/code&amp;gt;)&lt;br /&gt;
** &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--recursive&amp;lt;/code&amp;gt; — recurse into directories&lt;br /&gt;
** &amp;lt;code&amp;gt;-l&amp;lt;/code&amp;gt; — copy symlinks as symlinks&lt;br /&gt;
** &amp;lt;code&amp;gt;-p&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--perms&amp;lt;/code&amp;gt; — preserve permissions&lt;br /&gt;
** &amp;lt;code&amp;gt;-t&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--times&amp;lt;/code&amp;gt; — preserve modification times&lt;br /&gt;
** &amp;lt;code&amp;gt;-g&amp;lt;/code&amp;gt; — preserve group&lt;br /&gt;
** &amp;lt;code&amp;gt;-o&amp;lt;/code&amp;gt; — preserve owner (super-user only)&lt;br /&gt;
** &amp;lt;code&amp;gt;-D&amp;lt;/code&amp;gt; — preserve device files (super-user only) and preserve special files&lt;br /&gt;
* &amp;lt;code&amp;gt;-u&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--update&amp;lt;/code&amp;gt; — skip files that are newer on the receiver&lt;br /&gt;
* &amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; — increase verbosity&lt;br /&gt;
* &amp;lt;code&amp;gt;--partial&amp;lt;/code&amp;gt; — keep partially transferred files&lt;br /&gt;
* &amp;lt;code&amp;gt;--progress&amp;lt;/code&amp;gt; — show progress during transfer&lt;br /&gt;
* &amp;lt;code&amp;gt;-P&amp;lt;/code&amp;gt; — same as &amp;lt;code&amp;gt;--partial --progress&amp;lt;/code&amp;gt; — keep partially transferred files, show progress during transfer&lt;br /&gt;
&lt;br /&gt;
== Копирование в пределах одного компьютера с исключением папок ==&lt;br /&gt;
&lt;br /&gt;
 rsync -avP --exclude=&amp;quot;- cache/&amp;quot; --exclude=&amp;quot;- default/files/&amp;quot; --exclude=&amp;quot;- ckfinder&amp;quot; /var/www/obzor/data/www/obzor.com.ua/ /var/www/obzor/data/www/beta.obzor.lg.ua/&lt;br /&gt;
&lt;br /&gt;
или, если мы находимся внутри папки www:&lt;br /&gt;
&lt;br /&gt;
 rsync -avP --exclude=&amp;quot;- cache/&amp;quot; --exclude=&amp;quot;- default/files/&amp;quot; --exclude=&amp;quot;- ckfinder&amp;quot; obzor.com.ua/ beta.obzor.lg.ua/&lt;br /&gt;
&lt;br /&gt;
== Запуск в фоне ==&lt;br /&gt;
&lt;br /&gt;
 screen команда&lt;br /&gt;
 ctrl-a&lt;br /&gt;
 d&lt;br /&gt;
&lt;br /&gt;
Вернуть из фона:&lt;br /&gt;
&lt;br /&gt;
 screen -list&lt;br /&gt;
 (видим имя_процесса)&lt;br /&gt;
 screen -r имя_процесса&lt;br /&gt;
&lt;br /&gt;
== Скрипт деплоя на основе rsync ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
LOCAL=&amp;quot;/var/www/example.test/html/&amp;quot; # site directory on the local machine&lt;br /&gt;
USER=username&lt;br /&gt;
HOST=zinahost.com&lt;br /&gt;
DIR=&amp;quot;www/example.com/&amp;quot; # the directory on hosting server where your web site files should go&lt;br /&gt;
&lt;br /&gt;
rsync -azv --delete --progress ${LOCAL} ${USER}@${HOST}:${DIR}&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы rsync не спрашивал пароль, нужно настроить [[SSH | авторизацию SSH по ключу]].&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.opennet.ru/tips/info/1768.shtml Полезные рецепты при работе с rsync]&lt;/div&gt;</summary>
		<author><name>Romych</name></author>
	</entry>
</feed>