vi /root/backup.sh
#!/bin/sh
# prostoorgru.blogspot.com
### MySQL Connection Params ###
MYSQLU="root"
MYSQLP="hackme"
MYSQLS="localhost"
### FTP Connection params ###
FTPD="/backup/server3"
FTPU="ftp_user"
FTPP="ftp_password"
FTPS="ftp_server"
### Binaries ###
TAR="$(which tar)"
FTP="$(which ftp)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
## Time format YYYY-MM-DD_HH-II-SS ###
NOW=$(date +%Y-%m-%d_%H-%M-%S)
### Temporary backup directory ###
TMP_BACKUP_DIR=/tmp/backup$NOW
mkdir $TMP_BACKUP_DIR
### Backup itself ###
# Examples #
cd /etc && $TAR -czpf $TMP_BACKUP_DIR/my-etc-configs.tgz *
cd /home/example.com && $TAR -czpf $TMP_BACKUP_DIR/example.com.tgz --exclude=*.log --exclude=*.zip *
cd /root && $TAR -czpf $TMP_BACKUP_DIR/my-shell-scripts-from-root.tgz *.sh
### MySQL ###
DATABASES="$($MYSQL -u$MYSQLU -h $MYSQLS -p$MYSQLP -Bse 'show databases;')"
for db in $DATABASES
do
FILE=$TMP_BACKUP_DIR/$db.sql.gz
$MYSQLDUMP --add-drop-table --allow-keywords -q -c -u $MYSQLU -h $MYSQLS -p$MYSQLP $db $i | $GZIP -9 > $FILE
done
### Now collect everything into one archive ###
ARCHIVE=`hostname`_$NOW.tgz
cd $TMP_BACKUP_DIR && $TAR -czf $TMP_BACKUP_DIR/$ARCHIVE --exclude=$ARCHIVE *
### Upload to FTP ###
cd $TMP_BACKUP_DIR
$FTP -n $FTPS <<END_SCRIPT
quote USER $FTPU
quote PASS $FTPP
cd $FTPD
mput $ARCHIVE
quit
END_SCRIPT
### Clean ###
rm -rf $TMP_BACKUP_DIR
echo ""Explanation of commands in "Backup itself" section: cd %folder_to_back-up% && tar to tmp_dir/%archive_name%.tgz --exclude=%something% *pack_everything*
The last * symbol stands for 'archive everything'. If you need to back up only specific file type, pass the *.ext pattern, e.g. *.php. This will add an entry to the
crontab file telling your system to execute a backup task every 12 hours -- at 1AM and 1PM (i.e. 13:00) at top of the hour (i.e. 00 minutes):
chmod +x /root/backup.sh && echo "00 1,13 * * * sh /root/backup.sh 2>/dev/null" >> /etc/crontab
You can generate any cron schedule that specifically fits your needs.Sources:
No comments:
Post a Comment