D0cEvil

Pashutik - Backup расово верный скрипт

Sep 19th, 2022
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.96 KB | Software | 0 0
  1. #!/bin/bash
  2.  
  3. d=`date +%Y-%m-%d`
  4. t=`date +%H-%M-%S`
  5. backup_name=$HOSTNAME-$d-$t
  6. log=/home/$backup_name.log
  7. log_dir=
  8. backup_dir=
  9. password=
  10. data_server_ip=
  11. data_server_user=
  12. backup_server=
  13.  
  14. # создание инкрементного бекапа
  15. backup_create () {
  16.     tar -cpf /home/$backup_name.tar /var/www;
  17.         if [[ $? -ne 1 ]];
  18.             then
  19.                 echo "$d - $t - create backup_name = true" >> $log;
  20.             else
  21.                 echo "$d - $t - create backup_name = false" >> $log;
  22.         fi;
  23. }
  24.  
  25. # добавление конфигов nginx и apache2 в бекап если они нужны
  26. backup_for_config () {
  27.     for programm in nginx apache2;
  28.         do
  29.             dpkg -l | grep $programm;
  30.                 if [[ $? -ne 0 ]];
  31.                     then
  32.                         tar -rpf /home/$backup_name.tar /etc/$programm/sites-available /etc/$programm/sites-enabled;
  33.                             if [[ $? -ne 1 ]];
  34.                                 then
  35.                                     echo "$d - $t - $programm backup = true" >> $log;
  36.                                 else
  37.                                     echo "$d - $t - $programm backup = false" >> $log;
  38.                             fi;
  39.                 fi;
  40.         done;
  41. }
  42.  
  43. # создание дампа баз данных
  44. database_dump () {
  45.     for programm in mysql postgresql;
  46.         do
  47.             dpkg -l | grep $programm;
  48.                 if [[ $? -eq mysql ]];
  49.                     then
  50.                         mysqldump -u root -p$i --all-databases > $backup_name.sql;
  51.                             if [[ $? -ne 1 ]];
  52.                                 then
  53.                                     echo "$d - $t - create mysql database dump = true" >> $log;
  54.                                 else
  55.                                     echo "$d - $t - create mysql database dump = false" >> $log;
  56.                             fi;
  57.                     elif [[ $? -eq postgresql ]];
  58.                         then
  59.                             sudo -u postgres pg_dumpall > /home/backup_name.sql
  60.                                 if [[ $? -ne 1 ]];
  61.                                     then
  62.                                         echo "$d - $t - create postgresql database dump = true" >> $log;
  63.                                     else
  64.                                         echo "$d - $t - create postgresql database dump = false" >> $log;
  65.                                 fi;
  66.                     fi;
  67.                 fi;
  68.         done;
  69. }
  70.  
  71. # добавление баз данных в архив
  72. add__dump_database_to_tar () {
  73.     tar -rpf /home/$backup_name.tar /home/$backup_name.sql;
  74.         if [[ $? -ne 1 ]];
  75.             then
  76.                 echo "$d - $t - add database dump to tar = true" >> $log;
  77.             else
  78.                 echo "$d - $t - add database dump to tar = false" >> $log;
  79.         fi;
  80. }
  81.  
  82. # сжатие архива
  83. create_gzip () {
  84.     gzip -9 /home/$backup_name.tar.gz
  85.         if [[ $? -ne 1 ]];
  86.             then
  87.                 echo "$d - $t - gzip compression = true" >> $log;
  88.             else
  89.                 echo "$d - $t - gzip compression = false" >> $log;
  90.         fi;
  91. }
  92.  
  93. # копирование бекапа с удаленного сервра в хранилище
  94. copy_backup () {
  95.     rsync -azh /home/$backup_name.tar "${data_server_user}"@"${data_server_ip}":$backup_dir;
  96.         if [[ $? -ne 1 ]];
  97.             then
  98.                 echo "$d - $t - copy backup = true" >> $log;
  99.             else
  100.                 echo "$d - $t - copy backup = false" >> $log;
  101.         fi;
  102. }
  103.  
  104. # копирование лог файла с удаленного сервра на сервер бекапов
  105. copy_log () {
  106.     rsync -azh $log root@"${backup_server}":$log_dir;
  107. }
  108.  
  109. # удаление оригинального файла бекапа с удаленного сервра
  110. del_origin_backup () {
  111.     rm -rf /home/$backup_name.tar;
  112. }
  113.  
  114. # удаление оригинального файла дампа базы данных с удаленного сервера
  115. del_origin_dump () {
  116.     rm -rf /home/$backup_name.sql;
  117. }
  118.  
  119. # удаление оригинального лога с удаленного сервера
  120. del_origin_log () {
  121.     rm -rf /home/$backup_name.log;
  122. }
  123.  
  124. # структура скрипта
  125. script_body () {
  126.     echo "---------------------------------" >> $log;
  127.     echo "--------------BEGIN--------------" >> $log;
  128.     echo "---------------------------------" >> $log;
  129.     backup_create;
  130.     backup_for_config;
  131.     database_dump;
  132.     add__dump_database_to_tar;
  133.     create_gzip;
  134.     copy_backup;
  135.     echo "---------------------------------" >> $log;
  136.     echo "---------------END---------------" >> $log;
  137.     echo "---------------------------------" >> $log;
  138.     copy_log;
  139.     del_origin_backup;
  140.     del_origin_dump;
  141.     del_origin_log;
  142. }
  143.  
  144. script_body
  145.  
  146. exit
Add Comment
Please, Sign In to add comment