rsync

Проект rsync: Andrew Tridgell, Wayne Davison и другие разработчики · лицензия GPL-3.0-or-later

Выкладывает собранный сайт на свой сервер по SSH. При повторной выкладке пропускает файлы с прежним размером и временем изменения, а у изменённых передаёт разницу.

macOS · LinuxНа компьютере, на сервере и в контейнереБесплатно, GPL-3.0-or-later

✓ Проверено 17.10.2026: Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root: rsync 3.5.1 из PPA проекта rsyncproject/rsync, сервер OpenSSH в том же контейнере на 127.0.0.1:2222 с входом по ключу. Что именно проверяли

Установить агентом ↓

Какую задачу решает

Консольная программа для копирования и синхронизации папок. Агент собирает сайт у себя и одной командой выкладывает папку на свой сервер по SSH. При следующей выкладке rsync по умолчанию сравнивает файлы с сервером по размеру и времени изменения: совпавшие пропускает, а у изменённых передаёт только отличающиеся куски. Ещё rsync держит копию папки проекта на другом диске.

  • Выкладывает папку на сервер по SSH командой вида rsync -avz public/ user@server:/var/www/site/. В прогоне вход на сервер шёл по ключу SSH, на сервере тоже должна стоять rsync.
  • Отправляет только разницу. В прогоне в файле на 4 194 304 байт поменяли 100 байт, и на все три изменённых файла rsync передала 2 117 байт новых данных, остальные 4 192 256 байт взяла из файлов на сервере.
  • Показывает, что изменится, до выкладки: ключ -n (--dry-run) вместе с -i печатает список файлов. В прогоне список совпал с настоящей выкладкой строка в строку.
  • С ключом --delete убирает с сервера файлы, которых больше нет в папке. Ключ --backup-dir складывает удалённое и заменённое в отдельную папку, а --max-delete ограничивает число удалений.

Пример результата

Говоришь агенту

Выложи собранный сайт из папки public на мой сервер в /home/deploy/www. Сначала покажи, что изменится, а удалённые и заменённые файлы сохрани в отдельную папку.

Что получится

Мы прогнали этот сценарий на тестовом сайте из 6 файлов и сервере SSH в том же контейнере. Первая выкладка rsync -avzi --delete отправила все файлы. Потом в папке поправили страницу, добавили новую, удалили old.html и переписали 100 байт в середине файла на 4 МиБ. Просмотр с -n показал 5 строк: удалить old.html, отправить contacts.html, about/index.html и bundle.bin и обновить время корневой папки. Выкладка с --backup-dir=/home/deploy/backup-2 сделала ровно это. Новых данных ушло 2 117 байт, суммы sha256 всех файлов на сервере совпали с папкой, old.html и прежняя about/index.html легли в backup-2.

Паспорт

Кто делает
Проект rsync: Andrew Tridgell, Wayne Davison и другие разработчики
Исходный код
github.com/RsyncProject/rsync
Лицензия
GPL-3.0-or-later
Версия
3.5.1 на 17.10.2026
Системы
macOS · Linux
Где работает
На компьютере, на сервере и в контейнере
Цена
Бесплатно
Проверка
Проверено 17.10

Установить агентом

Для Claude Code, Codex, Hermes и любого агента с терминалом
Установи программу «rsync». Работай по шагам и после каждого коротко говори, что сделал.

Что это за программа (каталог smyslokod.ru, официальные источники сверены 17.10.2026):
- официальный сайт: https://rsync.samba.org
- исходный код: https://github.com/RsyncProject/rsync
- инструкция по установке: https://download.samba.org/pub/rsync/rsync.1
- актуальная версия на 17.10.2026: 3.5.1
- лицензия: GPL-3.0-or-later
- для работы нужно (очень желательно): SSH-доступ к серверу по ключу - rsync ходит на сервер через ssh. Ключ заранее настраивает человек, тогда агент выкладывает сам и пароль не вводит. Копии папки на том же компьютере SSH не нужен
- для работы нужно (обязательно): rsync на сервере - справка требует rsync на обеих сторонах, когда копия идёт на другую машину. Копию папки на своём диске делает одна программа
- для работы нужно (в отдельных случаях): software-properties-common - только для установки из PPA, если в системе нет команды add-apt-repository
- для работы нужно (в отдельных случаях): Homebrew - только для установки на Mac

Правила:
1. Ничего не устанавливай и не меняй, пока я не скажу «да» на твой план.
2. Ставь только способами из этого промпта. Сторонние сборки, скрипты с форумов и из чужих репозиториев не бери.
3. Мои проекты не трогай: не меняй их файлы, виртуальные окружения и списки зависимостей (package.json, requirements.txt, pyproject.toml).
4. Команды с sudo, правку профиля оболочки (~/.zshrc, ~/.bashrc) и переменной PATH делай только после моего отдельного «да» на каждую.
5. Не проси у меня пароли и ключи и не выводи их. Если нужен пароль администратора, дай команду, я выполню её сам.
6. Перед выкладкой с --delete запусти ту же команду с теми же ключами и с -n -i, покажи человеку список и жди «да».
7. Проверь путь назначения на сервере вместе с человеком. С --delete выкладывай только в отдельную папку сайта. В папку пользователя ~ и в корень сервера с --delete не выкладывай.
8. Ставь --backup-dir с новой папкой на каждую выкладку, если человек не сказал обратного.
9. Ключи SSH и пароли в чат не проси. Если входа на сервер по ключу нет, попроси человека настроить его самого.
10. Через rsync отправляй только папку задачи. Файлы .env, ключи и папку .git исключай ключом --exclude, если человек не сказал иначе.

Шаги:
0. Определи, где ты работаешь: мой компьютер, сервер или контейнер. Какая система и процессор, какие менеджеры пакетов есть (Homebrew, apt, winget, uv, pipx). Ставить нужно туда, где ты сам запускаешь команды.
   - на компьютере: там, где агент собирает сайт: отсюда rsync отправляет папку на сервер.
   - на сервере: должна стоять и на сервере, куда выкладывают: rsync на компьютере запускает её там через SSH. В прогоне на сервере стояла та же 3.5.1.
   - в контейнере: мы проверяли в контейнере Ubuntu 24.04 от root, сервер SSH работал в том же контейнере на 127.0.0.1.
1. Проверь, не стоит ли программа уже: rsync --version. Если стоит и запускается, ничего не ставь и переходи к шагу 5.
2. Проверь, что есть всё нужное для работы: SSH-доступ к серверу по ключу, rsync на сервере. Чего нет, внеси в план отдельным пунктом. Проверь свободное место на диске: нужно Пакет из PPA по данным dpkg занимает 930 КиБ, сама программа /usr/bin/rsync - 590 744 байт. Вместе с библиотекой libpopt0 apt насчитал 1075 kB. Если в системе нет add-apt-repository, пакет software-properties-common в нашем контейнере потянул 73 пакета и 68,6 MB по подсчёту apt..
3. Составь план: каким одним способом из списка ниже будешь ставить, что появится на диске и сколько места займёт, что поменяется в системе и как потом удалить. Покажи план и жди моего «да».
   Способы из официальных источников:
   - macOS, Homebrew: brew install rsync (Формула берёт архив выпуска с GitHub проекта, на 17.10.2026 это 3.5.1. Проверь, что в PATH первой стоит она: rsync --version должна вывести rsync version 3.5.1. Мы не проверяли)
   - Linux, apt из PPA проекта (Ubuntu): sudo add-apt-repository ppa:rsyncproject/rsync && sudo apt update && sudo apt install rsync (Так советуют download.html и INSTALL.md проекта для Ubuntu 22.04, 24.04, 25.10 и 26.04. Команда добавляет в систему источник пакетов PPA с его ключом. Мы ставили так и получили 3.5.1-1ppa~noble1)
   - Linux, apt (пакет дистрибутива): sudo apt-get install rsync (apt ставит версию из репозитория системы. В Ubuntu 24.04 это 3.2.7, в прогоне её показал apt-cache policy. Мы её не ставили)
4. Установи по согласованному плану. Если что-то идёт не так, как в плане, остановись и спроси.
5. Проверь результат:
   - rsync --version: программа запускается без ошибки;
   - Во временной папке собери тестовый сайт из 6 файлов, подними сервер SSH на 127.0.0.1 с входом по ключу. Выложи папку с --delete сначала с -n, потом без него. Поправь страницу, добавь новую, удали одну и перепиши 100 байт в большом файле. Выложи снова с -n и без него, с --stats и --backup-dir, сверь суммы файлов на сервере и папку копий. Проверь --max-delete, косую черту в конце пути, --mkpath и коды ошибок. Делай это во временной папке и не трогай мои файлы.
     apt-get update && apt-get -y install software-properties-common
     add-apt-repository -y ppa:rsyncproject/rsync && apt-get update && apt-get -y install rsync && rsync --version
     apt-get -y install openssh-server openssh-client && useradd -m -s /bin/bash deploy && mkdir -p /run/sshd && ssh-keygen -A
     ssh-keygen -q -t ed25519 -N '' -f /root/deploy_key && install -d -m 700 -o deploy -g deploy /home/deploy/.ssh && install -m 600 -o deploy -g deploy /root/deploy_key.pub /home/deploy/.ssh/authorized_keys
     /usr/sbin/sshd -p 2222 -o ListenAddress=127.0.0.1 -o PasswordAuthentication=no && ssh -p 2222 -i /root/deploy_key -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/kh -o BatchMode=yes deploy@127.0.0.1 'mkdir -p www'
     mkdir -p /work/site/public/about /work/site/public/css /work/site/public/img /work/site/public/assets && cd /work/site && echo '<h1>Тестовая страница</h1>' > public/index.html && echo '<h1>О проекте</h1>' > public/about/index.html && echo 'body{color:#222}' > public/css/style.css && echo 'old page' > public/old.html && head -c 300000 /dev/urandom > public/img/hero.jpg && head -c 4194304 /dev/urandom > public/assets/bundle.bin
     cd /work/site && rsync -avzi --delete -n -e "ssh -p 2222 -i /root/deploy_key -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/kh -o BatchMode=yes" public/ deploy@127.0.0.1:/home/deploy/www/
     cd /work/site && rsync -avzi --delete -e "ssh -p 2222 -i /root/deploy_key -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/kh -o BatchMode=yes" public/ deploy@127.0.0.1:/home/deploy/www/
     cd /work/site && echo '<h1>О проекте, версия 2</h1>' > public/about/index.html && echo '<h1>Контакты</h1>' > public/contacts.html && rm public/old.html && printf '%0100d' 0 | dd of=public/assets/bundle.bin bs=1 seek=2000000 conv=notrunc status=none
     cd /work/site && rsync -avzi --delete --stats --backup --backup-dir=/home/deploy/backup-2 -n -e "ssh -p 2222 -i /root/deploy_key -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/kh -o BatchMode=yes" public/ deploy@127.0.0.1:/home/deploy/www/
     cd /work/site && rsync -avzi --delete --stats --backup --backup-dir=/home/deploy/backup-2 -e "ssh -p 2222 -i /root/deploy_key -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/kh -o BatchMode=yes" public/ deploy@127.0.0.1:/home/deploy/www/
     cd /work/site/public && find . -type f -exec sha256sum {} + | sort -k2 > /tmp/local.sum && cd /home/deploy/www && find . -type f -exec sha256sum {} + | sort -k2 > /tmp/remote.sum && cmp /tmp/local.sum /tmp/remote.sum && cat /home/deploy/backup-2/old.html
     cd /work/site && rm public/contacts.html public/css/style.css public/img/hero.jpg && rsync -ai --delete --max-delete=1 -e "ssh -p 2222 -i /root/deploy_key -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/kh -o BatchMode=yes" public/ deploy@127.0.0.1:/home/deploy/www/; echo $?
     cd /work/site && rsync -ai --delete --max-delete=0 -e "ssh -p 2222 -i /root/deploy_key -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/kh -o BatchMode=yes" public/ deploy@127.0.0.1:/home/deploy/www/; echo $?
     cd /work/site && rsync -a -e "ssh -p 2222 -i /root/deploy_key -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/kh -o BatchMode=yes" public deploy@127.0.0.1:/home/deploy/slash-test/ && find /home/deploy/slash-test -maxdepth 2
     cd /work/site && rsync -a -e "ssh -p 2222 -i /root/deploy_key -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/kh -o BatchMode=yes" public/ deploy@127.0.0.1:/home/deploy/a/b/www/; echo $?; rsync -a --mkpath -e "ssh -p 2222 -i /root/deploy_key -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/kh -o BatchMode=yes" public/ deploy@127.0.0.1:/home/deploy/a/b/www/; echo $?
     cd /work/site && rsync -a -e "ssh -p 2222 -i /root/deploy_key -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/kh -o BatchMode=yes" public/ deploy@127.0.0.1:/root/www/; echo $?; rsync -a -e "ssh -p 2299 -i /root/deploy_key -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/kh -o BatchMode=yes" public/ deploy@127.0.0.1:/home/deploy/www/; echo $?
     rsync -a --delete /work/site/public/ /work/copy/ && diff -r /work/site/public /work/copy && echo same
     apt-get -y purge rsync && add-apt-repository -y --remove ppa:rsyncproject/rsync && hash -r && test ! -e /usr/bin/rsync && echo removed
   - если ты работаешь в папке моего проекта, покажи git status: от установки в проекте не должно появиться изменений.
6. Итог одним сообщением: что установлено, какой версии и куда, сколько места заняло, что поменялось в системе и как всё удалить (macOS, Homebrew: brew uninstall rsync; Linux, apt из PPA проекта (Ubuntu): sudo apt-get purge rsync && sudo add-apt-repository --remove ppa:rsyncproject/rsync; Linux, apt (пакет дистрибутива): sudo apt-get purge rsync).

Если на любом шаге ошибка, не чини наугад: покажи текст ошибки и скажи, что, по-твоему, случилось. Частые проблемы: https://smyslokod.ru/cli/rsync#problemy

Промпт собран из официальных инструкций, сверенных 17.10.2026. Агент сначала проверит, что уже стоит, покажет план с местом на диске и способом удаления и без твоего «да» ничего не поставит.

Как ставят вручную

Способы из официальных источников, у каждого ссылка на первоисточник.

  • macOS · Homebrew · источник

    brew install rsync

    Формула берёт архив выпуска с GitHub проекта, на 17.10.2026 это 3.5.1. Проверь, что в PATH первой стоит она: rsync --version должна вывести rsync version 3.5.1. Мы не проверяли

  • Linux · apt из PPA проекта (Ubuntu) · источник

    sudo add-apt-repository ppa:rsyncproject/rsync && sudo apt update && sudo apt install rsync

    Так советуют download.html и INSTALL.md проекта для Ubuntu 22.04, 24.04, 25.10 и 26.04. Команда добавляет в систему источник пакетов PPA с его ключом. Мы ставили так и получили 3.5.1-1ppa~noble1

  • Linux · apt (пакет дистрибутива) · источник

    sudo apt-get install rsync

    apt ставит версию из репозитория системы. В Ubuntu 24.04 это 3.2.7, в прогоне её показал apt-cache policy. Мы её не ставили

Как удалить

  • macOS, Homebrew: brew uninstall rsync
  • Linux, apt из PPA проекта (Ubuntu): sudo apt-get purge rsync && sudo add-apt-repository --remove ppa:rsyncproject/rsync
  • Linux, apt (пакет дистрибутива): sudo apt-get purge rsync

Что нужно для работы

  • SSH-доступ к серверу по ключу (очень желательно) - rsync ходит на сервер через ssh. Ключ заранее настраивает человек, тогда агент выкладывает сам и пароль не вводит. Копии папки на том же компьютере SSH не нужен
  • rsync на сервере (обязательно) - справка требует rsync на обеих сторонах, когда копия идёт на другую машину. Копию папки на своём диске делает одна программа
  • software-properties-common (в отдельных случаях) - только для установки из PPA, если в системе нет команды add-apt-repository
  • Homebrew (в отдельных случаях) - только для установки на Mac

Системы

  • macOS - ставится через Homebrew. Своя команда rsync в macOS с версии 15.4 - это openrsync, другая программа с частью ключей. На Mac мы не проверяли.
  • Linux - мы проверяли на Ubuntu 24.04 x86-64 пакет из PPA проекта. В PPA на 17.10.2026 лежала 3.5.1 для Ubuntu 22.04, 24.04 и 26.04, для 25.10 - 3.4.4. В других дистрибутивах пакет rsync есть в их репозитории.

Где запускать

Ставить нужно туда, где работает агент: на твой компьютер, сервер или в контейнер.

  • На компьютере - там, где агент собирает сайт: отсюда rsync отправляет папку на сервер.
  • На сервере - должна стоять и на сервере, куда выкладывают: rsync на компьютере запускает её там через SSH. В прогоне на сервере стояла та же 3.5.1.
  • В контейнере - мы проверяли в контейнере Ubuntu 24.04 от root, сервер SSH работал в том же контейнере на 127.0.0.1.

Сколько ресурсов нужно

Место на диске
Пакет из PPA по данным dpkg занимает 930 КиБ, сама программа /usr/bin/rsync - 590 744 байт. Вместе с библиотекой libpopt0 apt насчитал 1075 kB. Если в системе нет add-apt-repository, пакет software-properties-common в нашем контейнере потянул 73 пакета и 68,6 MB по подсчёту apt.
Память
Отдельно не мерили.
Сеть
Выкладка идёт только к вашему серверу по SSH: в записи соединений задачи был один адрес, наш сервер SSH 127.0.0.1:2222. Установка из PPA ходила к ppa.launchpadcontent.net (185.125.189.186-188) и api.launchpad.net (185.125.189.224-225 и два адреса IPv6), apt-get update - к archive.ubuntu.com и security.ubuntu.com. Ещё apt обращался к deb.nodesource.com: это источник Node.js в образе нашей песочницы, к rsync он отношения не имеет. Адреса 0.0.0.0:22 и :::22 в записи - это порт нашего тестового сервера SSH после установки openssh-server. Плюс DNS контейнера 127.0.0.11. Доступ из России мы не проверяли.

Обе выкладки вместе с просмотрами на тестовом сайте заняли 1,85 секунды. Во второй выкладке rsync насчитала в папке 4 494 433 байт (Total file size). Добавление PPA, apt-get update и установка rsync заняли 19 секунд.

Лицензия и платные замены

Лицензия GPL-3.0-or-later. GNU GPL третьей версии или новее, с дополнительным разрешением на динамическое связывание с библиотеками OpenSSL и xxhash. Пользоваться бесплатно, в том числе в работе. Текст лицензии

Цена: Бесплатно. Программа бесплатная, лицензия GPL-3.0-or-later.

Платные замены

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

Бесплатные замены

  • rclone - Копирует и синхронизирует папки с облачными хранилищами, в каталоге у неё своя карточка.
  • openrsync - Своя rsync в macOS с версии 15.4, другая программа под лицензией ISC, понимает не все ключи rsync. Мы её не проверяли.

О чём помнить

  • Безопасность. Агент запускает rsync в терминале сам (exec), и она через ssh запускает rsync на сервере. Ключ -e задаёт программу, которую rsync запустит для связи, а --rsync-path - команду, которую оболочка сервера выполнит для запуска rsync. Обе настройки тоже относятся к exec. Читает любые файлы, путь к которым укажет агент, если у пользователя есть на них права (read), и отправляет их на сервер. Пишет файлы на сервере и на диске по пути, который задаёт агент, с правами пользователя (write). Необратимые действия (acts) тоже есть. Ключ --delete удаляет на сервере файлы, которых нет в папке, корзины нет. Без --backup или --backup-dir заменённые файлы на сервере перезаписываются. Перед такой выкладкой нужен просмотр той же командой с -n и «да» человека. Ключ --max-delete=N ограничивает удаления: в прогоне при лимите 1 из трёх лишних файлов удалился один, остальные остались, код выхода 25. Входа в учётные записи rsync не просит. Ключ SSH она берёт из -e или из настроек ssh.
  • Косая черта в конце пути меняет результат. public/ отправляет содержимое папки, public без черты кладёт на сервер саму папку public: в прогоне так появилась лишняя папка slash-test/public. С --delete ошибка в пути может удалить чужие файлы на сервере, поэтому сначала просмотр с -n.
  • В macOS с версии 15.4 команда rsync - это openrsync, другая программа. Она отвечает openrsync: protocol version 29 и понимает не все ключи. Для этой карточки ставь rsync через Homebrew и проверь rsync --version.
  • Если ssh не подключился (закрытый порт, нет ключа), rsync завершается с кодом 255, в прогоне так было на закрытом порту. Такого кода нет в списке кодов справки: его передаёт ssh.
  • По умолчанию rsync считает файл неизменённым, если у него те же размер и время изменения, и такой файл не отправляет. Если сборка сайта меняет содержимое без смены размера и времени, добавь ключ -c (--checksum): тогда rsync сравнит контрольные суммы файлов с одинаковым размером, но обе стороны прочитают все файлы целиком. В прогоне мы этот ключ не проверяли.
  • Свой репозиторий Ubuntu 24.04 даёт rsync 3.2.7. Если нужна текущая версия, ставь из PPA проекта.

Частые проблемы

rsync error: the --max-delete limit stopped deletions (code 25)

Удалений нужно больше, чем разрешает --max-delete. Остальные удаления rsync пропустила, файлы на сервере остались. Проверь просмотром с -n, какие файлы будут удалены. Если список верный и человек сказал «да», подними лимит или убери ключ.

mkdir "..." failed: No such file or directory (2), код 11

На сервере нет родительской папки пути назначения. rsync создаёт только последнюю папку пути. Добавь ключ --mkpath, в прогоне с ним выкладка прошла, или создай папку на сервере заранее.

rsync: connection unexpectedly closed ... (code 255)

ssh не подключился к серверу: закрыт порт, неверный адрес или нет ключа. В прогоне перед этим ssh написал Connection refused. Проверь вход на сервер той же командой ssh из -e, потом повтори rsync.

cannot stat destination "...": Permission denied (13), код 3

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

change_dir "..." failed: No such file or directory (2), код 23

Нет папки-источника: сайт не собран или путь с опечаткой. Собери сайт и проверь путь к папке.

Проверка

✓ Проверено 17.10.2026: Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root: rsync 3.5.1 из PPA проекта rsyncproject/rsync, сервер OpenSSH в том же контейнере на 127.0.0.1:2222 с входом по ключу.

Когда
17.10.2026
Среда
Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root: rsync 3.5.1 из PPA проекта rsyncproject/rsync, сервер OpenSSH в том же контейнере на 127.0.0.1:2222 с входом по ключу
Объём
Установили и прогнали задачу на тестовых данных
Что именно сделали
  1. Одноразовый контейнер Ubuntu 24.04 без данных и ключей, rsync в нём не было. Команды add-apt-repository тоже не было, поэтому сначала поставили software-properties-common. Потом add-apt-repository -y ppa:rsyncproject/rsync, apt-get update и apt-get install rsync поставили пакет 3.5.1-1ppa~noble1 за 19 секунд. rsync --version вывела rsync version 3.5.1 protocol version 33.
  2. Сервер: в том же контейнере поставили openssh-server, завели пользователя deploy и запустили sshd на 127.0.0.1:2222 только со входом по ключу. На сервере стояла та же rsync 3.5.1.
  3. Скрипт сам собрал тестовый сайт в папке public из 6 файлов: index.html, about/index.html, css/style.css, old.html, картинку на 300 000 байт и файл bundle.bin на 4 194 304 байт.
  4. Первая выкладка: rsync -avzi --delete -n -e "ssh -p 2222 -i /root/deploy_key ..." public/ deploy@127.0.0.1:/home/deploy/www/ показала 11 строк, та же команда без -n выложила ровно их.
  5. Пересборка: поправили about/index.html, добавили contacts.html, удалили old.html и переписали 100 байт в середине bundle.bin. Просмотр с -n и выкладка с --stats --backup --backup-dir=/home/deploy/backup-2 дали одинаковый список из 5 строк: удалить old.html, отправить contacts.html, about/index.html и bundle.bin, обновить время корневой папки. Папка копий при просмотре не появилась. Новых данных ушло 2 117 байт, остальные 4 192 256 байт rsync взяла из файлов на сервере.
  6. Сверка: суммы sha256 всех 6 файлов на сервере совпали с папкой public, old.html и прежняя about/index.html легли в backup-2. Обе выкладки шли под записью соединений, и в записи был один адрес, наш сервер 127.0.0.1:2222, вместе с просмотрами на них ушло 1,85 секунды.
  7. Защита и ошибки: удалили в папке 3 файла, и с --max-delete=1 rsync удалила на сервере один, а два пропустила с кодом 25. С --max-delete=0 не удалила ничего. Путь public без косой черты положил на сервер лишнюю папку public. Нет папки-источника - код 23, нет родительской папки на сервере - код 11, с --mkpath выкладка прошла. Закрытый порт ssh - код 255, папка без права записи - код 3. Локальная копия rsync -a --delete в другую папку совпала с исходной по diff -r.
  8. Удаление: apt-get purge rsync убрала пакет, add-apt-repository --remove ppa:rsyncproject/rsync убрала файл источника из /etc/apt/sources.list.d, после этого /usr/bin/rsync не осталось. Все проверки скрипт сделал сам и только после них напечатал TASK_OK.
ДатаВерсияОбъёмГдеИтог
17.10.20263.5.1задачаконтейнер, Linuxполучилось
17.10.20263.5.1задачаконтейнер, Linuxполучилось

«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.

Похожие программы

Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.