0
데이터베이스를 백업하기 위해 cron과 함께 사용할 작은 bash 스크립트를 작성하고 있습니다. 이전 백업 (180 일 이상)을 검색하면 find 명령이이를 삭제해야합니다.-delete를 사용하여 find 명령은 항상 상태 코드 0을 반환합니다.
그것은 삭제하지만 않습니다 두 (첫 번째 발생해야 그것은 수행하고 삭제하는 것이없는 경우, 그것은 아무것도 삭제하지 않은 경우에도 항상 0을 반환 0
#!/bin/bash
# Vars
TODAY=$(date +%d%m%y)
BDIR=/backup/
FLOG="/var/log/mydb_backup.log"
# Backing up the db
su -c "pg_dump --format=c --file=${BDIR}mydb_db_backup.${TODAY} mydb" postgres
if [ $? -eq 0 ]; then
LOG="mydb DB of ${TODAY} backed up!"
else
LOG="Problem to back up mydb DB of ${TODAY}"
fi
# Delete db backup older than 180+ days
find ${BDIR} -type f -mtime +180 -delete
if [ $? -eq 0 ]; then
LOG+=" - Old DB backup deleted"
else
LOG+=" - No Old DB backup to delete"
fi
# Writing result
echo ${LOG} >> ${FLOG}
echo $?
을 반환 할 때 개월 만). 내가 잘못하고있는 것이 있습니까?
교차 사이트 중복 : https://serverfault.com/questions/225798/can-i-make-find-return-non-0-when-no-matching-files-are-found –
삭제하지 않기 때문입니다. 아무것도 오류가 아닙니다. 'find '는 삭제 된 파일의 수를 반환하지 않고 실행 중에 발생한 오류를 설명하는 상태 코드를 반환합니다. 오류없이 실행 했으므로 예상대로 0을 반환했습니다. – litelite
참 .. 나는 그것이 삭제에 관한 것이 아니라 발견한다는 것을 완전히 잊어 버렸습니다. 고마워요! 나는 그것을 어떻게 든 고칠 것이다;) – Nihvel