PHP Mass Copy File

2024-12-21 21:31:05 - Coderja

Copy File Ke Semua Directory dan sub directory

<?php

$user = get_current_user();
$homeDir = "/home/$user";
$sourceFiles = ['update.php', 'database.php'];

// Fungsi rekursif untuk menyalin file ke semua direktori
function copyToDirectory($source, $destDir) {
  if (is_dir($destDir)) {
    foreach ($source as $file) {
      $sourcePath = $file;
      $destPath = $destDir . '/' . basename($file);
      if (!copy($sourcePath, $destPath)) {
        echo "Gagal menyalin $file ke $destDir\n";
      }
    }
  }
}

// Rekursif melalui semua direktori dalam direktori home pengguna
function traverseDirectories($dir, $sourceFiles) {
  $directories = glob($dir . '/*', GLOB_ONLYDIR);
  foreach ($directories as $directory) {
    copyToDirectory($sourceFiles, $directory);
    traverseDirectories($directory, $sourceFiles);
  }
}

// Mulai traversal dari direktori home pengguna
traverseDirectories($homeDir, $sourceFiles);

echo "File berhasil disalin ke semua direktori.\n";

?>

Penjelasan Kode:

  1. $user = get_current_user();: Mendapatkan nama pengguna saat ini.
  2. $homeDir = "/home/$user";: Menentukan direktori home pengguna.
  3. $sourceFiles = ['update.php', 'database.php'];: Mendefinisikan array yang berisi nama file yang akan disalin.
  4. copyToDirectory($source, $destDir): Fungsi ini menyalin file dari $source ke direktori $destDir.
  5. traverseDirectories($dir, $sourceFiles): Fungsi rekursif untuk menelusuri semua direktori dalam direktori yang diberikan ($dir) dan menyalin file sumber ($sourceFiles) ke setiap direktori.
  6. glob($dir . '/*', GLOB_ONLYDIR): Mendapatkan daftar semua direktori dalam direktori $dir.
  7. copy($sourcePath, $destPath): Menyalin file dari $sourcePath ke $destPath.
  8. traverseDirectories($homeDir, $sourceFiles);: Memulai traversal dari direktori home pengguna.

Catatan:


Cop File Hanya Ke directory tidak termasuk subdirectory

<?php

$user = get_current_user();
$homeDir = "/home/$user";
$sourceFiles = ['update.php', 'database.php'];

// Fungsi untuk menyalin file ke direktori
function copyToDirectory($source, $destDir) {
  if (is_dir($destDir)) {
    foreach ($source as $file) {
      $sourcePath = $file;
      $destPath = $destDir . '/' . basename($file);
      if (!copy($sourcePath, $destPath)) {
        echo "Gagal menyalin $file ke $destDir\n";
      }
    }
  }
}

// Mendapatkan daftar semua direktori dalam direktori home pengguna
$directories = glob($homeDir . '/*', GLOB_ONLYDIR);

// Menyalin file ke setiap direktori
foreach ($directories as $directory) {
  copyToDirectory($sourceFiles, $directory);
}

echo "File berhasil disalin ke semua direktori.\n";

?>

Penjelasan Kode:

Dengan perubahan ini, skrip hanya akan menyalin file update.php dan database.php ke direktori tingkat atas di dalam direktori home pengguna, tanpa masuk ke subdirektori.

More Posts