Правила для бекапа mysqldump

egoryichinfo

Создатель
Регистрация
19 Мар 2010
Сообщения
43
Реакции
6
Всем привет.
Прошу прощения за такое название темы, так и не смог более правильней придумать.
Объясню ситуацию. Ubuntu 10.04.3 LTS, настроил бекап мускулу через sh
вот что внутри
Код:
#!bin/sh
/usr/bin/mysqldump -uroot -ppass nazvbazi > /backup/bases/`date +%Y-%m-%d`db_web10.txt
find /backup -name "*.txt" -mtime +2 -delete
повесил на крон, каждое утро база бекапится, но правило удаления файла старше 2ух дней не срабатывает.
 
find написан правильно
попробуйте вручную посмотреть что выводит
find /backup -name "*.txt" -mtime +2
если имена файлов выводятся, то попробуйте другой вариант с логом ошибок в /backup/delOldBackups.log:
Код:
(find /backup -name "*.txt" -mtime +2 -exec rm {} \;) 2>&1 >> /backup/delOldBackups.log
 
я понял в чем косяк, при вводе команды
Код:
find /backup -name "*.txt" -mtime +1
выдает последнюю запись
а если ввести
Код:
find /backup -name "*.txt" -mtime -1
выдаст первую запись, тем самым будет удалять первый бекап
 
На днях писал похожий скрипт для своих целей. Нашел скрипт с записью на ftp, может кому пригодится
Создает полный бэкап в воскресенье и каждый следущий день инкрементальный.

Код:
#!/bin/sh
# System + MySQL backup script
# Full backup day - Sun (rest of the day do incremental backup)
# ---------------------------------------------------------------------
### System Setup ###
DIRS="/home /etc /var/www"
BACKUP=/tmp/backup.$$
NOW=$(date +"%d-%m-%Y")
INCFILE="/root/tar-inc-backup.dat"
DAY=$(date +"%a")
FULLBACKUP="Sun"
### MySQL Setup ###
MUSER="admin"
MPASS="mysqladminpassword"
MHOST="localhost"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
### FTP server Setup ###
FTPD="/home/vivek/incremental"
FTPU="vivek"
FTPP="ftppassword"
FTPS="208.111.11.2"
NCFTP="$(which ncftpput)"
### Other stuff ###
EMAILID="admin@theos.in"
### Start Backup for file system ###
[ ! -d $BACKUP ] && mkdir -p $BACKUP || :
### See if we want to make a full backup ###
if [ "$DAY" == "$FULLBACKUP" ]; then
  FTPD="/home/vivek/full"
  FILE="fs-full-$NOW.tar.gz"
  tar -zcvf $BACKUP/$FILE $DIRS
else
  i=$(date +"%Hh%Mm%Ss")
  FILE="fs-i-$NOW-$i.tar.gz"
  tar -g $INCFILE -zcvf $BACKUP/$FILE $DIRS
fi
### Start MySQL Backup ###
# Get all databases name
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
FILE=$BACKUP/mysql-$db.$NOW-$(date +"%T").gz
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done
### Dump backup using FTP ###
#Start FTP backup using ncftp
ncftp -u"$FTPU" -p"$FTPP" $FTPS<<EOF
mkdir $FTPD
mkdir $FTPD/$NOW
cd $FTPD/$NOW
lcd $BACKUP
mput *
quit
EOF
### Find out if ftp backup failed or not ###
if [ "$?" == "0" ]; then
rm -f $BACKUP/*
else
T=/tmp/backup.fail
echo "Date: $(date)">$T
echo "Hostname: $(hostname)" >>$T
echo "Backup failed" >>$T
mail  -s "BACKUP FAILED" "$EMAILID" <$T
rm -f $T
fi
 
а если ввести Код: find /backup -name "*.txt" -mtime -1 выдаст первую запись, тем самым будет удалять первый бекап
не та команда, она удаляет все записи

вот эта, удаляет только то что старше N дней
Код:
find /backup/ -mtime +N -type f -delete
 
Назад
Сверху