Копирование всех данных сервера где запрещен доступ root, но есть доступ с правами sudo

    Общий рейтинг статьи: 5 (проголосовало 1 )
    Опубликовано:  [просмотров 519]


    Как известно авторизация на виртуальных машинах Amazon EC2 осуществляется по ключу и обязательно непривелигированным пользователем. Авторизация пользователем root запрещена, причем сделано это довольно хардкорно. Существует несколько способов обойти это ограничение, но последнее время эти методы не работают, да и честно говоря делать это не стоит, так как такие методы ломают совметимость с механизмами автоматизации Amazon (например с построением кластера).

    Резервное копирование инстанса-амазона

    Как известно самым простым способом "на горячую" слить данные с сервера с сохранением прав доступа и связок символических и жестких ссылок является использование механизма rsync с параметрами av (и исключением из резервного копирования служебных каталогов). Так как прямого доступа пользователя root с авторизацией по ключу у нас нет, а есть только непривелигированный пользователь который может выполнить sudo то, следовательно, задача rsync -av для корня сервера получается не такой уж и тривиальной, но вполне решаемой.

    Обход ограничений на доступ root в Amazon для резервного копирования:

    Для этого используйте следующую команду:

    # rsync -av --rsync-path="sudo rsync" --exclude-from=../exclude.dat ubuntu@54.186.215.24:/ /opt/backup/

    Вся соль здесь в опции sudo rsync и если пользователь имеет право использовать sudo без ввода пароля, то этот вариант сработает. Именно такой метод я сегодня вполне удачно опробовал на одном из проектов и еще в дополнение расскажу команду, которую можно использовать для получения списка установленных на сервере пакетов.

    # apt list --installed | awk -F "/" '{ print $1 }' | awk '{ print $1 }' | tr "\n" ' '

    В результате выполнения команды вы получите список установленных на сервере пакетов разделенных пробелом и этот список можно сразу передать apt-get install на другом сервере.


    Обсуждение статьи
    Вопрос нашего пользователяЕсли потребуется принудительно указать ключ для ssh-подключения, то добавьте опцию: -e "ssh -i ~/.ssh/secret.pem"
    Ответ на комментарийСпасибо за уточнение!

    Ваш комментарий: