Skocz do zawartości
kori

kopiować ftp pomiędzy hostingami z reguły nie da się

Polecane posty

między ftpami zdalne przesyłanie jest chyba wyłączane lub niemożliwe

jak najprościej przesłać zawartość jednej strony na drugą

jakieś większe pliki to masakra przenosić, bo upload w domu jest bardzo cienki

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tak, FXP jest bardzo rzadko dostępne. Najwygodniej zalogować się po ssh do nowego dostawcy i skopiować od starego bezpośrednio (używając lftp na przykład). Jeśli nie masz takiej możliwości, to bierzesz małego VPS-a z gigabitowym łączem (RunAbove, Digital Ocean) na kilka godzin i kopiujesz przez tego VPS-a.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

tak dowolny nowy czy stary musiałby dawać dostęp ssh
spojrzałem na fivhost, uti, mintshost i nie dają ssh, wygląda na to że dostęp ssh to żadkość

jakieś inne opcje by przerzucić te dane?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

jakieś inne opcje by przerzucić te dane?

"Jeśli nie masz takiej możliwości, to bierzesz małego VPS-a z gigabitowym łączem (RunAbove, Digital Ocean) na kilka godzin i kopiujesz przez tego VPS-a."

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

a jakieś rozwiązania webowe? skrypt uploadujący z linka

spróbowałem i dópa, po próbie pobrania kolejnych 50KB

"file_get_contents(): stream does not support seeking"

 

Edytowano przez kori (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość l3szcz

Skrypt w PHP + np. pobieranie plików przez crontab (pobiera plik od razu a ty wywalasz zadanie).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

sugerujesz dodanie w cron skryptu pobierającego
a w php napisać tylko dodawanie listy plików do ściągnięcia przez niego?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość l3szcz

Zależy generalnie pod co potrzebujesz. Skrypt PHP możesz wykorzystać i jako skrypt do pobierania i jako skrypt do odczytywania choć nie ukrywam, że lepszym rozwiązaniem byłoby wykorzystanie skryptu BASH z wget, a po stronie PHP odczyt danych czy aby na pewno wszystko się zgrało (file_exists etc.)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

https://code.google.com/p/ftp-php/

 

https://github.com/Nicolab/php-ftp-client

 

http://php.net/manual/pl/ftp.examples-basic.php

<?php
// set up basic connection
$conn_id = ftp_connect($ftp_server); 

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

// check connection
if ((!$conn_id) || (!$login_result)) { 
    echo "FTP connection has failed!";
    echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
    exit; 
} else {
    echo "Connected to $ftp_server, for user $ftp_user_name";
}

// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 

// check upload status
if (!$upload) { 
    echo "FTP upload has failed!";
} else {
    echo "Uploaded $source_file to $ftp_server as $destination_file";
}

// close the FTP stream 
ftp_close($conn_id); 
?>

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

zakladam sobie hosting w fivhost-cpanel za 1zl na rok
po roku kopiuję dane do fivhost-plesk bo jest tańsze od cpanel
prosto zapuścić kopiowanie wszystkich plików z jednego folderu
najlepiej uruchomieniem jednej stronki

@l3szcz skrypty/komendy to wiem że można odpalać z crona, czy inaczej jakoś da się (bez konsoli ssh)?

@GyniO probowalem z php (kod poniżej) i mi nie poszło dzielilem na kawalki

bo zakladam że na raz nie skopiuje się plik powiedzmy 300MB i wyszło "stream does not support seeking"

uważasz że poprzez php+ftp nie będzie takich ograniczeń?

 

<?php
function get_remote_file_size($remote_file){

$url = $remote_file; $headers = get_headers($url, true);
if ( isset($headers['Content-Length']) ) {return $headers['Content-Length'];}else return 'unknown';}

$remote='http://'.$_GET['f']; if($remote=='') {echo "no file to download";exit;}
$local=substr($remote, strrpos($remote,'/')+1,999);
$local_size=@filesize($local); $remote_size=get_remote_file_size($remote);

file_put_contents($local, file_get_contents($remote, false, null,$local_size,500000));

echo "<br>downloading file : $remote ($remote_size) <br>saved file: $local (".filesize($local).")";
?>



 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

ftp_connect
ftp_login

 

a

 

file_get_contents

 

To są różne funkcje każda ma inne zastosowanie, bo jakby działały tak samo to byłaby tylko jedna :P

 

FTP_ są przeznaczone do ftp.

Podałem cały gotowy kod, wystarczyło podać 3 zmiennie i sprawdzić?

 

Nie sprawdzę za Ciebie czy to działa.

 

 

Sprawdź jeszcze tylko czy kod:

 

<?php

echo file_get_content('http://twojadres.pl/plik.rar');

?>

Coś zwróci...

 

Inny sposób:

Sprawdź w phpinfo jaką wagę może maksymalnie przyjąć zapytanie POST ( powinno przynajmniej 2mb ) więc zawsze idzie napisać curl'a, który robi requsta i wysyła plik.

Edytowano przez GyniO (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

I jeżeli jest to duży plik zostanie ubita wysyłka na czasie wykonania skryptu, który bardzo często jest ograniczony do 30 sekund.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

no wiadomo że małych bym nie wysylal, dlatego wlasnie wolalem sekwencyjnie, co zaś nie chce działać (wyżej podany kod)

czas wykonywania skryptu można modyfikować

czy metoda z ftp jest skuteczniejsza od poniższego?

 

$buffer=4095;

$rfile = fopen($remote, 'r');
$lfile = fopen($local, 'w');//basename($url)
$towritecount=0;
while(!feof($rfile))
{
$towritecount+=strlen($towrite);
fwrite($lfile,fread($rfile, $buffer));
}
fclose($rfile); fclose($lfile);

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jak sama nazwa wskazuje ftp to protokół transferu plików i taki powinien być stosowany, który obsługuje wznowienia (http://php.net/manual/en/function.ftp-get.php) w przeciwieństwie do np. używanego przez Ciebie na początku (http://php.net/manual/en/function.file-get-contents.php)

 

Dla fopen może być zablokowane otwieranie plików z url (http://php.net/manual/en/function.fopen.php)

 

Wszystko masz w dokumentacji.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×