Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
simple automated backup of apache (your websites)
#11

the lan ftp server is a windows box, its only a local ftp, no access from the outside (internet)

 

so i was hoping to modify the above script to do the following:

 

* after the backup file has been created, login to the ftp server, and check if there are any files present

 

* if the number of files present is 2 or less then start uploading the current backup

 

* if the number of files present is 3 or more, delete the oldest file, and start uploading the current backup

 

that's all i want it to do

 

help !

 

cheers

 

anyweb

Reply
#12

Hi,

 

I aint that good with shell script but heres a solution in perl :)

 

you can run it via command prompt:

 



Code:
perl -e 'use Net::FTP; $Host = "10.0.0.14"; $username = "test"; $password = "test123"; $ftp = Net::FTP->new($Host, Debug => 0) || die "Could not connect to ftp $@"; $ftp->login($username, $password) || die "Could not login" .$ftp->message; $ftp->put("Test.log", "Test.log") || die "failed to upload" . ftp->message; $ftp->quit;'




 

well thats all thats needed ;)

Reply
#13
As an alternative you can always set up a ssh connection between the two computers using ssh-keygen and then use rsync -ave ssh!
Reply
#14

ok i'm still playing with this and now i want to backup the mysql database weekly also, the exact same way as i am doing with apache.

 

the command to backup the database is executed from

 

/usr/local/mysql/bin

 

and it's

 



Code:
./mysqldump -u USER -p DATA >> forums_export.sql




 

i then have to input the root password

 

so, how can i automate this ? any ideas :)

 

cheers

 

anyweb

Reply
#15

you almost figure it out youreself :)

after the -p etner the password



Code:
./mysqldump -u USER -p password DATA >> forums_export.sql




Reply
#16

ok i've tried but its not working totally right

 

have a look at my script now

 



Code:
#!/bin/sh
/bin/tar -jcf /backup/apache_backup_`date | awk '{print $2}'`_`date | awk '{print $3}'`_`date | awk '{print $6}'`.tar.bz2 /usr/local/apache/ 1&>/dev/null 2&>/dev/null

# How many files would you like to keep?
KEEP=2
# Where are the files stored?
BACKUPDIR=./backup


# DO NOT CHANGE ANYTHING BELOW
if [ `ls -1 $BACKUPDIR|wc -l` -gt $KEEP ]; then
      i=1
      for each in `ls -1t $BACKUPDIR`; do
              if [ $i -gt $KEEP ]; then
                      rm -f $BACKUPDIR/$each
              fi
              i=`expr $i + 1`
      done
fi

#setting paths and files

#setting log path
tmp=$tmp

file=/backup/apache_backup_`date | awk '{print $2}'`_`date | awk '{print $3}'`_`date | awk '{print $6}'`.tar.bz2 >>$tmp/apachebackup.txt
space=`du -sh $file | awk '{print $1}'`
date=`date`

echo -n "" >$tmp/apachebackup.txt
echo "Hi anyweb, i am the backup tool from linux-noob.com, i got a new backup for you" >>$tmp/apachebackup.txt

echo "the new file is $file and has $space" >>$tmp/apachebackup.txt
echo "the date is $date" >>$tmp/apachebackup.txt

cat $tmp/apachebackup.txt | mail anyweb@linux-noob.com -s 'new backup'

rm -rf $tmp/apachebackup.txt

echo -e "Enjoy"

#backup mysql

./mysqldump -u USER-p PASSWORD DATABASENAME >> /backup/forums_export_`date | awk '{print $2}'`_`date | awk '{print $3}'`_`date | awk '{print $6}'`.sql




 

checking /backup i now have as follows:

 

Quote:ls -al /backuptotal 5433644

drwxr-xr-x 2 root root    4096 Feb  2 18:13 .

drwxr-xr-x  20 root root    4096 Feb  2 18:13 ..

-rw-r--r-- 1 root root 1929071275 Feb  2 18:13 apache_backup_Feb_2_2005.tar.bz2

-rw-r--r-- 1 root root 1814359745 Jan 23 05:33 apache_backup_Jan_23_2005.tar.bz2

-rw-r--r-- 1 root root 1815163094 Jan 30 05:32 apache_backup_Jan_30_2005.tar.bz2

-rw-r--r-- 1 root root          0 Feb  2 18:13 forums_export_Feb_2_2005.sql
there should only be TWO apache backups, and one forums backup. That part looks ok but the script is erroring out on me...\

the errors i get after the script is done are

 

Quote:[root@www cron.weekly]# ./apache.cronls: ./backup: No such file or directory

Enjoy

./apache.cron: line 44: ./mysqldump: No such file or directory
 

i've fixed the mysqldump error with

 

cd /usr/local/mysql/bin && ./mysqldump......

 

but i don't get the other one ?

Reply
#17

Hey, stray . in the BACKUPDIR=/backup <--

 

Slight cleaning of the script (which I like btw :))

 



Code:
#!/bin/sh

# from and to directories, and tmp directory
BUPDIR='/backup'
SRCDIR='/usr/local/apache'
TMP='/tmp'

# keep how many?
KEEP=2

# DO NOT CHANGE ANYTHING BELOW
##############################

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/mysql/bin

# current date
DATE=`date | awk '{ print $3"_"$6 }'`

# filename
FILE="${BUPDIR}/apache_backup_${DATE}.tar.bz2"

# do the backup
tar -jcf $FILE $SRCDIR >/dev/null 2>&1

if [ `ls -1 $BUPDIR | wc -l` -gt $KEEP ]; then
   i=1
   for each in `ls -1t $BUPDIR`; do
       if [ $i -gt $KEEP ]; then
           rm -f -- ${BUPDIR}/${each}
       fi
       let "i = i + 1"
   done
fi

echo "Apache backup completed. Enjoy"

## STAGE 2
# Backup mysql

mysqldump -u USER-p PASSWORD DATABASENAME >> ${BUPDIR}/forums_export.sql

echo "Forums (MySQL) backup completed. Enjoy"

## STAGE 3
# Mail the admin

cat > ${TMP}/backup.txt << EOF
Hi anyweb,

I'm the backup tool from linux-noob.com and I've got a new backup for you.

The date of the backup is ${DATE}

Apache:
The new file is ${FILE} and has `du -sh $FILE | awk '{print $1}'`

Forums:
The forums backup is now: `du -sh ${BUPDIR}/forums_export.sql | awk '{print $1}'`

Have a nice day,
:)

EOF

cat ${TMP}/backup.txt | mail anyweb@linux-noob.com -s 'New Backup'

rm -f -- ${TMP}/backup.txt




Reply
#18

thanks znx !

 

now onto my next issue, ive installed Gallery, and its working nicely, however by copying over the entire photos from 2005 to my personal website, the backup file is going to be close to 7GB in size, so what i want to do is to exclude the following path from the backup

 



Code:
/usr/local/apache/websites/.../family/gallery2/g2data/albums/2005




 

how do i EXCLUDE the above path and all files in it from the backup script i'm currently using ?

 

thanks in advance !

 

the ... is simply representing some other folders removed for clarity

Reply
#19

--exclude dirName

 

add that to the tar command

Reply
#20

thanks dude but something is seriously wrong here,

 

i've changed the script and ran it to test it, before i ran it, approx 15gb free on the hdd (if not more)

 

now its at



Code:
[root@www /]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup01-LogVol00
                   36G   27G  6.7G  81% /
/dev/hda1              99M   23M   72M  24% /boot
/dev/shm              125M     0  125M   0% /dev/shm




 

and the script isnt complete yet (started hours ago, 5 or six hours ago....)

 

here's a copy of the script, please tell me what is causing it to nosedive my server

 



Code:
#!/bin/sh

# from and to directories, and tmp directory
BUPDIR='/backup'
SRCDIR='/usr/local/apache'
TMP='/tmp'

# keep how many?
KEEP=2

# DO NOT CHANGE ANYTHING BELOW
##############################

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/mysql/bin

# current date
DATE=`date | awk '{ print $3"_"$6 }'`

# filename
FILE="${BUPDIR}/apache_backup_${DATE}.tar.bz2"

# do the backup
tar -jcf --exclude /usr/local/apache/websites/kicks-ass/personal/family/gallery2/g2data/albums/2005 $FILE $SRCDIR >/dev/null 2>&1

if [ `ls -1 $BUPDIR | wc -l` -gt $KEEP ]; then
  i=1
  for each in `ls -1t $BUPDIR`; do
   if [ $i -gt $KEEP ]; then
       rm -f -- ${BUPDIR}/${each}
   fi
   let "i = i + 1"
  done
fi

echo "Apache backup completed. Enjoy"

## STAGE 2
# Backup mysql

mysqldump -u ***** -p***** ***** >> ${BUPDIR}/forums_export_`date | awk '{print $2}'`_`date | awk '{print $3}'`_`date | awk '{print $6}'.sql

echo "Forums (MySQL) backup completed. Enjoy"

## STAGE 3
# Mail the admin

cat > ${TMP}/backup.txt << EOF
Hi anyweb,

I'm the backup tool from linux-noob.com and I've got a new backup for you.

The date of the backup is ${DATE}

Apache:
The new file is ${FILE} and has `du -sh $FILE | awk '{print $1}'`

Forums:
The forums backup is now: `du -sh ${BUPDIR}/forums_export.sql | awk '{print $1}'`

Have a nice day,
:)

EOF

cat ${TMP}/backup.txt | mail anyweb@linux-noob.com -s 'New Backup'

rm -f -- ${TMP}/backup.txt




 

help !

 

cheers

anyweb

Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)