Как можно синхронизировать две директории с помощью SSH?

Как можно наиболее простым способом синхронизировать две директории (локальную и серверную) без необходимости установки дополнительного программного обеспечения на сервере? Требуется двусторонняя синхронизация файлов с возможностью быстрой и простой синхронизации, доступной через SSH, исключая резервные копии, версионирование и синхронизацию на основе Git. Также важно, чтобы этот процесс был синхронизацией файлов, а не удаленным доступом, без использования сети или ssh-плагинов.
  • 4 августа 2024 г. 22:23
Ответы на вопрос 3
Для синхронизации двух директорий с использованием SSH можно воспользоваться утилитой rsync. Rsync - это универсальный инструмент для синхронизации файлов и директорий, который поддерживает передачу файлов через SSH.

Для синхронизации локальной директории с серверной можно использовать следующую команду:

```bash
rsync -azvr --delete -e ssh /путь/к/локальной/директории/ пользователь@сервер:/путь/к/удаленной/директории/
```

Эта команда синхронизирует локальную директорию с удаленной директорией на сервере. Опция `-a` означает рекурсивную синхронизацию, `-z` - сжатие файлов во время передачи, `-v` - вывод подробной информации о процессе синхронизации, `--delete` - удаление файлов на удаленной директории, которых нет в локальной. Опция `-e ssh` указывает использовать SSH для передачи файлов.

Для синхронизации двух директорий в обе стороны, можно запустить команду на обе стороны:

```bash
# С локальной директории на сервер
rsync -azvr --delete -e ssh /путь/к/локальной/директории/ пользователь@сервер:/путь/к/удаленной/директории/

# С серверной директории на локальную
rsync -azvr --delete -e ssh пользователь@сервер:/путь/к/удаленной/директории/ /путь/к/локальной/директории/
```

Эти команды будут синхронизировать обе директории в обе стороны.

Использование rsync через SSH - это удобный и безопасный способ синхронизации файлов между локальной и удаленной директориями.
Да, странная. Обычно бэкапы делаются по расписанию, а для этих целей rsync хватает. 
А твой скрипт после написания и отладки как раз и превратится в неполное подобие syncthing, nextcloud и т.п.
Мне постоянно советуют rsync

Неужели такая странная хотелка, что нет готового решения?

Так тебе и советуют готовое отличное решение.

, но это же просто продвинутая замена scp. Там даже для обратной синхронизации надо его запускать второй раз с другим направлением.

Нет, это не замена scp. То, что используется тот же протокол не значит что работает одинаково. rsync умеет обновлять файлы частично, экономит трафик.

Вот пишу я какой-то код на ноуте. А запускаю на сервере. Как мне самым простым способом синхронизировать две директории — локальную и серверную?

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

В твоих требованиях противоречия.
То тебе нужно, чтоыб какие-то файлы не синкались. То есть уже нужно поддерживать список исключений и возможно настраивать его на каждом сервере.
Потом у тебя день поработать на каком-то сервере, а завтра на другом. То есть ситуация, когда у тебя 5-10 серверов и ноут будут синкаться друг с другом?
Потом ты хочешь "готовое решения", но не хочешь ставить его на каждый сервер/ноут и настраивать. Ну вот есть какой-нить unison, который синкает в обе стороны за один запуск, но его нужно будет и ставить и настраивать как и synthing, который ты не хочешь ставить или настраивать.

Я бы не парился, а просто юзал приватный git репозиторий, который легко поставить везде. И в гите не обязательно сотни веток и даже коммит можешь просто ребейзить постоянно, чтобы был один.
Или rsync который уже обычно есть почти везде и который понятно как работает.

Или уж настрой тот же synthing, а настройку добавь себе в гитхаб, чтобы можно было скриптом скачать готовый сетап и все.
Похожие вопросы