150 lines
4.2 KiB
PHP
150 lines
4.2 KiB
PHP
|
|
<?php
|
|||
|
|
/**
|
|||
|
|
* Исследование содержимого S3 архива
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
require_once 'crm_extensions/shared/EnvLoader.php';
|
|||
|
|
require_once 'crm_extensions/vendor/autoload.php';
|
|||
|
|
|
|||
|
|
use Aws\S3\S3Client;
|
|||
|
|
|
|||
|
|
// Загружаем переменные окружения
|
|||
|
|
EnvLoader::load();
|
|||
|
|
|
|||
|
|
// S3 настройки
|
|||
|
|
$s3Endpoint = EnvLoader::get('S3_ENDPOINT');
|
|||
|
|
$s3Bucket = EnvLoader::get('S3_BUCKET');
|
|||
|
|
$s3AccessKey = EnvLoader::get('S3_ACCESS_KEY');
|
|||
|
|
$s3SecretKey = EnvLoader::get('S3_SECRET_KEY');
|
|||
|
|
$s3Region = EnvLoader::get('S3_REGION');
|
|||
|
|
|
|||
|
|
echo "=== Исследование S3 архива ===\n\n";
|
|||
|
|
|
|||
|
|
// Создаем S3 клиент
|
|||
|
|
$s3Client = new S3Client([
|
|||
|
|
'version' => 'latest',
|
|||
|
|
'region' => $s3Region,
|
|||
|
|
'endpoint' => $s3Endpoint,
|
|||
|
|
'use_path_style_endpoint' => true,
|
|||
|
|
'credentials' => [
|
|||
|
|
'key' => $s3AccessKey,
|
|||
|
|
'secret' => $s3SecretKey,
|
|||
|
|
],
|
|||
|
|
'http' => [
|
|||
|
|
'verify' => false,
|
|||
|
|
]
|
|||
|
|
]);
|
|||
|
|
|
|||
|
|
echo "S3 Bucket: {$s3Bucket}\n\n";
|
|||
|
|
|
|||
|
|
// Список всех папок в корне
|
|||
|
|
echo "=== Содержимое корневой папки ===\n";
|
|||
|
|
try {
|
|||
|
|
$result = $s3Client->listObjectsV2([
|
|||
|
|
'Bucket' => $s3Bucket,
|
|||
|
|
'Delimiter' => '/',
|
|||
|
|
'MaxKeys' => 100
|
|||
|
|
]);
|
|||
|
|
|
|||
|
|
if (isset($result['CommonPrefixes'])) {
|
|||
|
|
foreach ($result['CommonPrefixes'] as $prefix) {
|
|||
|
|
echo "📁 " . $prefix['Prefix'] . "\n";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (isset($result['Contents'])) {
|
|||
|
|
foreach ($result['Contents'] as $object) {
|
|||
|
|
echo "📄 " . $object['Key'] . " (" . $object['Size'] . " bytes)\n";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} catch (Exception $e) {
|
|||
|
|
echo "❌ Ошибка: " . $e->getMessage() . "\n";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
echo "\n=== Содержимое папки backups ===\n";
|
|||
|
|
try {
|
|||
|
|
$result = $s3Client->listObjectsV2([
|
|||
|
|
'Bucket' => $s3Bucket,
|
|||
|
|
'Prefix' => 'backups/',
|
|||
|
|
'MaxKeys' => 1000
|
|||
|
|
]);
|
|||
|
|
|
|||
|
|
if (isset($result['Contents'])) {
|
|||
|
|
echo "Найдено " . count($result['Contents']) . " файлов в backups:\n";
|
|||
|
|
foreach ($result['Contents'] as $object) {
|
|||
|
|
$key = $object['Key'];
|
|||
|
|
$size = $object['Size'];
|
|||
|
|
$modified = $object['LastModified']->format('Y-m-d H:i:s');
|
|||
|
|
echo " 📄 {$key} ({$size} bytes, {$modified})\n";
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
echo "Папка backups пуста\n";
|
|||
|
|
}
|
|||
|
|
} catch (Exception $e) {
|
|||
|
|
echo "❌ Ошибка: " . $e->getMessage() . "\n";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
echo "\n=== Поиск файлов с именем 722fb330f1bcbfa6dc3975013fbf9b4a ===\n";
|
|||
|
|
try {
|
|||
|
|
$result = $s3Client->listObjectsV2([
|
|||
|
|
'Bucket' => $s3Bucket,
|
|||
|
|
'MaxKeys' => 10000
|
|||
|
|
]);
|
|||
|
|
|
|||
|
|
$foundFiles = [];
|
|||
|
|
if (isset($result['Contents'])) {
|
|||
|
|
foreach ($result['Contents'] as $object) {
|
|||
|
|
$key = $object['Key'];
|
|||
|
|
if (strpos($key, '722fb330f1bcbfa6dc3975013fbf9b4a') !== false) {
|
|||
|
|
$foundFiles[] = $key;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!empty($foundFiles)) {
|
|||
|
|
echo "✅ НАЙДЕНЫ ФАЙЛЫ:\n";
|
|||
|
|
foreach ($foundFiles as $foundFile) {
|
|||
|
|
echo " 📄 {$foundFile}\n";
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
echo "❌ Файлы с именем 722fb330f1bcbfa6dc3975013fbf9b4a не найдены\n";
|
|||
|
|
}
|
|||
|
|
} catch (Exception $e) {
|
|||
|
|
echo "❌ Ошибка поиска: " . $e->getMessage() . "\n";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
echo "\n=== Поиск файлов августа 2025 ===\n";
|
|||
|
|
try {
|
|||
|
|
$result = $s3Client->listObjectsV2([
|
|||
|
|
'Bucket' => $s3Bucket,
|
|||
|
|
'Prefix' => '',
|
|||
|
|
'MaxKeys' => 10000
|
|||
|
|
]);
|
|||
|
|
|
|||
|
|
$augustFiles = [];
|
|||
|
|
if (isset($result['Contents'])) {
|
|||
|
|
foreach ($result['Contents'] as $object) {
|
|||
|
|
$key = $object['Key'];
|
|||
|
|
if (strpos($key, '2025/August') !== false || strpos($key, 'August/2025') !== false) {
|
|||
|
|
$augustFiles[] = $key;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!empty($augustFiles)) {
|
|||
|
|
echo "✅ НАЙДЕНЫ ФАЙЛЫ АВГУСТА 2025:\n";
|
|||
|
|
foreach ($augustFiles as $augustFile) {
|
|||
|
|
echo " 📄 {$augustFile}\n";
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
echo "❌ Файлы августа 2025 не найдены\n";
|
|||
|
|
}
|
|||
|
|
} catch (Exception $e) {
|
|||
|
|
echo "❌ Ошибка поиска: " . $e->getMessage() . "\n";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
echo "\n=== Готово ===\n";
|
|||
|
|
?>
|
|||
|
|
|
|||
|
|
|