56 lines
2.5 KiB
Makefile
56 lines
2.5 KiB
Makefile
#### @martysama0134 backup scripts ####
|
|
### Inside /etc/crontab paste:
|
|
## for automatic backups every hour:
|
|
# 0 * * * * root make -C /home/serverfiles/baks/db dump
|
|
## for automatic clean of backups older than 7 days every week:
|
|
# 0 0 * * 1 root make -C /home/serverfiles/baks/db wclean
|
|
|
|
DATE != date +%Y%m%d-%H%M%S
|
|
|
|
MY_HOST = localhost
|
|
MY_USER = root
|
|
MY_PASS = your_password
|
|
MY_LOGF = log.txt
|
|
PREFIX = srv1_
|
|
OUTPATH = .
|
|
|
|
all:
|
|
@echo "available all, dump, recovery, clean, lclean, wclean, cleanall"
|
|
@echo "TEST: -u $(MY_USER) -p$(MY_PASS) -h $(MY_HOST) > $(PREFIX)$(DATE).sql"
|
|
|
|
dump:
|
|
@echo "### dump begin $(DATE)" >> $(MY_LOGF)
|
|
@mkdir $(DATE)/
|
|
@/usr/local/bin/mysqldump -u $(MY_USER) -p$(MY_PASS) -h $(MY_HOST) $(PREFIX)account | gzip -9 > $(OUTPATH)/$(DATE)/$(PREFIX)account.sql.gz 2>> $(MY_LOGF)
|
|
@/usr/local/bin/mysqldump -u $(MY_USER) -p$(MY_PASS) -h $(MY_HOST) $(PREFIX)common | gzip -9 > $(OUTPATH)/$(DATE)/$(PREFIX)common.sql.gz 2>> $(MY_LOGF)
|
|
@/usr/local/bin/mysqldump -u $(MY_USER) -p$(MY_PASS) -h $(MY_HOST) $(PREFIX)player | gzip -9 > $(OUTPATH)/$(DATE)/$(PREFIX)player.sql.gz 2>> $(MY_LOGF)
|
|
@/usr/local/bin/mysqldump --no-data -u $(MY_USER) -p$(MY_PASS) -h $(MY_HOST) $(PREFIX)log | gzip -9 > $(OUTPATH)/$(DATE)/$(PREFIX)log.sql.gz 2>> $(MY_LOGF)
|
|
@/usr/local/bin/mysqldump -u $(MY_USER) -p$(MY_PASS) -h $(MY_HOST) mysql | gzip -9 > $(OUTPATH)/$(DATE)/mysql.sql.gz 2>> $(MY_LOGF)
|
|
@echo "### dump end $(DATE)" >> $(MY_LOGF)
|
|
|
|
recovery:
|
|
@echo "### recovery begin $(DATE)" >> $(MY_LOGF)
|
|
@gunzip < mysql.sql.gz | mysql -u $(MY_USER) -p$(MY_PASS) -h $(MY_HOST) mysql 2>> $(MY_LOGF)
|
|
@gunzip < $(PREFIX)account.sql.gz | mysql -u $(MY_USER) -p$(MY_PASS) -h $(MY_HOST) $(PREFIX)account 2>> $(MY_LOGF)
|
|
@gunzip < $(PREFIX)common.sql.gz | mysql -u $(MY_USER) -p$(MY_PASS) -h $(MY_HOST) $(PREFIX)common 2>> $(MY_LOGF)
|
|
@gunzip < $(PREFIX)player.sql.gz | mysql -u $(MY_USER) -p$(MY_PASS) -h $(MY_HOST) $(PREFIX)player 2>> $(MY_LOGF)
|
|
@gunzip < $(PREFIX)log.sql.gz | mysql -u $(MY_USER) -p$(MY_PASS) -h $(MY_HOST) $(PREFIX)log 2>> $(MY_LOGF)
|
|
@echo "### recovery end $(DATE)" >> $(MY_LOGF)
|
|
|
|
clean:
|
|
@find $(OUTPATH) ! -name Makefile ! -name $(OUTPATH) -exec rm -rf {} +
|
|
|
|
lclean:
|
|
@cat /dev/null > $(MY_LOGF)
|
|
|
|
wclean:
|
|
@echo "### clean week begin $(DATE)" >> $(MY_LOGF)
|
|
@find $(OUTPATH) ! -name Makefile ! -name $(OUTPATH) -type d -mtime +7 -print -exec rm -rf {} + >> $(MY_LOGF)
|
|
@echo "### clean week end $(DATE)" >> $(MY_LOGF)
|
|
|
|
cleanall: clean lclean
|
|
@echo "### clean all done $(DATE)" >> $(MY_LOGF)
|
|
|
|
|
|
|