Berikut adalah script PHP untuk melakukan sinkronisasi file dari folder lokal /home/apps/ppid-v3/ ke bucket MinIO ppid-prod.

Script PHP

<?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";

Langkah-Langkah

Instal AWS SDK: Pastikan Anda telah menginstal AWS SDK untuk PHP menggunakan Composer:
composer require aws/aws-sdk-php

Simpan Script: Simpan script di file, misalnya sync_minio.php.
Jalankan Script: Jalankan script menggunakan CLI:
php sync_minio.php

Penjelasan

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!