Бэкап WordPress

Бэкап базы данных этого блога я делал регулярно с помощью WP-DB-Backup, однако с версией WordPress 2.9.2 он как-то не заработал, поэтому был выбран альтернативный вариант в виде WP-DB-Manager.
Что касается бэкапа файлов, то его делал руками и эпизодически, что не есть хорошо.
Сегодня решил проблему бэкапов кардинально. За основу был взят скрипт Гая Рутенберга и немножко, ну совсем самую малость допилен :) Для аплода бэкапов базы данных и файловой структуры автор использовал lftp, коего на сервере не оказалось, поэтому использовал обычный ftp.

Оригинальный скрипт лежит тут.

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/sh
# Copyright 2008, 2010 Guy Rutenberg <http://www.guyrutenberg.com/contact-me>
# Modified a little bit by Antipod.
 
BLOG_DIR=/path/to/blog/directory/
BACKUP_DIR=/path/to/backups/directory/
 
#fetching db settings from wp-config.php
DB_NAME=`echo "<?php require_once(\"${BLOG_DIR}/wp-config.php\"); echo DB_NAME;" | php`
DB_USER=`echo "<?php require_once(\"${BLOG_DIR}/wp-config.php\"); echo DB_USER;" | php`
DB_PASS=`echo "<?php require_once(\"${BLOG_DIR}/wp-config.php\"); echo DB_PASSWORD;" | php`
DB_HOST=`echo "<?php require_once(\"${BLOG_DIR}/wp-config.php\"); echo DB_HOST;" | php`
 
#ftp server to save backups
FTP_HOST=host
FTP_USER=username
FTP_PASS=password
#if u don't want to save backups in root catalog then u probably want to edit this line. 
#Note: path must be surrounded by '/'
FTP_BACKUP_DIR=/
 
# end of configuration - you probably don't need to touch anything bellow
BLOG_DIR=`dirname "$BLOG_DIR"`/`basename "$BLOG_DIR"`
BACKUP_DIR=`dirname "$BACKUP_DIR"`/`basename "$BACKUP_DIR"`
 
echo -n "Dumping database... "
DUMP_NAME=${DB_NAME}-$(date +%Y%m%d).sql.bz2
mysqldump --user=${DB_USER} --password=${DB_PASS} --host=${DB_HOST} \
 --databases ${DB_NAME} \
 | bzip2 -c > ${BACKUP_DIR}/${DUMP_NAME}
if [ "$?" -ne "0" ]; then
	echo "failed!"
	exit 1
fi
echo "done"
 
echo -n "Creating tarball... "
TAR_NAME=${BLOG_DIR##*/}-$(date +%Y%m%d).tar.bz2
tar -cjf ${BACKUP_DIR}/${BLOG_DIR##*/}-$(date +%Y%m%d).tar.bz2 ${BLOG_DIR}
if [ "$?" -ne "0" ]; then
	echo "failed!"
	exit 2
fi
echo "done"
 
echo -n "Uploading SQL dump and tarball to FTP... "
ftp ftp://${FTP_USER}:${FTP_PASS}@${FTP_HOST}/ <<EOF
cd ${FTP_BACKUP_DIR}
put ${BACKUP_DIR}/${DUMP_NAME} /${DUMP_NAME}
put ${BACKUP_DIR}/${TAR_NAME} /${TAR_NAME}
 
EOF
if [ "$?" -ne "0" ]; then
	echo "failed!"
	exit 3
fi
echo "done"

5 thoughts on “Бэкап WordPress

  1. Pingback: Vernon
  2. Pingback: Clifton
  3. Pingback: Harold
  4. Pingback: christopher

Leave a Comment