[php, mysql en sh] Backup externe website

Pagina: 1
Acties:

  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
Heb een stukkie code geschreven voor het backuppen van een website met alleen ftp en http toegang inclusief een mysql database op een linuxbak.

Wat heb je nodig op je linuxbak:
-Lynx
-lftp

Eerst eens stukkie php dat je op de externe website moet plaatsen om de database te backuppen (dump.php in mijn geval):
PHP:
1
<?    $dbhost = "localhost";    $dbuser = "username";    $dbpass = "passwd";    $dbname = "databasename";    $systemrun = "mysqldump -h$dbhost -u$dbuser -p$dbpass --opt $dbname";    if($checkpw == $dbpass){            system("$systemrun");    } else {            echo "error";    }?>

Nu kan je de dump van je database uitlezen (als je het uiste passwd mee geeft als parameter).

Dan het stukje code voor op je linux bak:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/sh
ftpserver=""
ftpuser=""
ftppasswd=""
ftpdirtocopy=""
dumpurl="" #url naar dump.php
sqlpasswd="" #passwd van mysqldatabase

if [ /tmp/webbackup/ ]; then
 rm /tmp/webbackup/*
 rmdir /tmp/webbackup/
fi

mkdir /tmp/webbackup/

cd /tmp/webbackup/
(
echo "open $ftpserver"
echo "user $ftpuser $ftppasswd"
echo ""
echo "mirror $ftpdirtocopy"
echo "quit"
) | lftp

cd /tmp/webbackup/
tar cf - / | gzip > web.tar.gz
rm -rf /

lynx -dump $dumpurl?checkpw=$sqlpasswd | gzip > /tmp/webbackup/sql.gz

day=`/usr/bin/date +%A`
month=`/usr/bin/date +%B`
cd /tmp/webbackup/
tar cf - web.tar.gz sql.gz | gzip > $day.tar.gz
rm web.tar.gz
rm sql.gz
cp $day.tar.gz /home/backup/month/$month.tar.gz
mv $day.tar.gz /home/backup/

touch /tmp/webbackup/done

nog even /home/backup/month/ aanmaken. Code in een cronjob stoppen en klaar.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

wget --mirror

is denk ik nog ietje makkelijker :)
Maar verder wel geinig :)

  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
met wget kreeg ik het probleem dat ik in een bepaalde dir binnen kwam (/home/dgljk/ ofzo) en ik moest iets hebben uit /private/web/ (ofzo).. en dat lukte met niet met wget. vandaar.

Verwijderd

Als je het script chmod naar 0700 en als user nobody:root gebruikt, zou het dan in principe veilig genoeg zijn om het password er plain text in te zetten (gesteld dat de gebruiker nobody niet in kan loggen) :?

  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
Oh ja, was ik ff vergeten te vermelden. Ik heb hem zelf staan in de sbin dir.