PHP İle Tüm Klasör Ve Dosya İçeriğini Kopyalama

PHP İle Tüm Klasör Ve Dosya İçeriğini Kopyalama

  • 3,350 Kez Okundu
  • PHP & MySQL
  • 3 Yorum
  • 2017-05-12 21:51:15

Bazen öyle bir zaman gelir ki tek tek dosya kopyalamak yerine içindekiler dahil  tüm klasörü kopyalamak gereği duyarız . Faydası olabilmesi umuduyla sizlerle de açıklamalarını kodların arasına yazdığım fonksiyonu sizlerle paylaşıyorum.



function HerseyiKopyala($kaynak, $hedef) { 					// HerseyiKopyala Fonksiyonunun içerisine kaynak ve hedef şeklinde iki değişken gönderiyoruz.
    if ( is_dir( $kaynak ) ) { 								// kaynak olarak belirtilen konum dizin olduğu doğrulunaıyor 
        if (!file_exists($hedef)) { @mkdir( $hedef ); }		// hedef dizin yoksa oluşturuyoruz
        $Dizin = dir( $kaynak ); 							// kaynak dizinini açıyoruz
        while ( FALSE !== ( $giris = $Dizin->read() ) ) { 	// dizin içerisini döngüye alıp tek tek okuyoruz
            if ( $giris == '.' || $giris == '..' ) {		// dizin konumlarını kontrol ediyoruz
                continue;
            }
            $Giris = $kaynak . '/' . $giris; 				// gelen dizin konumunu değişkene atıyoruz
            if ( is_dir( $Giris ) ) {						// Giris olarak belirtilen konum dizin olduğu doğrulunaıyor
                HerseyiKopyala( $Giris, $hedef . '/' . $giris ); // fonksiyonu yeniden çağırıyoruz
                continue;
            }
            copy( $Giris, $hedef . '/' . $giris );			// kontrol ettiğimiz dizine okuduğumuz dosyaları kopyalıyoruz
        }
        $Dizin->close();									// dizin okumayı sonlandırıyoruz
    }else {
        copy( $kaynak, $hedef );							// belirtilen kaynak değişkeni dizin değilse kopyalama işlemini gerçekleştir
    }
}

Fonksiyonumuzu bu şekilde oluşturduk , kullanmak için aşağıdaki yolu izlemeniz yeterli;


$kaynak	="../css/style.css"; 		//tek dosya kopyalama
$kaynak	="../css/"; 				//tüm klasörü kopyalama
$hedef	="plugins/styles/";			//hedef dizini belirtiyoruz
 HerseyiKopyala($kaynak, $hedef); 	//değişkenlerimizi fonksiyona gönderiyoruz

Sağlıcakla Kalın...

Meraklı Kişi
@Meraklı Kişi demiş ki ;

Merhaba,ftp:// ile bir bağlantı açınca dosyaları okumuyor,ayrıca hem dosya hem klasörleri aynı anda okumuyor. Bunu nasıl düzeltebiliriz?

Merkalı Kişi
@Merkalı Kişi demiş ki ;

Merhaba, önceden attığım yorumdaki sorunlarımı çözdüm. Ancak kopyalama biraz yavaş. Bunu hızlandırabilmenin bir yolu var mı?

admin
@admin demiş ki ;

@MeraklıKişi Kullanılan fonksiyon tüm dosya ve klasörleri tek tek kontrol ederek belirlenen durumuna göre işlem yapıyor yani ne kadar çok dosya ve klasör varsa o kadar uzun sürer döngü. 

Lakin pratik bir çözüm için shell komutu çalıştırabilirsiniz, örnek olarak :

$kaynak = "/home/www/example.com/*";
$hedef = "/home/www/website.com/";
shell_exec("cp -r $kaynak $hedef ");

 

YORUM YAPMAK İSTER MİSİN?

    Önerilen Video
    Sponsor Reklamlar
    Son Yorumlar
    Etiket Bulutu
    C#PopupFormOtomatikProgramBaşlatmaBaşlangıçBasitEkran Koruyucuc#ekran görüntüsümail göndermeexedllbirleştirmekIL MergePhpMSSQL BAĞLANTIGerçekIPRealTextBinaryConvertÇalışmaSüreHesaplamakBulmakCssjQueryHtmlScroll TopYukarı ÇıkOnMinimizeControlBoxSimge DurumunaKüçültInternetGetConnectedStateİnternetBağlantıKontrolŞifre MatikPassword GeneratorHash ŞifrelemeMD5SHA1SHA256SHA384SHA512Asimetrik ŞifrelemeRSASimetrik ŞifrelemeKriptoŞifrelemeAlgoritmaDESRC2RijndaelTripleDESKeyLogKlavye DinleTuş YakalamaGlobal HookDialogResultÇıkış MesajıUyarı MesajıFormClosingMySQLConnector/NetKullanımSoruCheckBoxListViewÇoklu SilmebiosdramexploitkontrolgüvenlikinteljavascriptrowhammerscriptPHPAdmin PanelResponsiveXtbadminFreeÜcretsizWifiWirelessKeysŞifreAnahtarPasswordKablosuz AğDepolamaŞifreler NeredeKablosuz ŞifreAndroidTelefonNasılYazılırProgramlama DiliHesap MakinesiSEONedirNasıl YapılırAnalizGoogleLinkÖzgünMobilKonuResim Robots.txtSite MapŞifreli GirişŞifreli FormŞifre KoymaŞifreli AçılışCompilingDebuggingDerlemeKarma ModMixed ModeApp.ConfigKurbanBayramMübarek OlsunBlogScriptYonetimAdminPanelText EditorMSHTMLEditorYazıDüzenleyiciEasyAppKolayUygulamaÇalıştırmaAkıllı TelefonKlavyeiOSKeyboardEl YazısıCalculatorMyScriptHand WritingDosya YöneticisiFile ExplorerFTPBluetoothRootTask ManagerGörev YöneticisiSystemTargetWeb Application PentestErrorShowHideHataGösterGizlePDOSelectInsertUpdateDeleteConnectSeçimEklemeSilmeGüncellemeMsSQLVeritabanıÇeviriçiDatabaseConverterDbConvertMaskeli IPGerçek IPTarayıcı Tespitİşletim Sistemi TespitTekil Ziyaretçi BilgileriAktif Ziyaretçi BilgileriZiyaretçi SayacıVirüsTemizlemeFirewallServiceSecurityServiceTimeServicePentestGüvenliksızma TestiuniscanwindowslinuxperlDosyaKlasörListelemekFileFolderListInternetDownloadUploadSpeedMonitorServisMsconfigStartupRunServiceIOSMatematikDenklemÇözümKameraKablosuzinternetHotspotPaylaşımAyarlarKaliLinuxSharedTerminalÖsymDuyuruTimeTimeZoneDateZamanTarihdate()time()FreelancerSerbestÇalışanJobsİşlerWebSiteVersionSürümGeçişUbuntuSunucuApachephpinfo()phpversion()FonksiyonHerseyiKopyalacopyallcopySızma TestiSQLMapWindowsPython810HotSpotWi-FiWlannetshhostednetworkAutoWlanJsGeri SayımTextAreaOtomatik KayıtSayacSaniyeCountDownXtbadminV2AjaxJavaScriptNumaraFormatPhoneNumberFormatTelefonNumarasıDebuggerDetectUnpackerDisassemblerSecurityReverseEngineeringAlgorithmMacDKHOSCTFCapture The FlagForensicTriviaIntelligenceCRC32CRYPTPASSWORD_HASHWin10StoreMağazaMicrosoftReInstallWSLPowerShellPOSTCyberSiberAdli BilişimHackerUSBCDLiveToolsBruterNmapMSSQL ServerMS SQL ExpressMS AccessOracleIBM DB2SybaseInterbaseInformixExceldBase DbfVisual FoxProMySQLConnectionŞifreleri BulCMDLaZagneEthernetTuxCutNetCutNetKillPerformansCronTabCronJobRestartStopStartBashShellWireSharkFlagUSOMBTKBase64QRÇözümlerWriteUpWrite-UpFinalReconOSINTToolScannerWebsiteSiber GüvenlikPhishingVPNWannacry
    Bumerang - Yazarkafe