Bash 날짜 문제


0

데이터베이스의 백업을 만들기 위해이 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

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


전체 경로를 지정하십시오. /usr/bin/date, /usr/bin/tar
glenn jackman

파일 압축 만하려는 경우 tar를 사용하지 말고 bzip2 또는 gzip과 같은 것을 사용하십시오.
glenn jackman

답변:


0

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

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

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

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

또는 더 좋게, myDate=$(date +"%Y%m%d").
Kusalananda

@ KAK 나는 그들이 같은 일을하기 때문에 맛의 문제라고 생각하지만, $ ()가 좀 더 좋을지도 모른다.
Johan

너는 말할 수 있었다. filename=$(date "+db_daily_%Y%m%d.tar.gz") - 날짜 형식 문자열은 날짜 필드 일 필요는 없습니다.
glenn jackman

@ 요한, $(...) 구문에는 실제로 실제로 중첩되는 이점이 있습니다.
Kusalananda

0

이걸 크론 작업이나 비슷한 것으로 운영하고 있습니까? 그렇다면 문제는 정상 경로와 다른 경로로 실행 중일 가능성이 높습니다. 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"와 같은 것으로 변경하십시오. 이것은 아마도 당신이 의도 한 것이 아닙니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.