pg 백업을 위해 다음 셸 스크립트를 작성했습니다.
#!/bin/bash
PG_USER=donato
DATABASE=mydb
SERVER=216.58.219.174
DIR="$HOME/pg_bak"
DATE=$(date +"%m_%d_%y")
FILE="$DATABASE_$DATE"
ERROR_FILE="$HOME/pg_bak/error_bak/$FILE_error.txt"
# pass @ .pgpass
PG_BAK_NOW () {
pg_dump -h $SERVER -U $PG_USER $DATABASE >$FILE 2>$ERROR_FILE
code=$?
if [ $code -ne 0 ]; then
echo 1>&2 "The backup failed (exit code $code), check for errors in $ERROR_FILE"
fi
}
echo "Ready to dump to $FILE" >> "$HOME/pg_status"
cd $DIR
if [ -f "$FILE" ];
then
rm $FILE
PG_BAK_NOW
else
PG_BAK_NOW
fi
내가 그것을 실행할 때, 나는 그것이 약간의 시간 동안 실행된다는 것을 압니다.
$ pgrep -fl pg_bak.sh
4603 pg_bak.sh
하지만 충돌합니다.
$ ./pg_bak.sh
The backup failed (exit code 1), check for errors in /home/viggy/pg_bak/error_bak/.txt
.txt
부품을 주목하십시오 . 오류 파일의 이름이 있어야했다 mydb_6_11_2016_error.txt
,하지 .txt
. bash 스크립트가 변수 $ FILE과 하드 코딩 된 문자열 "_error"를 보간하지 않은 이유는 무엇입니까? 덤프 파일에서 $ FILE을 올바르게 보간했지만 오류 파일은 아닙니다. 왜?
매우 흔한 실수 :
ERROR_FILE="$HOME/pg_bak/error_bak/${FILE}_error.txt"
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다