Здравей, това са едни скриптове, които преди доста време бях намерил някъде, но за съжаление не се сещам източника. Мисля, че нещо бях правил по тях.. но вече не си спомням. За моите нужди вършеха работа, но ще трябва да си организираш качването на ftp (което не препоръчвам). Все пак си тествай дали всичко работи както трябва, тъй като не мога да дам гаранция, че е перфектно
Можеш да си настроиш за колко дни назад да ти пази архивите, но при всички положения препоръчвам да разгледаш опцията да си свършиш работата с rsnapshot
За архивиране на директорииGeSHi (Bash):
#!/bin/bash
# Target directory which we will backup
TARGET="/var/www"
# How long will backup files will be kept
KEEPBKP=5
TAR="$(which tar)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
# Gets time
NOW="$(date +"%Y%m%d")"
# Destination folder
DEST="/backup/www"
# Main directory for backup
MBD="$DEST/$NOW"
[ ! -d $MBD ] && mkdir -p $MBD || :
# Only root can access it!
$CHOWN 1000.1000 -R $DEST
$CHMOD 0600 $DEST
# Gets a list of all subdirectories of DESTINATION dir
DIR="$(ls $DEST)"
for subdir in $DIR
do
SUBDIRDATE="$(date --date=$subdir +"%Y%m%d")"
let "DATEDIFF=$NOW-$SUBDIRDATE"
if [ $DATEDIFF -gt $KEEPBKP ]
then
echo $subdir " is going to be deleted!"
rm -rf $DEST/$subdir
fi
done
# Gets a list of all subdirectories of TARGET dir
DIR="$(ls $TARGET)"
for subdir in $DIR
do
tar -zcvf $MBD/$subdir.$NOW.tar.gz $TARGET/$subdir
done
За архивиране на MySQL бази данниGeSHi (Bash):
#!/bin/bash
MyUSER="root" # MySQL admin
MyPASS="PASSWORD" # MySQL admin pass
MyHOST="localhost" # MySQL hostname
# Linux bin paths, change this if it can not be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"
# How long a backup file will be kept
KEEPBKP=5
# Get date
NOW="$(date +"%Y%m%d")"
# Backup Destination directory, change this to suit your preferred location
DEST="/backup/mysql"
# Main directory where backup will be stored
MBD="$DEST/$NOW"
# Get hostname
HOST="$(hostname)"
# File to store current backup file
FILE=""
# Store list of databases
DBS=""
# DO NOT BACKUP these databases
IGGY="information_schema"
[ ! -d $MBD ] && mkdir -p $MBD || :
# Only root can access it!
$CHOWN 1000.1000 -R $DEST
$CHMOD 0600 $DEST
# Gets a list of all subdirectories of DESTINATION dir
DIR="$(ls $DEST)"
for subdir in $DIR
do
SUBDIRDATE="$(date --date=$subdir +"%Y%m%d")"
let "DATEDIFF=$NOW-$SUBDIRDATE"
if [ $DATEDIFF -gt $KEEPBKP ]
then
echo $subdir " is going to be deleted!"
rm -rf $DEST/$subdir
fi
done
# Get all databases list first
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
for db in $DBS
do
skipdb=-1
if [ "$IGGY" != "" ];
then
for i in $IGGY
do
[ "$db" == "$i" ] && skipdb=1 || :
done
fi
if [ "$skipdb" == "-1" ];
then
FILE="$MBD/$db.$HOST.$NOW.sql.gz"
# do all in one job in pipe,
# connect to mysql using mysqldump for select mysql database
# and pipe it out to gz file in backup dir :)
$MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
fi
done