forked from partageit/php-opencloud-backup
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoc-backup.php
More file actions
94 lines (77 loc) · 2.35 KB
/
oc-backup.php
File metadata and controls
94 lines (77 loc) · 2.35 KB
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
require "vendor/autoload.php";
use OpenCloud\OpenStack;
$longOptions = array(
"help",
"files:",
"container:",
"config:"
);
$parameters = getopt("h", $longOptions);
if (isset($parameters["help"]) || isset($parameters["h"])) {
usage();
exit(0);
}
if (count($parameters) !== 3) {
echo "Required parameters are missing\n\n";
usage();
exit(1);
}
$files = $parameters["files"];
$containerName = $parameters["container"];
$configFile = $parameters["config"];
if (!file_exists($configFile)) {
echo "The configuration file '$configFile' does not exist.\n\n";
exit(2);
}
$ocParameters = json_decode(file_get_contents($configFile));
if (!$ocParameters) {
echo "The configuration file '$configFile' content is not valid JSON.\n\n";
exit(3);
}
// Initialization
$client = new OpenStack(
$ocParameters->authUrl, array(
"username"=> $ocParameters->username,
"password"=> $ocParameters->password,
"tenantName" => $ocParameters->tenant
)
);
$swiftUrl = $ocParameters->swiftUrl;
$serviceName = $ocParameters->serviceName;
$region = $ocParameters->region;
try {
$client->authenticate();
$service = $client->objectStoreService($serviceName, $region);
$container = $service->createContainer($containerName);
if ($container === false) {
echo "The container '$containerName' already exists.\n";
} else {
echo "The container '$containerName' has been successfully created.\n";
}
$container = $service->getContainer($containerName);
foreach (glob($files) as $filename) {
echo "Sending $filename (" . number_format(filesize($filename) / 1024 / 1024, 2) . " MB)...\n";
$fileData = fopen($filename, "r+");
$container->uploadObject(basename($filename), $fileData);
echo "-> File sent.\n";
}
} catch (Exception $e) {
echo "Problem while dealing with OpenCloud:\n";
echo $e->getMessage() . "\n";
exit(4);
}
function usage() {
global $argv;
echo basename($argv[0]) . "\n\n";
echo "Backup files to an OpenCloud container\n\n";
echo "Usage: " . basename($argv[0]) . " --files=*.jpeg --container=mycontainer --config=config.json\n\n";
echo "Parameters:\n";
echo " --help : Displays this message.\n";
echo " --files : Files to backup, wildcards are allowed.\n";
echo " --container : The container name, automatically created if it does not exist.\n";
echo " --config : Path to the configuration file.\n";
echo "\n";
}
echo "Finished, bye!\n\n";
?>