Created
April 5, 2017 12:41
-
-
Save aduzsardi/15a9c57740d1af59df46da4ce6428099 to your computer and use it in GitHub Desktop.
FTP Backup Script bash
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 <[email protected]>" "$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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment