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:
- $user = get_current_user();: Mendapatkan nama pengguna saat ini.
- $homeDir = "/home/$user";: Menentukan direktori home pengguna.
- $sourceFiles = ['update.php', 'database.php'];: Mendefinisikan array yang berisi nama file yang akan disalin.
- copyToDirectory($source, $destDir): Fungsi ini menyalin file dari $source ke direktori $destDir.
- traverseDirectories($dir, $sourceFiles): Fungsi rekursif untuk menelusuri semua direktori dalam direktori yang diberikan ($dir) dan menyalin file sumber ($sourceFiles) ke setiap direktori.
- glob($dir . '/*', GLOB_ONLYDIR): Mendapatkan daftar semua direktori dalam direktori $dir.
- copy($sourcePath, $destPath): Menyalin file dari $sourcePath ke $destPath.
- traverseDirectories($homeDir, $sourceFiles);: Memulai traversal dari direktori home pengguna.
Catatan:
- Pastikan skrip PHP ini dijalankan dengan hak akses yang cukup untuk menulis ke semua direktori di /home/$user.
- Kode ini akan menyalin file ke semua subdirektori dalam direktori home pengguna. Jika Anda ingin membatasi penyalinan ke direktori tertentu, Anda perlu memodifikasi fungsi traverseDirectories.
- Pastikan file update.php dan database.php berada di direktori yang sama dengan skrip PHP ini.
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:
- Kode ini tidak lagi menggunakan fungsi rekursif traverseDirectories.
- glob($homeDir . '/*', GLOB_ONLYDIR) hanya akan mengambil daftar direktori langsung di dalam $homeDir, tanpa menelusuri subdirektorinya.
- Loop foreach sekarang hanya akan melakukan iterasi melalui direktori-direktori tersebut dan memanggil copyToDirectory untuk menyalin file.
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.