Как перенести (скопировать) базу данных с локального компьютера на сервер?

Частой задачей разработчика бывает обмен файлами между локальной и удаленной машинами. И все бы хорошо, когда для этой цели используется графический интерфейс каких-нибудь приложений, но что, если они отсутствуют? В этом случае на помощь приходит утилита командной строки — scp  (безопасное копирование).

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

SCP — это простой способ защитить данные от перехватчиков и сохранить их конфиденциальность. По сути, SCP представляет собой смесь RCP и SSH (Secure Shell). Первый протокол обеспечивает выполнение операций копирования, а второй шифрует информацию и проверяет подлинность удалённых систем.

https://manpages.debian.org/stretch/openssh-client/scp.1.en.html

Если в ОС Windows Запустить командную оболочку и ввести команду scp, то в ответ мы получим некий «хелп»:

usage: scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file]
            [-J destination] [-l limit] [-o ssh_option] [-P port]
            [-S program] source ... target

Обратите внимание на параметр порт, его нужно указывать с заглавной буквы.

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

scp -i ~/.ssh/key.ppk -P 22557 ./db.sql root@95.141.78.326:/var/www

Ключ -i позволяет нам пройти аутентификацию при помощи указанного приватного ключа, ключ -P указывает наш произвольный порт для соединения, далее тот файл который подлежит копированию на сервер и затем имя пользователя и «айпи» сервера. После двоеточия мы указываем сразу путь куда должен быть скопирован файл.

Во избежании проблем с правами, если вы действуете от имени отличительного от root-а пользователя, рекомендуется осуществлять копирование в домашнюю директорию указав знак тильды:

scp -i ~/.ssh/key.ppk -P 22557 ./db.sql kolya@95.141.78.326:~