Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # Script pentru backup remote prin ftp
- # Dependente: mysql,mysqldump,gzip,curlftpfs
- #
- # Autor: Alex Duzsardi alex[dot]duzsardi[at]pitechplus[dot]com
- # www.pitechplus.com
- # ---------------------------------------------------------------------
- ### Variabile si configuratii ###
- ### MySQL ###
- MUSER="root"
- MPASS="<MYSQL PASSWD>"
- MHOST="localhost"
- MYSQL="$(which mysql)"
- MYSQLDUMP="$(which mysqldump)"
- GZIP="$(which gzip)"
- DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases' | grep -Ev 'schema|mysql')"
- ### FTP ###
- LFTPDIR=/srv/ftpbackup
- RFTPDIR="<FTP DIR>"
- FTPU="<FTP USER>"
- FTPP="<FTP PASSWD>"
- FTPS="<FTP SERVER>"
- NCFTP="$(which ncftpput)"
- ### Mail ###
- EMAILADDR="<ADMIN EMAIL>"
- MSG=/tmp/msg.txt
- SUBJ=''
- ### Altele ###
- DIRS="/etc/ /var/www/sites/"
- NOW=$(date +"%d-%m-%Y")
- BACKUP=/tmp/backup.$$
- RMDATE=$(date +"%d-%m-%Y" -d '6 days ago')
- RMBACKUP="${LFTPDIR}/backup/${RMDATE}"
- _sendMail(){
- mail -s "$SUBJ" -r "Name <noreply@domain.com>" "$EMAILADDR" <$MSG
- }
- _makeBackupFS(){
- [ ! -d $BACKUP ] && mkdir -p $BACKUP || :
- d=$(date +"%Hh%Mm%Ss")
- FILE="fs-$NOW-$d.tar.gz"
- tar -zcvf $BACKUP/$FILE $DIRS
- if [ "$?" != "0" ]; then
- SUBJ="Backup failed"
- echo "Date: $(date)">$MSG
- echo "Hostname: $(hostname)" >>$MSG
- echo "Backing up filesystem directories failed: $DIRS" >>$MSG
- _sendMail
- rm -f $MSG
- [ -d $BACKUP ] && rm -r $BACKUP || :
- fi
- }
- _makeBackupSQL(){
- for db in $DBS
- do
- FILE=$BACKUP/mysql-$db.$NOW-$d.gz
- $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
- done
- if [ "$?" != "0" ]; then
- SUBJ="Backup MySQL failed"
- echo "Date: $(date)">$MSG
- echo "Hostname: $(hostname)" >>$MSG
- echo "Backing up MySQL databases failed: $DBS" >>$MSG
- _sendMail
- rm -f $MSG
- fi
- }
- _makeFtpUpload(){
- ncftp -u"$FTPU" -p"$FTPP" $FTPS<<EOF
- mkdir $RFTPDIR/$NOW
- cd $RFTPDIR/$NOW
- lcd $BACKUP
- mput *
- cd $RFTPDIR
- quit
- EOF
- rm -r $BACKUP
- }
- _cleanOldBackup(){
- curlftpfs ftp://$FTPU:$FTPP@$FTPS $LFTPDIR
- if [ "$?" != "0" ]; then
- SUBJ="Mount FTP dir failed"
- echo "Date: $(date)">$MSG
- echo "Hostname: $(hostname)" >>$MSG
- echo "Could not mount ftp://$FTPU:$FTPP@$FTPS in $LFTPDIR" >>$MSG
- _sendMail
- rm -f $MSG
- else
- [ -d $RMBACKUP ] && rm -r $RMBACKUP || :
- umount $LFTPDIR
- fi
- }
- # Run functions
- _makeBackupFS
- _makeBackupSQL
- _makeFtpUpload
- _cleanOldBackup
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement