使用shell脚本压缩备份目录

使用shell脚本压缩备份目录

我正在编写一个用于数据备份的 shell 脚本。我的脚本备份数据成功。但是目录未压缩。我找不到我的 shell 脚本出了什么问题

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*在第一行,因为我看不到任何使用此名称创建文件的内容...(但我可能会丢失一些东西)。

另外,请考虑在整个脚本中引用您的变量扩展,就像我上面所做的那样。如果您使用包含空格的文件或目录名称,这一点尤其重要。

相关内容