Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
linux_faq:wiki_backup [2019/04/22 10:11] – admin | linux_faq:wiki_backup [2023/11/24 11:15] (current) – [Бекап на удаленный ftp] admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Бекап на удаленный ftp ====== | ||
+ | Скрипт для бекапа сайта на удаленный сервер по **FTP**. \\ | ||
+ | Скрипт бекапит всю рабочую директорию пофайлово (для того, чтобы сайт сразу после бекапа был доступен ан резервной площадке - бесплатного хостера), | ||
+ | Скрипт проверяет, | ||
+ | < | ||
+ | #!/bin/bash | ||
+ | dir_to_backup=/ | ||
+ | backup_name_prefix=wiki | ||
+ | ftpserver=ftp.server.com | ||
+ | username=ftp_login | ||
+ | password=ftp_pass | ||
+ | currentdate=$(date +%d-%m-%Y_%H_%M) | ||
+ | remote_www_dir=/ | ||
+ | backup_depth_days=10 | ||
+ | encryption_password=enc_pass | ||
+ | tmp_dir=/ | ||
+ | tmp_arc_dir=$tmp_dir/ | ||
+ | |||
+ | #Get list of directories with full encrypted backups | ||
+ | dirs=`echo "lftp -e 'set ssl: | ||
+ | dirs=(${dirs// | ||
+ | #check number of directories and delete oldest | ||
+ | if [[ ${#dirs[@]} -gt $backup_depth_days ]]; then | ||
+ | for ((i = $backup_depth_days; | ||
+ | { | ||
+ | echo "lftp -e 'set ssl: | ||
+ | } | ||
+ | fi | ||
+ | |||
+ | #Create tmp folder | ||
+ | mkdir --parents $tmp_arc_dir | ||
+ | #Disable URL rewrites | ||
+ | sed -i '/ | ||
+ | #Make ENCRYPTED archive | ||
+ | tar -cpf - --use-compress-program=pigz $dir_to_backup | openssl enc -aes-192-cbc -pass pass: | ||
+ | #Enable URL rewrites | ||
+ | sed -i '/ | ||
+ | #Split archive to small parts | ||
+ | cd $tmp_arc_dir | ||
+ | split -d -a 3 -b 8000000 ./ | ||
+ | #Calculate md5 checksum | ||
+ | md5sum $tmp_arc_dir/ | ||
+ | rm -f $tmp_arc_dir/ | ||
+ | #Put archive parts to remote ftp and remove tmp dir | ||
+ | echo "lftp -e 'set ssl: | ||
+ | rm -Rf $tmp_arc_dir | ||
+ | |||
+ | #Mirror current site to remote server | ||
+ | echo "lftp -e 'set ssl: | ||
+ | #Disable URL rewrites | ||
+ | sed -i '/ | ||
+ | #replace remote conf.php with disabled rewrites | ||
+ | echo "lftp -e 'set ssl: | ||
+ | #Enable URL rewrites | ||
+ | sed -i '/ | ||
+ | </ | ||
+ | |||
+ | ====== Восстановление из текущей живой копии у внешнего хостера====== | ||
+ | < | ||
+ | #!/bin/bash | ||
+ | backup_name_prefix=wiki | ||
+ | ftpserver=ftp.unaux.com | ||
+ | username=unaux_user | ||
+ | password=superpassword | ||
+ | remote_www_dir=/ | ||
+ | encryption_password=superencryptionpassword | ||
+ | |||
+ | echo "lftp -e 'set ssl: | ||
+ | </ | ||
+ | |||
+ | ====== Восстановлние из полного шифрованного архива ====== | ||
+ | < | ||
+ | backup_name_prefix=wiki | ||
+ | ftpserver=ftp.unaux.com | ||
+ | username=unaux_user | ||
+ | password=superpassword | ||
+ | remote_www_dir=/ | ||
+ | encryption_password=superencryptionpassword | ||
+ | |||
+ | restore_dir=~/ | ||
+ | |||
+ | dirs=`echo "lftp -e 'set ssl: | ||
+ | dirs=(${dirs// | ||
+ | latest_backup_dir=${dirs[0]} | ||
+ | |||
+ | mkdir -p $restore_dir | ||
+ | echo "lftp -e 'set ssl: | ||
+ | |||
+ | archive_filename=`ls $restore_dir/ | ||
+ | cat $restore_dir/ | ||
+ | |||
+ | openssl enc -in $archive_filename -d -aes-192-cbc -pass pass: | ||
+ | </ |