Jump to content
  • 0

[ask] Autobackup MySQL Question


Question

Posted

i have autobackup from sir Brian.

#!/bin/bash

dbhost='localhost'
dbuser='ragnarok'
dbpass='ragnarok'
dbname='ragnarok'
savepath=$(dirname $0) # OR something like '/root/backup'

date=`date +%Y-%m-%d_%H%M`
month=`date +%Y-%m`
filename="$savepath/$month/"$dbname"_"$date".sql"

if [[ ! -d "$savepath/$month" ]]; then
	mkdir -p "$savepath/$month"
	chmod 700 "$savepath/$month"
fi

mysqldump --opt --host=$dbhost --user=$dbuser --password=$dbpass $dbname > $filename
chmod 400 $filename


how to auto delete my backup if date > 3 days.

i'm blind to modify this backup script

sorry for my bad english >.<

 

3 answers to this question

Recommended Posts

Posted

This should work ;) 

#!/bin/bash

dbhost='localhost'
dbuser='ragnarok'
dbpass='ragnarok'
dbname='ragnarok'
savepath=$(dirname $0) # OR something like '/root/backup'
duration=3 # value in days


date=$(date +%Y-%m-%d_%H%M)
date_old=$(date +%Y-%m-%d_%H%M --date="${duration} days ago")

month=$(date +%Y-%m)
month_old=$(date +%Y-%m --date="${duration} days ago" )

filename=${savepath}"/"${month}"/"${dbname}"_"${date}".sql"
filename_old=${savepath}"/"${month_old}"/"${dbname}"_"${date_old}".sql"

if [[ ! -d "$savepath/$month" ]]; then
	mkdir -p "$savepath/$month"
	chmod 700 "$savepath/$month"
fi

mysqldump --opt --host=$dbhost --user=$dbuser --password=$dbpass $dbname > $filename
chmod 400 $filename

# removing files older than [duration] days based on filename
if [[ -f "${filename_old}" ]]; then
	rm -f "${filename_old}"
fi

# clean empty folders
if [ ! "$(ls -A ${savepath}{month_old})" ]; then
	rm -rf "${savepath}{month_old}"
fi

exit 0

 

Posted

 

This should work ;)

#!/bin/bash

dbhost='localhost'
dbuser='ragnarok'
dbpass='ragnarok'
dbname='ragnarok'
savepath=$(dirname $0) # OR something like '/root/backup'
duration=3 # value in days


date=$(date +%Y-%m-%d_%H%M)
date_old=$(date +%Y-%m-%d_%H%M --date="${duration} days ago")

month=$(date +%Y-%m)
month_old=$(date +%Y-%m --date="${duration} days ago" )

filename=${savepath}"/"${month}"/"${dbname}"_"${date}".sql"
filename_old=${savepath}"/"${month_old}"/"${dbname}"_"${date_old}".sql"

if [[ ! -d "$savepath/$month" ]]; then
	mkdir -p "$savepath/$month"
	chmod 700 "$savepath/$month"
fi

mysqldump --opt --host=$dbhost --user=$dbuser --password=$dbpass $dbname > $filename
chmod 400 $filename

# removing files older than [duration] days based on filename
if [[ -f "${filename_old}" ]]; then
	rm -f "${filename_old}"
fi

# clean empty folders
if [ ! "$(ls -A ${savepath}{month_old})" ]; then
	rm -rf "${savepath}{month_old}"
fi

exit 0

 

 

thank you sir ^.^

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...