Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all articles
Browse latest Browse all 514750

доработка кода - PowerShell

$
0
0
Суть вопроса в том, что сайт чуть расширился и хостинг не обрабатывает резервное копирование и отправку на яндекс диск, отменяет процесс при превышении нагрузки на процессор. Архив данных уже большой. В службе поддержки дали 2 варианта:

1. делить на части (например по 100 мб) и отправлять например с какой то задержкой по времени, чтобы не грузить хостинг.

2. Для архивирования Вы можете использовать следующую команду, которая позволит ограничить скорость архивации и снизить использование ресурсов процессора:

tar -cf - имя_директории| pv -L 2M > имя_архива.tar

Для удобства команда может быть расширена следующим образом:

tar -cf - имя_директории | pv -L 2M -cN tar -s $(du -sb имя_директории | grep -o '[0-9]*') > имя_архива.tar && echo "END"



Собственно прошу доработать скрипт.
У меня запланирован этот скрипт в crontab:

<?
// Резервное копирование MySQL и файлов хостинга
// Версия 2.1 Яндекс
$dbhost = "localhost"; //Адрес MySQL сервера
$dbuser = "...."; //Имя пользователя базы данных
$dbpass = "...."; //Пароль пользователя базы данных
$dbname = "..."; //Имя базы данных
$sitedir = "/home/c/..../"; //Абсолютный путь к сайту от корня диска
$excludefile = $sitedir.'/backup/*.gz'; //Файлы которые не должны попасть в архив
$yadisk_email='....@yandex.ru'; //Имя пользователя Яндекс.Диск
$yadisk_pass='.....'; //Пароль пользователя Яндекс.Диск
$yadisc_dir='backup/'; //Директория на Яндекс.Диск куда будем копировать. Она должна существовать!
// Все что ниже, лучше не трогать
$dbbackup = $dbname .'_'. date("Y-m-d_H-i-s") . '.sql.gz';
$filebackup = 'files_'. date("Y-m-d_H-i-s") .'.tar.gz';
system("mysqldump -h $dbhost -u $dbuser --password='$dbpass' $dbname | gzip > $dbbackup");
//Для больших баз данных закоментировать строчку выше и раскоментировать ниже.
//system("mysqldump --quick -h $dbhost -u $dbuser --password='$dbpass' $dbname | gzip > $dbbackup");
system ("curl --user $yadisk_email:$yadisk_pass -T $dbbackup https://webdav.yandex.ru/$yadisc_dir");
unlink($dbbackup);
shell_exec("tar cvfz $filebackup $sitedir --exclude=$filebackup --exclude=$excludefile");
system ("curl --user $yadisk_email:$yadisk_pass -T $filebackup https://webdav.yandex.ru/$yadisc_dir");
unlink($filebackup);
?>

Viewing all articles
Browse latest Browse all 514750

Trending Articles