
Я поддерживаю компанию с удаленно размещенным веб-сайтом. Они используют PostgreSQL dbs.
Я не могу писать скрипты на удаленном сервере и не хочу хранить на удаленном сервере никаких резервных копий, но могу запускать задания cron и имею доступ к открытому ключу SSH удаленного сервера. Я настроил локальный хост Linux на прием закрытого ключа удаленного хоста для аутентификации.
Мне нужно создать однострочный скрипт для синхронного резервного копирования, сжатия и копирования резервной копии на локальную машину Linux.
Если бы мой локальный компьютер Linux был доступен по SSH через mylinuxbox.foo.com
порт 122, а имя моей базы данных было бы mydatabase
, как бы выглядела эта однострочная команда задания cron?
решение1
Предполагая, что вы используете аутентификацию Ident (или .pgpass) для базы данных, я бы, вероятно, сделал что-то вроде следующего:
pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c > mydatabase.backup.gz; scp -P 122 mydatabase.backup.gz [email protected]:; rm -f mydatabase.backup.gz
Редактирую, чтобы добавить еще один вариант...
Если действительно важно не иметь промежуточного хранилища файла резервной копии, вы можете изменить приведенный выше код так, чтобы он выглядел примерно так:
pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c | ssh -p 122 [email protected] "cat >mydatabase.backup.gz"