Berikut adalah script PHP untuk sinkronisasi file dari folder /var/www/html/
ke bucket MinIO apik-prod
. Script ini disesuaikan dengan kebutuhan Anda.
<?php
require 'vendor/autoload.php'; // Pastikan AWS SDK sudah diinstal via Composer
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
// Konfigurasi MinIO
$accessKey = 'kode_accessKey';
$secretKey = 'kdoe_secretKey';
$bucketName = 'nama_bucketName';
$minioEndpoint = 'https://namadomain.go.id';
$region = 'us-east-1';
// Folder lokal yang akan disinkronisasi
$sourceFolder = '/var/www/html/';
// File log untuk mencatat proses sinkronisasi
$logFile = '/var/log/sync_apik_minio.log';
// Buat instance S3 client
$s3 = new S3Client([
'version' => 'latest',
'region' => $region,
'endpoint' => $minioEndpoint,
'use_path_style_endpoint' => true,
'credentials' => [
'key' => $accessKey,
'secret' => $secretKey,
],
]);
// Fungsi untuk menulis log
function writeLog($message)
{
global $logFile;
$timestamp = date('Y-m-d H:i:s');
file_put_contents($logFile, "[$timestamp] $message\n", FILE_APPEND);
}
// Fungsi untuk mengupload file ke MinIO
function uploadFileToMinio($s3, $bucketName, $filePath, $key)
{
try {
$s3->putObject([
'Bucket' => $bucketName,
'Key' => $key,
'SourceFile' => $filePath,
]);
writeLog("File berhasil diupload: {$key}");
} catch (S3Exception $e) {
writeLog("Gagal upload file {$key}: " . $e->getMessage());
}
}
// Sinkronisasi folder
function syncFolder($s3, $bucketName, $sourceFolder)
{
$directory = new RecursiveDirectoryIterator($sourceFolder);
$iterator = new RecursiveIteratorIterator($directory);
foreach ($iterator as $fileInfo) {
if ($fileInfo->isFile()) {
$filePath = $fileInfo->getPathname();
$key = str_replace($sourceFolder, '', $filePath); // Path relatif di bucket
uploadFileToMinio($s3, $bucketName, $filePath, ltrim($key, '/'));
}
}
}
// Periksa apakah folder sumber ada
if (!is_dir($sourceFolder)) {
writeLog("Folder sumber $sourceFolder tidak ditemukan.");
die("Folder sumber $sourceFolder tidak ditemukan.\n");
}
// Jalankan sinkronisasi
writeLog("Memulai sinkronisasi folder $sourceFolder ke bucket $bucketName...");
syncFolder($s3, $bucketName, $sourceFolder);
writeLog("Sinkronisasi selesai.");
composer require aws/aws-sdk-php
sync_apik.php
.Buat Folder Log: Pastikan folder log /var/log/
dapat diakses dan memiliki izin tulis untuk mencatat proses:sudo chmod 666 /var/log/sync_apik_minio.log
nohup
agar berjalan di latar belakang:nohup php sync_apik.php > /dev/null 2>&1 &
tail -f /var/log/sync_apik_minio.log
ps aux | grep sync_apik.php
kill <PID>
/var/www/html/
akan disinkronkan dengan struktur yang sama di bucket apik-prod
./var/log/sync_apik_minio.log
.nohup
.