
データバックアップ用のシェルスクリプトを作成しています。私のスクリプトはデータを正常にバックアップします。ただし、ディレクトリは圧縮されません。シェルスクリプトで何が問題なのか見つかりません
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
問題は次の2行にあります。
mv dump $BACKUP_NAME* $BACKUPS_DIR
tar -cvz -f $BACKUP_NAME.tar.gz $BACKUP_NAME
最初の行の移動を使用しdump
て$BACKUP_NAME*
現在のディレクトリを離れ、現在のディレクトリから2行目のアーカイブに追加しようmv
としています。$BACKUP_NAME*
私の気持ちはあなたが使用したいかもしれないということです
mv dump "$BACKUP_NAME"* "$BACKUPS_DIR"
tar -cvz -f "$BACKUP_NAME.tar.gz" "$BACKUPS_DIR"
tar
これにより、そのディレクトリのアーカイブが作成されます$BACKUPS_DIR
。しかし、$BACKUP_NAME*
この名前でファイルを生成するのがわからないので、なぜ最初の行にあるのかわかりません...
また、上記のように、スクリプト全体で変数の拡張を参照することを検討してください。これは、スペースを含むファイルまたはディレクトリ名を使用する場合に特に重要です。