Salut à tous :) ,
dans le but de ne pas perdre toutes les données de mon site, j'ai créé un script php de backup FTP.
Le problème c'est qu'il a du mal avec les sous dossiers !
Exemple :
Sur mon FTP j'ai :
* fr/
o img/
o css/
o fichiers.php
* index.php
Et mon script transfère ça :
* fr/
o img/
o contenu du dossier "css"
o fichiers.php
* index.php
Le code
Donc voici mon code en espérant que vous puissiez m'aider :
<?php
function ftp_rmAll($conn_id,$dst_dir){
$ar_files = ftp_nlist($conn_id, $dst_dir);
if (is_array($ar_files)){
for ($i=0;$i<sizeof($ar_files);$i++){
$st_file = basename($ar_files[$i]);
if($st_file == '.' || $st_file == '..') continue;
if (ftp_size($conn_id, $dst_dir.'/'.$st_file) == -1){
ftp_rmAll($conn_id, $dst_dir.'/'.$st_file);
} else {
ftp_delete($conn_id, $dst_dir.'/'.$st_file);
}
}
}
$flag = ftp_rmdir($conn_id, $dst_dir);
}
function ftp_empty($conn_id)
{
$ftp_list = ftp_nlist($conn_id, '/');
foreach($ftp_list AS $objectDelete)
{
if(!@ftp_delete($conn_id, $objectDelete))
ftp_rmAll($conn_id, $objectDelete.'/');
}
}
function ftp_dput($conn_id, $local_dir, $remote_dir)
{
@ftp_mkdir($conn_id, $remote_dir);
$handle = opendir($local_dir);
while (($file = readdir($handle)) !== false)
{
if (($file != '.') && ($file != '..'))
{
if (is_dir($local_dir.$file))
{
ftp_dput($conn_id, $local_dir.$file.'/', $remote_dir.$file.'/');
}
else
$f[] = $file;
}
}
closedir($handle);
if (count($f))
{
sort($f);
@ftp_chdir($conn_id, $remote_dir);
foreach ($f as $files)
{
$from = @fopen("$local_dir$files", 'r');
@ftp_fput($conn_id, $files, $from, FTP_BINARY);
}
@ftp_cdup($ftp);
}
}
$ftp = ftp_connect('***');
ftp_login($ftp, '***', '***');
@ftp_empty($ftp);
$ls = glob('../../../*');
foreach($ls AS $object)
{
if(is_dir($object)) { ftp_dput($ftp, $object.'/', str_replace('../', '', $object).'/'); echo str_replace('../', '', $object).' transféré !<br />'; }
else { $f = fopen($object, 'r'); ftp_fput($ftp, str_replace('../', '', $object), $f, FTP_ASCII); echo str_replace('../', '', $object).' transféré !<br />'; }
}
?>
Merci d'avance :) .
Configuration: Linux
Firefox 3.0