シェルスクリプトを使用したバックアップディレクトリの圧縮

シェルスクリプトを使用したバックアップディレクトリの圧縮

データバックアップ用のシェルスクリプトを作成しています。私のスクリプトはデータを正常にバックアップします。ただし、ディレクトリは圧縮されません。シェルスクリプトで何が問題なのか見つかりません

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*この名前でファイルを生成するのがわからないので、なぜ最初の行にあるのかわかりません...

また、上記のように、スクリプト全体で変数の拡張を参照することを検討してください。これは、スペースを含むファイルまたはディレクトリ名を使用する場合に特に重要です。

おすすめ記事