我正在编写一个用于数据备份的 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*
在第一行,因为我看不到任何使用此名称创建文件的内容...(但我可能会丢失一些东西)。
另外,请考虑在整个脚本中引用您的变量扩展,就像我上面所做的那样。如果您使用包含空格的文件或目录名称,这一点尤其重要。