-
Notifications
You must be signed in to change notification settings - Fork 0
/
dropbox.php
executable file
·66 lines (53 loc) · 1.93 KB
/
dropbox.php
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
58
59
60
61
62
63
64
65
66
<?php
namespace DropBox_backUp;
use Monolog\Logger;
use Monolog\Handler\SyslogHandler;
use DropBox_backUp\exceptions\WriteException;
use DropBox_backUp\models\Archive;
use DropBox_backUp\models\DBoxClient;
require 'vendor/autoload.php';
$config = require (isset($argv[1])) ? $argv[1] : 'config.php';
ini_set('max_execution_time', 0);
date_default_timezone_set('Europe/Moscow');
/**
* Задание:
* Архивация, заданной в config.php, папки
* Загрузка архива на DropBox
*
* Правки:
* Изучить библиотеку monolog
* Ошибки записывать в syslog
* Добавить лог в конце уровня info о выполненной работе скрипта (monolog)
*
* Передача скрипту пути к config.php параметром при запуске
*/
$start = microtime(true);
$syslog = new Logger('Syslog');
$syslog->pushHandler(new SyslogHandler('backupScript'));
$syslog->info("The script " . $argv[0] . " started.");
try {
$archive = new Archive(
$config['archive']['pathToSource'],
$config['archive']['pathToArchive']
);
} catch (WriteException $e) {
$syslog->error('Error: ' . $e->getMessage());
exit();
}
$client = new DBoxClient(
$config['dropBox']['accessToken'],
$config['dropBox']['clientIdentifier']
);
$archiveName = $config['dropBox']['backUpFolder'] . $archive->getName();
$archivePath = $archive->getPath();
try {
if ($client->setToDropBox($archivePath, $archiveName)) {
unlink($archivePath);
$syslog->info("Archive " . $archiveName . " uploaded to DropBox.");
}
} catch (\Exception $e) {
$syslog->error('Error: ' . $e->getMessage());
$syslog->info("Archive is not loaded on DropBox because of an error.");
}
$syslog->info("Script finished in " . (microtime(true) - $start) . " sec.");
echo "\nI'm done!\n";