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

Однострочное резервное копирование, сжатие, файл базы данных scp

Я поддерживаю компанию с удаленным веб-сайтом. Они используют базы данных PostgreSQL.

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

Мне нужно сделать однострочный сценарий для синхронного резервного копирования, сжатия и переноса файла резервной копии в локальный Linux-сервер.

Если бы мой локальный Linux-ящик был доступен через SSH в mylinuxbox.foo.com на порт 122, а имя моей базы данных было mydatabase, как бы выглядела эта однострочная команда задания cron?

Предполагая, что вы используете идентификацию идентификатора (или .pgpass) для базы данных, я бы, вероятно, сделал что-то вроде следующего:

pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c > mydatabase.backup.gz; scp -P 122 mydatabase.backup.gz user@mylinuxbox.foo.com:; rm -f mydatabase.backup.gz

Редактирование для добавления другого варианта ...

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

pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c | ssh -p 122 user@mylinuxbox.foo.com "cat >mydatabase.backup.gz"