Berikut adalah script PHP untuk melakukan sinkronisasi file dari folder lokal /home/apps/ppid-v3/
ke bucket MinIO ppid-prod
.
<?php
require 'vendor/autoload.php'; // Pastikan Anda telah menginstal AWS SDK via Composer
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
// Konfigurasi MinIO
$accessKey = 'kode_accesskey';
$secretKey = 'kode_secretkey';
$bucketName = 'nama_bucket';
$minioEndpoint = 'https://namadomain.go.id';
$region = 'us-east-1';
// Folder lokal yang akan disinkronisasi
$sourceFolder = '/home/namaaplikasi/';
// 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 mengupload file ke MinIO
function uploadFileToMinio($s3, $bucketName, $filePath, $key)
{
try {
$result = $s3->putObject([
'Bucket' => $bucketName,
'Key' => $key,
'SourceFile' => $filePath,
]);
echo "File berhasil diupload: {$key}\n";
} catch (S3Exception $e) {
echo "Gagal upload file {$key}: " . $e->getMessage() . "\n";
}
}
// 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)) {
die("Folder sumber $sourceFolder tidak ditemukan.\n");
}
// Jalankan sinkronisasi
echo "Memulai sinkronisasi folder $sourceFolder ke bucket $bucketName...\n";
syncFolder($s3, $bucketName, $sourceFolder);
echo "Sinkronisasi selesai.\n";
composer require aws/aws-sdk-php
sync_minio.php
.Jalankan Script: Jalankan script menggunakan CLI:php sync_minio.php
uploadFileToMinio
: Fungsi ini digunakan untuk mengupload file satu per satu ke MinIO.syncFolder
: Fungsi ini akan membaca semua file di folder lokal dan menguploadnya ke bucket dengan struktur folder yang sama.Konfigurasi Endpoint dan Credentials: Endpoint MinIO dan credentials (accessKey
dan secretKey
) sudah disesuaikan dengan kebutuhan Anda.Debugging: Jika terjadi error, pesan akan dicetak untuk setiap file yang gagal diupload.Beritahu saya jika ada masalah atau jika Anda memerlukan penyesuaian!