2013-09-24 2 views
1

나는 자동 백업 스크립트를 실행하려고합니다.우분투 + cron의 Postgres 백업 스크립트

터미널에 "bash backup.su"를 입력하여 실행하면 스크립트가 완벽하게 작동합니다. 모든 쿼리와 작업에 대해 암호 (데이터베이스 사용자)를 입력해야하지만 정상적으로 작동합니다.

하지만 터미널을 사용하지 않는 한 (예 : cron을 통해) 그렇지 않습니다. 단지 정보없이 내 로그 파일을 출력합니다.

Making backup directory in /scripts/2013-09-26-daily 

Performing schema-only backups 
------------------------------------------ 
Password for user backupuser: <- Query getting all databases with certain string in name 
The following databases were matched for schema-only backup: 

Performing full backups 
------------------------------------------ 
Password for user backupuser: <- Query getting all databases 
Plain backup of DB1 
Password: 
Plain backup of DB2 
Password: 
Plain backup of AndSoOn 
Password: 
All database backups complete! 

크론 로그 :

Making backup directory in /scripts/2013-09-26-daily/ 

Performing schema-only backups 
------------------------------------------ 
The following databases were matched for schema-only backup: 

Performing full backups 
------------------------------------------ 

All database backups complete! 

것 같다 당신이 볼 수 있듯이 더 쿼리가 실행되지 할

나는이 사용자 권한

터미널 출력 할 수있는 뭔가가 생각합니다. 지금은 특별한 백업 사용자를 사용하고 있지만 postgres에서도 작동하지 않습니다. (postgres 사용자와 함께 그는 패스워드를 묻는다. 그러나 빈 글자는 스크립트를 멈춘다.)

나에게 단서가있는 사람이 있습니까? 내가 완벽하게 수동으로 작동한다고 말한 것처럼, 봇은 cron을 사용하지 않습니다.

인사말

마틴

답변

1

대화 형으로 실행하는 경우 당신은 청각 장애를 가지고 있지만, 크론에서 실행할 때를 기다리는 동안, 스크립트를 읽 할 표준 입력이없는 즉, (즉, 스크립트를 차단하는 것입니다 첨부 된 청각 장애도 없다 어디서나 입력 할 수없는 입력 용).

암호없이 스크립트를 실행 가능하게 설정해야합니다 (예 : 특정 사용자 계정에서 실행하고 비밀번호없이 연결하도록 postgres를 구성하십시오 (예 : pg_hba.conf 수정).

2

사용자의 홈 디렉토리에서 cron 작업에 사용할 .pgpass를 만들 수 있습니다. .pgpass 형식은 다음과 같아야합니다

hostname:port:database:username:password 

은 실제로, 나는 당신이 cron 작업이 작동하려면 호스트 이름, 포트 및 데이터베이스에 대한 와일드 카드 ("*")를 사용할 필요가 있음을 발견했다. 예를 들어, 당신은 포스트 그레스의 사용자와 사용자 홈 디렉토리와 cron 작업을 실행하는 경우입니다/홈/포스트 그레스는 다음에/홈 ".pgpass"라는 파일을 생성/다음과 같은 내용으로 포스트 그레스 :

*:*:*:postgres:password 

그러면 postgres 사용자로 실행중인 cron 작업이 암호 없이도 작동합니다. 이 비밀번호 파일의 공식 문서는 다음과 같습니다. http://www.postgresql.org/docs/8.4/static/libpq-pgpass.html