Difference between revisions of "Backup scripts"

From RHS Wiki
Jump to navigation Jump to search
(Created page with "== Wikimedia == <nowiki> #!/bin/bash FNAME=`date +%Y-%m-%d` mysqldump --database DATABASE_NAME -u USERNAME -pPASSWORD --add-drop-table -B > ${FNAME}.sql zip -r ./backup/${FNA...")
 
Tag: visualeditor
 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Wikimedia ==
+
=HD dd=
  <nowiki>
+
<source lang="bash">#!/bin/bash
 +
USAGE="./$(basename ${0}) UUID output_filename"
 +
 
 +
if [ -z "${1}" ]; then
 +
    echo ${USAGE}
 +
    exit
 +
fi
 +
if [ -z "${2}" ]; then
 +
    echo ${USAGE}
 +
    exit
 +
fi
 +
 
 +
 
 +
BACKUP_ROOT=/mnt/backup
 +
HD=$(blkid|grep $1|awk -F : '{print $1}')
 +
 
 +
ISO=${BACKUP_ROOT}/$(hostname)/$(date '+%Y/%m')/$2.iso
 +
 
 +
echo "dd if=${HD} of=${ISO} bs=1M"
 +
dd if=${HD} of=${ISO} bs=1M</source>
 +
 
 +
=MediaWiki=
 +
 
 +
== With database dump ==
 +
First add the following line to LocalSetings.php
 +
  <nowiki>$wgReadOnly = 'Dumping Database, Access will be restored shortly';</nowiki>
 +
Delete this line after the backup.<br />
 +
The script should be in the MediaWiki installation (where your [[LocalSettings.php]] is stored as well).
 +
 
 +
==mediawiki_mysql_backup.sh==
 +
<source lang="bash">
 
#!/bin/bash
 
#!/bin/bash
FNAME=`date +%Y-%m-%d`
+
FNAME=TS=RHSWiki`date +%d-%m-%Y`
 
mysqldump --database DATABASE_NAME -u USERNAME -pPASSWORD --add-drop-table -B > ${FNAME}.sql
 
mysqldump --database DATABASE_NAME -u USERNAME -pPASSWORD --add-drop-table -B > ${FNAME}.sql
 
zip -r ./backup/${FNAME}.zip images/ ${FNAME}.sql LocalSettings.php extensions/
 
zip -r ./backup/${FNAME}.zip images/ ${FNAME}.sql LocalSettings.php extensions/
 
rm ${FNAME}.sql
 
rm ${FNAME}.sql
  </nowiki>
+
  </source>
 +
Bonus (not required):
 +
<source lang="bash">
 +
# careful here .. if this fails you'll delete files from the current directory instead.
 +
# Some checking might be in order, especially if you run this script from somewhere else
 +
cd backup
 +
 +
#Count files in directory (hidden files (filename starts with a dot) are ignored)
 +
file_count=`ls | wc -l`
 +
 +
#Do until there are more than or equal 6 files present
 +
while [ $file_count -ge 6 ]
 +
do
 +
        #you can save deleted filenames in variable (e.g. for deleting files also in backup directory)
 +
        #not recommended for filenames with space(s)
 +
        del_files="${del_files} `ls | head -n 1`"
 +
#Delete alphabetically oldest file (ls sort by name is default)
 +
rm `ls | head -n 1`
 +
#Count files again
 +
file_count=`ls | wc -l`
 +
done
 +
</source>
 +
 
 +
== With automysqlbackup ==
 +
<syntaxhighlight lang="bash">
 +
#!/bin/bash
 +
DATE=$(date  +"%Y-%d-%m")
 +
/usr/sbin/automysqlbackup
 +
rsync -avp /var/lib/automysqlbackup/daily/wikidb /root/wikibackup/tmp/
 +
rsync -avLp /var/www/mediawiki /root/wikibackup/tmp/
 +
cd /root/wikibackup/tmp/
 +
tar -czvf "/root/wikibackup/wikibackup-${DATE}.tar.gz" *
 +
mv "/root/wikibackup/wikibackup-${DATE}.tar.gz" /tmp/
 +
 
 +
</syntaxhighlight>[http://www.mediawiki.org/wiki/User:Flominator/Backup_MW Source]
 +
<br />

Latest revision as of 15:04, 10 April 2019

HD dd

#!/bin/bash
USAGE="./$(basename ${0}) UUID output_filename"

if [ -z "${1}" ]; then
    echo ${USAGE}
    exit
fi
if [ -z "${2}" ]; then
    echo ${USAGE}
    exit
fi


BACKUP_ROOT=/mnt/backup
HD=$(blkid|grep $1|awk -F : '{print $1}')

ISO=${BACKUP_ROOT}/$(hostname)/$(date '+%Y/%m')/$2.iso

echo "dd if=${HD} of=${ISO} bs=1M"
dd if=${HD} of=${ISO} bs=1M

MediaWiki

With database dump

First add the following line to LocalSetings.php

$wgReadOnly = 'Dumping Database, Access will be restored shortly';

Delete this line after the backup.
The script should be in the MediaWiki installation (where your LocalSettings.php is stored as well).

mediawiki_mysql_backup.sh

#!/bin/bash
FNAME=TS=RHSWiki`date +%d-%m-%Y`
mysqldump --database DATABASE_NAME -u USERNAME -pPASSWORD --add-drop-table -B > ${FNAME}.sql
zip -r ./backup/${FNAME}.zip images/ ${FNAME}.sql LocalSettings.php extensions/
rm ${FNAME}.sql

Bonus (not required):

# careful here .. if this fails you'll delete files from the current directory instead.
# Some checking might be in order, especially if you run this script from somewhere else
cd backup
 
#Count files in directory (hidden files (filename starts with a dot) are ignored) 
file_count=`ls | wc -l` 
 
#Do until there are more than or equal 6 files present
while [ $file_count -ge 6 ]
do
        #you can save deleted filenames in variable (e.g. for deleting files also in backup directory)
        #not recommended for filenames with space(s)
        del_files="${del_files} `ls | head -n 1`"
	#Delete alphabetically oldest file (ls sort by name is default)
	rm `ls | head -n 1` 
	#Count files again
	file_count=`ls | wc -l`
done

With automysqlbackup

#!/bin/bash
DATE=$(date  +"%Y-%d-%m")
/usr/sbin/automysqlbackup
rsync -avp /var/lib/automysqlbackup/daily/wikidb /root/wikibackup/tmp/
rsync -avLp /var/www/mediawiki /root/wikibackup/tmp/
cd /root/wikibackup/tmp/
tar -czvf "/root/wikibackup/wikibackup-${DATE}.tar.gz" *
mv "/root/wikibackup/wikibackup-${DATE}.tar.gz" /tmp/

Source