쉘 스크립트를 사용하여 백업 디렉토리 압축

쉘 스크립트를 사용하여 백업 디렉토리 압축

데이터 백업을 위한 쉘 스크립트를 작성 중입니다. 내 스크립트는 데이터를 성공적으로 백업합니다. 그러나 디렉토리는 압축되지 않습니다. 쉘 스크립트에서 무엇이 문제인지 찾을 수 없습니다

MONGO_DATABASE="database"
APP_NAME="appname"
MONGO_HOST="localhost"
MONGO_PORT="port"
MONGO_USER=""
MONGO_PASS=""
TIMESTAMP=`date "+%Y-%m-%d-%H-%M-%S"`
MONGODUMP_PATH="mongopath"
BACKUPS_DIR="backup path"
BACKUP_NAME="$APP_NAME-$TIMESTAMP"
# mongo admin --eval "printjson(db.fsyncLock())"
$MONGODUMP_PATH --host $MONGO_HOST  -d $MONGO_DATABASE --port $MONGO_PORT 
#$MONGODUMP_PATH -d $MONGO_DATABASE
# mongo admin --eval "printjson(db.fsyncUnlock())"

mkdir -p $BACKUPS_DIR
#tar -cvf filename.tar files/directories
mv dump $BACKUP_NAME* $BACKUPS_DIR
tar -cvz -f $BACKUP_NAME.tar.gz $BACKUP_NAME
find $BACKUP_NAME -type d -ctime +10 | xargs rm -rf
#rm -rf $BACKUP_NAME

답변1

문제는 다음 두 줄에 있습니다.

mv dump $BACKUP_NAME* $BACKUPS_DIR
tar -cvz -f $BACKUP_NAME.tar.gz $BACKUP_NAME

첫 번째 줄의 이동을 사용 dump하고 $BACKUP_NAME*현재 디렉터리를 떠난 다음 현재 디렉터리에서 두 번째 줄의 아카이브에 추가하려고 mv시도하고 있습니다 .$BACKUP_NAME*

내 느낌은 당신이 사용하고 싶을 수도 있다는 것입니다

mv dump "$BACKUP_NAME"* "$BACKUPS_DIR"
tar -cvz -f "$BACKUP_NAME.tar.gz" "$BACKUPS_DIR"

tar그러면 해당 디렉토리 의 아카이브가 생성됩니다 $BACKUPS_DIR. 그러나 $BACKUP_NAME*이 이름으로 파일을 생성하는 것을 볼 수 없기 때문에 왜 첫 번째 줄에 있는지 잘 모르겠습니다 ... (그러나 뭔가 빠졌을 수도 있습니다).

또한 위에서 했던 것처럼 스크립트 전체에서 변수 확장을 참조하는 것을 고려해 보세요. 이는 공백이 포함된 파일이나 디렉터리 이름을 사용하는 경우 특히 중요합니다.

관련 정보