Пост
Hello :)

PHP

-

Выкачиваем файлы на FTP сервер, с помощью PHP

Сегодня, друг, обратился с проблемой, перенести файлы с одного хоста на другой, выкачивать вручную и перезаливать, очень нудно. Было принято решение, написать скрипт, который пробежится по всем папкам сайта, и перезальёт их на удалённый FTP...

<?php
 
@set_time_limit(0);
@ini_set("display_errors","0");
@ignore_user_abort(1);
 
$sdelete = 1; // Удалить скрипт после завершения (1|0)
$ftp_server = "XXX.XXX.XXX.XXX"; // IP FTP Сервера
$ftp_login = "[email protected]"; // FTP Логин
$ftp_pass = "YieyCnfklsjfmfi"; // FTP Пароль
$ftp_port = 21; // FTP Порт
$ftp_timeout = 100; // Таймаут
$pause = 0;
$l_folder = '/home/kiwi/project/kiwi.kz'; // Директория откуда выкачивать
$r_folder = '/root/dumps/kz/kiwikz'; // ФТП директория куда закачивать
 
if(!function_exists('scandir')){
function scandir($d ,$s=0){
$dh = opendir($d);
while (false !== ($f = readdir($dh)))
$fs[] = $f;
$s?sort($fs):rsort($fs);
return $fs;
}
}
 
function fold($rootDir, $allData=array()) {
$invisibleFileNames = array(".", "..");
$dirContent = scandir($rootDir);
foreach($dirContent as $key => $content) {
$path = $rootDir.'/'.$content;
if(!in_array($content, $invisibleFileNames)) {
if(is_file($path) && is_readable($path)) {
preg_match('|/(.*)/|',$path,$res);
$allData[0][] = $path;//files
$allData[1][] = $res[0];//folders
}elseif(is_dir($path) && is_readable($path)) {
$allData = fold($path, $allData);
}
}
}
return $allData;
}
 
$b = fold($l_folder);
$count = count($b[1]);
$open = ftp_connect($ftp_server,$ftp_port,$ftp_timeout);
if(!ftp_login($open,$ftp_login,$ftp_pass))
exit("No connect");
 
for ($i=0;$i<$count;$i++) {
if ($b[1][$i] != trim($l_folder) . "/") {
$dir = str_replace(trim($l_folder) . "/", "", $b[1][$i]);
$dir = $r_folder . substr($dir, 0, -1);
ftp_mkdir($open, $dir);
}
}
 
$count1 = count($b[0]);
 
for ($i=0;$i<$count1;$i++) {
$file = $b[0][$i];
$newfile = $r_folder . str_replace($l_folder,"",$file);
$newfile = str_replace("//","/",$newfile);
 
ftp_put($open, $newfile, $file, FTP_BINARY);
sleep($pause);
}
ftp_close($open);
if ($sdelete==1) unlink($_SERVER["SCRIPT_FILENAME"]);
 
echo 'Complete :)';
?>
ftp, php
  • Serj, 25 июня 2012
1 комментарий
Avatar
  1. Закиржан Айсабаев
    Закиржан Айсабаев
    24 июня 2013 14:40
    спасибо большое) я бы так если нету этого кода Хостинг копи--комп копи - хотинг =(

© SERJ.WS 2011-2021