У меня есть доступ SSH (используя пару ключей SSH) к удаленной машине. Я хочу сохранить каталог на удаленной машине в точности равным заданному локальному каталогу (односторонняя синхронизация). Проверка на равенство файлов должна выполняться на основе хеша содержимого двоичного файла (не размера/даты).
- Какая правильная команда rsync для этого используется (не служба rsync)?
- Как обрабатываются права доступа к файлам?
- Как обрабатываются даты изменения файлов?
- Как rsync реагирует на сбои и каков код выхода?
решение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
Как обрабатываются разрешения на доступ к файлам? Как обрабатываются даты изменения файлов?
Параметр a
сохраняет символические ссылки, права доступа к файлам, временные метки... Если вы не хотите передавать эту информацию, просто исключите ее из команды, она будет принадлежать пользователю, под которым вы вошли в сеанс SSH.
Как rsync реагирует на сбои и каков код выхода?
Большинство команд/программ возвращают 0 в случае успеха и любое другое число в случае ошибки.Вот список кодов выхода rsyncдля справки