Zmazanie všetkého v priečinku

Programovacie jazyky, rady, poradňa...
WebScript
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 04 okt 2009, 14:25

Zmazanie všetkého v priečinku

Príspevok od používateľa WebScript »

Dobrý deň,
chcel by som vás poprosiť že či by ste mi nespravili jeden php skript ktory by vymazal všetko v priečinku v ktorom sa náchádza (všetko v priečinku aby vymazal okrem seba). Mám zálohovací script ktorý keď zákazník spustí tak mu vytvorí zálohu sevrera, a potreboval by som tento script každý deň o 0:00 spúšťať, čiže každý deň by to vymazalo obsah adresára.
Ďakujem za každú pomoc
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zmazanie všetkého v priečinku

Príspevok od používateľa audiotrack »

Kód: Vybrať všetko

function getName(){
   $break = explode('/', $_SERVER["SCRIPT_NAME"]);
   return $break[count($break) - 1];
}

function deleteAll($dir='.',$delDir=false){
    if(!$dh = @opendir($dir)){
        return;
    }
    while (false !== ($obj = readdir($dh))){
        if($obj == '.' || $obj == '..' || $obj == getName()){
            continue;
        }
        if (!@unlink($dir . '/' . $obj)){
            deleteAll($dir.'/'.$obj, true);
        }
    }
    closedir($dh);   
    if ($delDir){
        @rmdir($dir);
    }
    return;
} 
netestované, písane z hlavy ale malo by to fungovať
Numline1
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 858
Registrovaný: 04 dec 2006, 18:04

Re: Zmazanie všetkého v priečinku

Príspevok od používateľa Numline1 »

Nebolo by v pripade linuxoveho serveru optimalnejsie spustit tam rm -rf dir ? :)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zmazanie všetkého v priečinku

Príspevok od používateľa audiotrack »

ak má safe_mode tak mu exec, system ani nič podobné spustiť nepôjde.
WebScript
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 04 okt 2009, 14:25

Re: Zmazanie všetkého v priečinku

Príspevok od používateľa WebScript »

Ďakujem za pomoc, neuviedol som potrebné Informácie, mám Linux s možnosťou exec(); konkrétne distribúciu debian.
Audiotrack ta funkcia nezmaze vsetko v priecinku? ja potrebujem aby zmazalo vsetko okrem toho suboru ktory bude spustany v tom priecinku na zmazanie suborov... alebo ak by sa dalo cez exec spravit ze by ten subor nebol s tom priecinku a cez exec by sa cely priecinok vymazal by bolo najlepšie... Ak by to takto išlo cez exec tak mi stačí iba ten exec, ostatok okolo toho scriptu si dorobim... stacil by mi len ten riadok s exec ktory vykona to zmazanie obsahu priecinka... Alebo mňa ešte napadlo že či sa nedá vymazať celý priečinok potom znovu vytvoriť a nastaviť mu chmod 777 pomocou exec.
Ďakujem za každú odpoveď.
WebScript
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Re: Zmazanie všetkého v priečinku

Príspevok od používateľa Mek »

Ja pouzivam toto:
(zmaze rekurzivne vsetky subory a podadresare v zadanej ceste); odskusane, funkcne

Kód: Vybrať všetko

<?
function advancedRmdir($path) {
    $origipath = $path;
    $handler = opendir($path);
    while (true) {
        $item = readdir($handler);
        if ($item == "." or $item == "..") {
            continue;
        } elseif (gettype($item) == "boolean") {
            closedir($handler);
            if (!@rmdir($path)) {
                return false;
            }
            if ($path == $origipath) {
                break;
            }
            $path = substr($path, 0, strrpos($path, "/"));
            $handler = opendir($path);
        } elseif (is_dir($path."/".$item)) {
            closedir($handler);
            $path = $path."/".$item;
            $handler = opendir($path);
        } else {
            unlink($path."/".$item);
        }
    }
    return true;
}
echo advancedRmdir('./myfolder/');
?>
juho
Star
Star
Používateľov profilový obrázok
Príspevky: 551
Registrovaný: 11 máj 2007, 21:16

Re: Zmazanie všetkého v priečinku

Príspevok od používateľa juho »

WebScript napísal: Ďakujem za každú odpoveď.
takze ty mas teda 2 sposoby :
prvy je ten ze mas nieco ako odkaz(shortcut) v tom priecinku ktory ked spustis tak vymaze vsetky subory a priecinky okrem toho daneho odkazu
druhy je ten ze zmases cely ten priecinok aj s tym odkazom a potom ho znovu vytvoris aj s tym odkazom alebo jak?

ked execujes tak ten

Kód: Vybrať všetko

 rm -rf 
a menis mod

Kód: Vybrať všetko

chmod 777 file.txt
a inak ze budes po spusteni kontrolovat vsetko v danom priecinku a ked prejdes na priecinok tak ho len rekurzivne spustis. a pritom si kontrolujes ci dany script nenasiel ten odkaz co ti vymazava vsetko v zakladnom priecinku a ked ho nasiel tak len continue cim sa posunie smernik a preskoci ti to na dalsi subor az existuje.
priklad z pana googlea

Kód: Vybrať všetko

http://onwebdevelopment.blogspot.com/2008/02/how-to-delete-all-files-and-subfolders.html
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zmazanie všetkého v priečinku

Príspevok od používateľa audiotrack »

veď to som mu písal už aj ja. Potom to mek dal znovu v mierne zložitejšej a kostrbatejšej forme, a teraz si mu ty zase dal link na to isté.
aughostino
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1269
Registrovaný: 26 apr 2007, 16:05

Re: Zmazanie všetkého v priečinku

Príspevok od používateľa aughostino »

Kód: Vybrať všetko

echo advancedRmdir('./myfolder/');
ako to zapisat tak, aby script vymazal iba obsah priecinka myfolder a priecinok samotny nie?
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Re: Zmazanie všetkého v priečinku

Príspevok od používateľa Mmartin »

Kód: Vybrať všetko

echo advancedRmdir('./myfolder/');
mkdir('./myfolder/',0777);
http://php.net/manual/en/function.mkdir.php
WebScript
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 04 okt 2009, 14:25

Re: Zmazanie všetkého v priečinku

Príspevok od používateľa WebScript »

Ďakujem veľmi za každú odpoveď :oops:
Prepáčte nebol som tu, nakoniec som to vyriešil tak že som si nechal poradiť a ten script na vymazanie obsahu priečinka som dal von s priečinka ( o úroveň vyššie v adresárovej štruktúre ) a do toho scriptu som dal aby to vymazalo priečinok a znovu vytvorilo s chmod777
Ešte raz ďakujem za skvelú pomoc každému ktorý mi pomohol, s týmto som už dávno nerobil.
//P.S. Toto fórum je najlepšie v Česku aj Slovensku!
Napísať odpoveď