SSH 원격 명령-fu

SSH 원격 명령-fu

방화벽 뒤에서 원격 백업을 수행하려고 합니다. 이것을 crontab에서 호출되는 자체 스크립트로 분리하는 것은 실제로 문제가 되지 않습니다. 그러나 그것은 전혀 재미가 없습니다! 내가 하려는 일:

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

postgresql 데이터베이스를 백업하고(모든 것을 stdout에 덤프) 이를 단순히 backup.sql에 배치하는 원격 SSH 명령으로 리디렉션하는 것입니다.

불행히도 내가 얻는 것은 내 원격 상자에 빈 "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

따옴표가 어디에 있는지 특히 주의하세요. 따옴표는 원격 끝에서 실행되는 것과 로컬에서 실행되는 것을 정의합니다.

관련 정보