postgreSQL백업을 crontab을 이용하여 돌릴려구 하는데...

kn31232의 이미지

#!/bin/bash

date >> pg_backup.log
su - postgres -c "/usr/local/pgsql/bin/pg_dumpall > /usr/local/pgsql/`date
m%d`.sql"

Shell스크립트의 내용은 이렇구요...

Crontab설정은

45 13 * * * /bin/sh /root/bin/pg_backup

이렇습니다.

음....그냥 스크립트를 실행시키면 잘 동작을 하는데....

crontab으로는 작동을 하지가 않는군요...

물론 /var/log/cron에도 로그가 남습니다.

Aug 3 13:45:00 imagemate2 CROND[21912]: (root) CMD (/bin/sh /root/bin/pg_backup)

이렇게요...음....혹시 왜 crontab으로는 로그만 남고 작동을 하지 않는지 아시는분 계신가요??

박영선의 이미지

45 13 * * * /root/bin/pg_backup

이렇게 하면 어떨까요?

^^;;

kn31232의 이미지

음..이것저것 방법을 달리해도 계속 그렇게 되네요...^^;;

셀을 바꿔서 실행해봐도....지워봐두...

계속 로그만 남을뿐 실행은 되지 않으니...

어거 어찌할 노릇인지....ㅠ.ㅠ

飛上

cdpark의 이미지

PATH 설정 문제일 수도 있습니다.

date나 su의 절대경로를 넣어줘보세요.

그리고 su 대신에 sudo를 쓰는 건 어떨까요?
아예 이 script를 root 권한 대신에 postgres 권한으로 돌리시거나요.

kn31232의 이미지

Quote:
PATH 설정 문제일 수도 있습니다.

date나 su의 절대경로를 넣어줘보세요.

그리고 su 대신에 sudo를 쓰는 건 어떨까요?
아예 이 script를 root 권한 대신에 postgres 권한으로 돌리시거나요.

혹 PATH의 문제라면 일반 콘솔에서 실행시켰을경우도 같은 경우가 나와야 하지 않을까요...??(그냥 스크립트를 실행시키면 잘돌아간답니다~ :lol: )

음...그리구 권한같은경우도 물론...바꿔서 해봤지요.... :(

휴~ 왜 이런 문제가 발생하는걸까요? 당황스럽네요...... :oops:

飛上

orangecrs의 이미지

PATH 설정 문제가 맞습니다...
crontab 내에
절대경로로 지정해주시면 해결됩니다....

---------------------------------------------------
야!...

cdpark의 이미지

% man 5 crontab..

cron으로 수행될 때 PATH 값은 기본적으로 "/usr/bin:/bin"으로 설정됩니다.
date나 su 명령이야 /bin에 있으니 상관없겠지만 pg_dumpall 등의 명령에는 영향을 주겠죠? 확인해보세요.

cron 관련 문제는 permission과 PATH 설정 문제가 대부분이죠. :)

kn31232의 이미지

crontab의 내요은...

45 13 * * * /bin/sh /root/bin/pg_backup

처음부터 절대경로였습니다. :)

Shell script인...

#!/bin/bash 

date >> pg_backup.log 
su - postgres -c "/usr/local/pgsql/bin/pg_dumpall > /usr/local/pgsql/`date + %Y%m%d`.sql"

이곳 역시 절대경로를 사용하였구요...

정말 답답하시죠...?? :lol: 전 환장하겠어요~~~ :twisted:

飛上

orangecrs의 이미지

crontab에

45 13 * * * /usr/local/pgsql/bin/pg_dumpall > /usr/local/pgsql/back.sql

로 해보세요...

권한설정때문에 절대경로 지정을 crontab 안에 위치하도록 말씀드린거구요...
그러면 적당히 arg 를 받아 경로지정하는 스크립트가 만들어지겠지요...
그럼...

---------------------------------------------------
야!...

kn31232의 이미지

45 13 * * * /usr/local/pgsql/bin/pg_dumpall > /usr/local/pgsql/back.sql

orangecrs님께서 말씀해주신데로 적어서 우선 성공은했습니다!! :D

음~ 근데 여기서 date라는 명령어는 같이 사용 못하나요??

이것저것 방법을 써봐두 쉘명령어를 같이 쓰지는 못하는것 같네요....

혹시 방법이 있으시다면 한수 가르쳐주세요 :wink:

飛上

cdpark의 이미지

shell script 내의 pg_backup.log 파일이 절대경로가 아닌데요? :(

소타의 이미지

좀 다른 얘기지만.. -.-;
http://www.postgresql.or.kr/wiki.php/nonun/Documents/Slony-1

멀티슬레이브 리플리케이션입니다. 싱크 시간을 변경할 수 있습니다. 어떤 슬레이브는 1분, 어떤 슬레이브는 1시간 전의 정보를 유지하게 할 수도 있습니다..

orangecrs의 이미지

제가 깜박했군요... cron을 설정해본지가 오래되나서...

그냥 하신대로 쉘스크립트에서 절대경로 지정을 하면 되는데요...
올려주신 쉘스크립트가 잘못된 것 같네요... 날짜지정에서...(또 날짜 지정하실때 쉘스크립터에서 ` 를 '로 잘못 쓰셨네요... 복사 &붙이기해서 텀에서 하이라이팅보고 틀린걸 알았습니다...) 그리고 생각해보니
권한설정을 su로 postgres로 해주셨는데 /usr/local/pgsql의 디렉토리 권한이 어떻게 되어있는지 몰라도 올려주신 소스로는 안될듯하네요...

#!/bin/bash

date >> pg_backup.log
su - postgres -c "/usr/local/pgsql/bin/pg_dumpall > /usr/local/pgsql/`date + %Y%m%d`.sql"

쉘을 고친다면

#!/bin/sh

/bin/date >> /usr/local/pgsql/pg_backup.log

BACK_DATE=`date +"%Y%m%d"`

/usr/local/pgsql/bin/pg_dumpall > /usr/local/pgsql/$BACK_DATE.sql 

로하고 chmod 700 pg_backup이후
root권한으로 crontab -e 에서

45 13 * * * /root/bin/pg_backup

를 추가 하시면 무난할듯 보입니다...

참고로 전 vixie-cron쓰고요 제 mysql data 를 위의 방법으로 지금 돌려보니
문제없이 잘돌아가네요....

그럼...

---------------------------------------------------
야!...

kn31232의 이미지

2004. 08. 04. (수) 09:39:46 KST
2004. 08. 04. (수) 09:40:12 KST
Wed Aug 4 09:43:00 KST 2004 <-- crontab으로 돌렸을때 pg_backup에 저장되는 date내용
2004. 08. 04. (수) 09:46:02 KST <-- 그냥 스크립트를 실행시켰을경우에 pg_backup에 저장되는 date내용
Wed Aug 4 10:04:00 KST 2004

왜 틀리죠??

참 그리구..postgreSQL의 명령어는 root로는 실행할 수 가 없어서

postgres라는 계정으로 su 해서 사용하는거랍니다....ㅜ.ㅡ

그리구...저렇게 해두 잘 되지가 않네요.....;;;;;

참~ nonun님!!

Slony-i에 대한 자료 더 알고 계신거 있으면 공유 부탁드립니다!! :D

飛上

nainu의 이미지

date 내용이 한글과 영문으로 나오는 건 로케일 때문에 그렇습니다 :)
스크립트 내에서 LANG, LC_ALL 을 C 로 바꿔놓으면 영문으로만 나오게 됩니다. 근데 그런 상황을 피하는 방법은:

nainu@* nainu $ date +%y%m%d_%k:%M:%S
040804_11:40:53

띄어쓰기도 없고 쓸만하겠죠. ㅎ_ㅎ 시간을 빼버리려면 _ 뒤를 지워버리면 됩니다. 더 자세한 내용은 date --help ~

그리고 postgres 계정으로 crontab 을 돌릴때는 /etc/crontab 에 계정을 설정해줄 수가 있습니다. 데비안의 /etc/crontab 에는 이렇게 쓰여 있네요.

# m h dom mon dow user  command
25 6    * * *   root    test -e /usr/sbin/anacron || run-parts --report /etc/cron.daily
47 6    * * 7   root    test -e /usr/sbin/anacron || run-parts --report /etc/cron.weekly
52 6    1 * *   root    test -e /usr/sbin/anacron || run-parts --report /etc/cron.monthly
#

여섯번째 항에 있는 root를 postgres로 바꾸고 하면 됩니다.
crontab에도 모두 절대경로, 실행하시는 스크립트도 모두 절대경로로 써 두시면 문제없이 잘 돌아갈 것 같습니다. :P

nainu의 이미지

아, 그리고 crontab 로그는 해당 사용자 계정으로 메일이 날라갑니다.
root 시라면 mutt 혹은 mail 을 한번 쳐 보세요. ㅎ_ㅎ 메일이 잔~~~~뜩 와있을거예요.

kn31232의 이미지

결국은 해결했습니다....

만...이유는 알수가 없습니다...왜 이런 문제가 발생하는지에 대해서요... :oops:

음...우선... postgres 계정의 crontab 내용입니다.

crontab -u postgres -l

58 14 * * * /usr/local/pgsql/bin/pg_dumpall > /usr/local/pgsql/$(/usr/local/bin/mydate.sh).sql

mydate.sh는 단순히 시간을 얻어오는 스크립트구요...

음....

해결은 하긴 했지만 영...찜찜하네요....왜 이러는지 이유를 알 수 없으니까요.... :cry:

그래도 해결은 했으니까.... :twisted:

飛上

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.