我有一个backup
和rollback
如下:
为确保成功执行,我引入了名为BACKED_UP
的 flag ,该标志初始化为值0
。
function backup() {
# used for back up and rollback
FOLDER_DIR="xxxx";
FOLDER_BAK_DIR="xxxx-bak";
if [[ backupCondition ]]; then
printStartMsg "Start to back up the old ...";
mv ${FOLDER_DIR} "${FOLDER_BAK_DIR}";
[[ $? -eq 0 ]] && BACKED_UP=1;
printEndMsg "${GREEN_SETTER}${FOLDER_DIR} backed up to ${BOLD_SETTER}${FOLDER_BAK_DIR}${COLOR_RESET}";
fi
}
在rollback
中,我将检查BACKED_UP
标志以及备份文件夹,以确保备份存在,然后删除当前存在的文件夹。
function rollback() {
if [[ ${BACKED_UP} -gt 0 && -d ${FOLDER_BAK_DIR} ]]; then
rm -rf ${FOLDER_DIR}; # this is dangerous
printStartMsg "Rolling back now...";
mv "${FOLDER_BAK_DIR}" ${FOLDER_DIR};
printEndMsg "${GREEN_SETTER}Rolled back ${BOLD_SETTER}SUCCESSFULLY${COLOR_RESET}";
exit 0;
fi
}
危险在于:FOLDER_DIR
可能会丢失当前存在的文件夹rm -rf
,更糟糕的是备份仍未完成。
我知道有缺陷,但是否则可以在这里做什么?