ssh удаленная команда-fu

ssh удаленная команда-fu

Я пытаюсь сделать удаленное резервное копирование из-за брандмауэра. На самом деле, не проблема разбить это на отдельный скрипт, который вызывается в crontab, но это не весело! Что я пытаюсь сделать с:

pg_dump -U my_user my_database | ssh me@myserver "> backup.sql"

заключается в резервном копировании базы данных postgresql (сбрасывает все данные на stdout) и перенаправлении их удаленной команде ssh, которая просто помещает их в backup.sql.

К сожалению, все, что я получаю, это пустой "backup.sql" на моем удаленном компьютере. Перенаправление - не моя сильная сторона, поэтому любые советы будут оценены по достоинству. Спасибо.

решение1

пытаться

pg_dump -U my_user my_database | ssh me@myserver "cat > backup.sql"

решение2

Еще лучше: сожмите его перед тем, как подключаться по SSH:

pg_dump -U my_user my_database | gzip -c | ssh me@myserver "cat > backup.sql.gz"

Это экономит массу пропускной способности при использовании SQL-дампов.

Я на самом деле делаю наоборот. У меня есть резервный сервер, который входит в сервер, который нужно скопировать. Это означает, что если какой-либо сервер (кроме резервного сервера, у которого есть серьезно фашистская безопасность) будет скомпрометирован на уровне корня, резервный сервер — и, следовательно, все остальные серверы! — не будет скомпрометирован по умолчанию.

Поэтому моя команда для удаленного создания дампа SQL немного отличается:

ssh <server> "pg_dump -U <user> <database> | gzip -c" > /backups/sqlbackup.sql.gz

Обратите особое внимание на кавычки — они определяют, что выполняется на удаленной стороне, а что — локально.

Связанный контент