Наконец-то я использовал rsync
вместо scp
только из-за той же проблемы. Я был вынужден использовать эту полезную команду, потому что я копирую конфигурации маршрутизаторов и данные компьютеров, подключенных к этим маршрутизаторам. Маршрутизаторы используют очень ограниченное количество команд linux, и эта команда доступна на моделях, которые мы используем. Мы попытались использовать ключи SSH, но у маршрутизаторов нет постоянной памяти, после повторной инициализации все ключи SSH стираются.
Таким образом, команда для rsync
здесь с включенной опцией -e
, также я использую порт 2222, опция -p
позволяет вам изменять порты.
sshpass -p 'password' rsync -vaurP -e 'ssh -p 2222' backup@???.your.ip.???:/somedir/public_data/temp/ /your/localdata/temp
Вы можете защитить еще больше, как я сделал, заменив пароль для однострочного файла, используя скрипт bash для многосерверной среды. Альтернативой является использование опции -f, чтобы пароль не отображался в истории bash -f "/path/to/passwordfile"
Если вы хотите обновить только измененные файлы, вам следует использовать эти параметры -h -v -r -P -t , как описано здесь https://unix.stackexchange.com/questions/67539/how-to-rsync-only-new-files
Кстати, если вы хотите сделать восстановление, просто поменяйте источник по цели. Не нужно много менять, из той же командной оболочки вы можете сделать это, изменив порядок каталогов назначения и источника, убедитесь, что у пользователя есть цель с тем же паролем, чтобы принять rsync