Bash 날짜 문제 localhost -ufoo -pbar

데이터베이스의 백업을 만들기 위해이 bash 스크립트를 실행하고 있지만 date 및 tar 명령에서 항상 오류가 발생합니다.

#!/bin/bash
backup_filename=/var/www/vhosts/foo.com/private/backup_foo_db.sql
filename="db_daily_"`date +%Y%m%d`".tar.gz"
compressed_filename=/var/www/vhosts/foo.com/private/backup_foo_db_$filename.tar.gz
mysqldump --add-drop-table -h localhost -ufoo -pbar foobar > $backup_filename
tar cvfz $compressed_filename $backup_filename
rm $backup_filename

./mysqlbackup.sh: line 3: date: command not found

이것이 허가 문제가 될 수 있습니까? 그 파일을 루트 권한으로 실행하고 있지 않습니다.



답변

이 줄을 다음과 같이 여러 줄로 단순화하고 나누십시오.

filename="db_daily_"`date +%Y%m%d`".tar.gz"

그래서 그것은 다음과 같이됩니다 :

myDate=`date +"%Y%m%d"`
filename="db_daily_"$myDate".tar.gz"

답변

이걸 크론 작업이나 비슷한 것으로 운영하고 있습니까? 그렇다면 문제는 정상 경로와 다른 경로로 실행 중일 가능성이 높습니다. datetar 이 문제를 해결하는 두 가지 쉬운 방법이 있습니다. 명령의 전체 경로를 사용하거나 (예 : /usr/bin/date@glenn jackman이 제안했듯이) 스크립트 맨 위에 PATH를 명시 적으로 설정합니다 (예 : PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 또는 이와 유사한 것).

BTW, 당신은 이상한 백업 파일명으로 끝낼 것입니다. 먼저, filename “db_daily_20110926.tar.gz”와 같은 것으로 설정 한 다음 compressed_filename “/var/www/vhosts/foo.com/private/backup_foo_db_db_daily_20110926.tar.gz.tar.gz”와 같은 것으로 변경하십시오. 이것은 아마도 당신이 의도 한 것이 아닙니다.