Update rolling backup

This commit is contained in:
Fred Tempez 2024-03-18 17:40:56 +01:00
parent 11753b4476
commit 2cbd3d5923
2 changed files with 49 additions and 49 deletions

View File

@ -11,38 +11,38 @@ 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); new RecursiveCallbackFilterIterator(
$directory = '../../../../site'; new RecursiveDirectoryIterator(
$files = new RecursiveIteratorIterator( $directory,
new RecursiveCallbackFilterIterator( RecursiveDirectoryIterator::SKIP_DOTS
new RecursiveDirectoryIterator( ),
$directory, function ($fileInfo, $key, $iterator) use ($filter) {
RecursiveDirectoryIterator::SKIP_DOTS return $fileInfo->isFile() || !in_array($fileInfo->getBaseName(), $filter);
), }
function ($fileInfo, $key, $iterator) use ($filter) { )
return $fileInfo->isFile() || !in_array($fileInfo->getBaseName(), $filter); );
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen(realpath($directory)) + 1);
$zip->addFile($filePath, $relativePath);
} }
)
);
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen(realpath($directory)) + 1);
$zip->addFile($filePath, $relativePath);
} }
} $zip->close();
$zip->close(); http_response_code(201);
}

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,31 +20,31 @@ 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
if ($file->getMTime() < $timeLimit) { if ($file->getMTime() < $timeLimit) {
// Supprime le fichier // Supprime le fichier
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);
}