1

У меня есть доступ по SSH (используя пару ключей SSH) к удаленной машине. Я хочу, чтобы каталог на удаленной машине был точно равен данному локальному каталогу (синхронизация в одном направлении). Проверка на равенство файлов должна выполняться на основе хэша содержимого двоичного файла (а не размера / даты).

  1. Какова правильная команда rsync, чтобы сделать это (не служба rsync)?
  2. Как обрабатываются права доступа к файлам?
  3. Как обрабатываются даты изменения файла?
  4. Как rsync реагирует на сбои и каков код выхода?

1 ответ1

1

Rsync проверяет содержимое файла, а не дату и / или размер файла. Если содержимое отличается, но с тем же путем и именем, файл будет перезаписан.

Синтаксис для rsync - это rsync options source destination поэтому, если вы хотите синхронизировать удаленный каталог с локальным, это должно сработать:

rsync -azh local_folder user@remote_server:/path/to/destination/

Если вы хотите использовать SSH в качестве протокола передачи, это работает для меня:

rsync -azhe ssh local_folder user@remote_server:/path/to/destination

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

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

Как rsync реагирует на сбои и каков код выхода?

Большинство команд / программ возвращают 0 в случае успеха и любое другое число в случае ошибки. Вот список кодов выхода rsync для справки

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .