Назад | Перейти на главную страницу

scp с аутентификацией без пароля

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

scp -r /user/local/img root@192.168.18.73:/user/local/img

scp - это всего лишь инструмент копирования, поэтому, если вам нужно использовать scp, ваш единственный реальный выбор - сначала очистить дерево каталогов назначения.

В качестве альтернативы вам, вероятно, следует изучить возможность использования rsync, он будет работать через ssh с использованием настройки без пароля, которая у вас есть сейчас, и имеет много преимуществ (он может реплицировать удаления, передавать только измененные данные, поэтому копии будут быстрее и могут сжимать данные во время передачи). Если вы измените свою команду на эту, вы должны получить желаемые результаты (хотя сначала протестируйте ее, чтобы на 100% убедиться, что она делает то, что вы ищете!):

rsync -avz --del /user/local/img root@192.168.18.73:/user/local/img

scp работает как стандартный cp - он копирует то, что вы ему говорите скопировать. Ваша команда выше говорит, что она должна скопировать локальную папку /usr/local/img к /usr/local/img на удаленном сервере; если удаленная папка уже существует, она будет скопирована в /usr/local/img/img.

scp очень похож на cp, он не удаляет файлы назначения, если источник был удален. Если вы хотите синхронизировать исходный и целевой каталоги, тогда rsync - это путь вперед.

rsync -avz --delete /user/local/img root@192.168.18.73:/user/local/img

вы также можете использовать rsync поверх ssh

rsync -avz -e ssh --delete /user/local/img root@192.168.18.73:/user/local/img