Update rolling backup

This commit is contained in:
Fred Tempez 2024-03-18 17:42:31 +01:00
parent caa348a571
commit c8abde012c
2 changed files with 49 additions and 49 deletions

View File

@ -11,23 +11,21 @@ La clé doit être fournie en tant que paramètre "key" dans l'URL et correspond
*/ */
// Vérification de la clé // Vérification de la clé
if (isset($_GET['key'])) { if (isset ($_GET['key'])) {
$key = $_GET['key']; $key = $_GET['key'];
$storedKey = file_get_contents('data.key'); $storedKey = file_get_contents('data.key');
if ($key !== $storedKey) { if ($key !== $storedKey) {
die("Clé invalide !"); http_response_code(401);
exit();
} }
} else { } else {
die("Clé manquante !"); // Création du ZIP
} $filter = ['backup', 'tmp'];
$fileName = date('Y-m-d-H-i-s', time()) . '-rolling-backup.zip';
// Création du ZIP $zip = new ZipArchive();
$filter = ['backup', 'tmp']; $zip->open('../../../../site/backup/' . $fileName, ZipArchive::CREATE | ZipArchive::OVERWRITE);
$fileName = date('Y-m-d-H-i-s', time()) . '-rolling-backup.zip'; $directory = '../../../../site';
$zip = new ZipArchive(); $files = new RecursiveIteratorIterator(
$zip->open('../../../../site/backup/' . $fileName, ZipArchive::CREATE | ZipArchive::OVERWRITE);
$directory = '../../../../site';
$files = new RecursiveIteratorIterator(
new RecursiveCallbackFilterIterator( new RecursiveCallbackFilterIterator(
new RecursiveDirectoryIterator( new RecursiveDirectoryIterator(
$directory, $directory,
@ -37,12 +35,14 @@ $files = new RecursiveIteratorIterator(
return $fileInfo->isFile() || !in_array($fileInfo->getBaseName(), $filter); return $fileInfo->isFile() || !in_array($fileInfo->getBaseName(), $filter);
} }
) )
); );
foreach ($files as $name => $file) { foreach ($files as $name => $file) {
if (!$file->isDir()) { if (!$file->isDir()) {
$filePath = $file->getRealPath(); $filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen(realpath($directory)) + 1); $relativePath = substr($filePath, strlen(realpath($directory)) + 1);
$zip->addFile($filePath, $relativePath); $zip->addFile($filePath, $relativePath);
} }
}
$zip->close();
http_response_code(201);
} }
$zip->close();

View File

@ -11,7 +11,7 @@ Le script vérifie également la présence et la validité d'une clé spécifiqu
*/ */
// Vérification de la clé // Vérification de la clé
if (isset($_GET['key'])) { if (isset ($_GET['key'])) {
// Récupération de la clé fournie en GET // Récupération de la clé fournie en GET
$key = $_GET['key']; $key = $_GET['key'];
@ -20,24 +20,22 @@ if (isset($_GET['key'])) {
// Vérification de correspondance entre les clés // Vérification de correspondance entre les clés
if ($key !== $storedKey) { if ($key !== $storedKey) {
die("Clé invalide !"); http_response_code(401);
exit();
} }
} else { } else {
// Si la clé est manquante, affiche un message d'erreur et arrête l'exécution du script
die("Clé manquante !");
}
// Récupère le nombre de jours à partir de la variable GET 'days' // Récupère le nombre de jours à partir de la variable GET 'days'
$days = isset($_GET['days']) ? (int)$_GET['days'] : 1; // Par défaut à 1 si non spécifié $days = isset ($_GET['days']) ? (int) $_GET['days'] : 1; // Par défaut à 1 si non spécifié
// Chemin vers le répertoire contenant les fichiers // Chemin vers le répertoire contenant les fichiers
$directory = '../../../../site/backup/'; // Remplacez par le chemin réel $directory = '../../../../site/backup/'; // Remplacez par le chemin réel
// Convertit le nombre de jours en secondes // Convertit le nombre de jours en secondes
$timeLimit = strtotime("-$days days"); $timeLimit = strtotime("-$days days");
// Crée un nouvel objet DirectoryIterator // Crée un nouvel objet DirectoryIterator
foreach (new DirectoryIterator($directory) as $file) { foreach (new DirectoryIterator($directory) as $file) {
// Vérifie si l'élément courant est un fichier et a l'extension 'tar.gz' // Vérifie si l'élément courant est un fichier et a l'extension 'tar.gz'
if ($file->isFile() && $file->getExtension() === 'tar.gz') { if ($file->isFile() && $file->getExtension() === 'tar.gz') {
// Vérifie si le fichier a été modifié avant la limite de temps // Vérifie si le fichier a été modifié avant la limite de temps
@ -46,5 +44,7 @@ foreach (new DirectoryIterator($directory) as $file) {
unlink($file->getRealPath()); unlink($file->getRealPath());
} }
} }
}
// Si la clé est manquante, affiche un message d'erreur et arrête l'exécution du script
http_response_code(201);
} }
?>