← PHP

Download entre sites

Lida 2792 vezes

Offline

tiovivi 
Membro
Mensagens 865 Gostos 0
Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

Andei a googlar acerca de um script/solução para o seguinte.

Queria passar alguns ficheiros do servidor dedicado para uma conta revenda (num outro host obviamente) assim de forma fácil sem ter que fazer download para o meu pc e enviar de novo para a nova conta.

Esperava encontrar um scriptzeco qualquer com um form colocando o url www.site.com/backup.rar copiava para lá o ficheiro... com algum comando wget ou algo assim... mas não encontrei nada  :-?

Alguém sabe de alguma solução para isto?
Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Do servidor dedicado podes enviar por ftp...

Mas queres que ele faça mesmo o quê? são muitos ficheiros? é uma pasta inteira? o que é?

Vou deixar aqui o script para poderes sacar ficheiro a ficheiro (.php incluídos)
Código: [Seleccione]
<?php
/** Get file script V1.0 by anjo2 **/
ini_set('display_errors''1');
error_reporting (E_ALL); // Report everything

function erro($text)
{
echo $text;
exit;
}

$file = (isset($_GET['file']) ? $_GET['file'] : erro("Please indicate the name of file using ?file=name_of_file"));

header('Content-Description: File Transfer');
    
header('Content-Type: application/octet-stream');
    
header('Content-Disposition: attachment; filename='.basename($file));
    
header('Content-Length: ' filesize($file));
    
    if(!
readfile($file'r')) erro("Cannot open the file");
?>
Isso foi +- feito à pressa para um cliente, mas funciona.

Depois é preciso um que liste os ficheiros
Código: [Seleccione]
<?php
/** Get file list script V1.0 by anjo2 **/
ini_set('display_errors''1');
error_reporting (E_ALL); // Report everything

$dir "./";
$subfolders 1// 1 - Search in subfolders | 0 - Only search in folder "$dir"

function list_dir($dir$subfolders)
{
$listdir scandir($dir);
$listdir array_diff($listdir, array("..""."));
foreach($listdir as $file)
{
if(is_dir($file))
{
if($subfolders)
{
$temp list_dir($dir.$file."/"1);
if(is_array($temp))
foreach($temp as $file_dir)
$ret[] = $file_dir;
}
}
else
{
$ret[] = $dir.$file;
}
}
return $ret;
}

$listdir list_dir($dir$subfolders);

foreach($listdir as $file)
echo $file."\n";
?>

E um que vá buscar a lista e os ficheiros um a um.
Código: [Seleccione]
<?php
$stream fopen("http://www.site.com/listfiles.php""r");
    
$contents stream_get_contents($stream);
    
$files explode("\n"$contents);
    foreach(
$files as $file)
    {
$stream fopen("http://www.site.com/getfile.php?file=".$file"r");
$contents stream_get_contents($stream);
$handle fopen($file"w");
fwrite($handle$contents);
fclose($handle);
fclose($stream);
}
?>

Isto é muito estúpido ser assim, nem testei, foi feito à pressa.
Offline

tiovivi 
Membro
Mensagens 865 Gostos 0
Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

Anjo2@

obrigado pela resposta.

Era só para enviar um ficheiro zipado de cada vez, eu tentei aproveitar o teu código mas por alguma razão não consegui por a bombar... via FTP a partir do dedicado é mesmo como? :D
Offline

Diogo Pinto 
Administrador
Mensagens 4400 Gostos 371
Feedback +4

Troféus totais: 37
Trófeus: (Ver todos)
Avatar Search Level 6 Linux User Mobile User Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes

Fazes um backup remoto e envias para um ftp remoto, depois através do cpanel descompactas... Não será a maneira mais fácil?

Não sei se é possível com os teus recursos (nem sei se tens cpanel, etc...)...

Abraço
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Se os arquivos estiverem numa pasta publica, podes simplesmente usar o comando wget, não precisas de transferir por FTP.

Podes criar um arquivo tar, para tal fazes o seguinte...
Código: [Seleccione]
# cd /directorio/para/fazer/backup
# tar ./ -zcvf backup.tar.gz

Depois no outro servidor...
Código: [Seleccione]
# wget http://dominio.com/backup.tar.gz
Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

> ftp servidor.com
Depois ele pede os dados de acesso e podes fazer help para obteres os comandas
basicamente usas os comandos do linux e put para enviar ou mput para enviar vários, e usas um l quando queres fazer algo no servidor onde estás, por exemplo "lcd public_html"

+- isto, o help ajuda-te.



IceBurn, ele disse que o outro servidor era revenda, não tem esse wget.


PS.: Eu não testei todos os scripts que pus, mas acho que estão todos certos, podes até fazer uma lista de ficheiros num array.
Offline

pjssms 
Membro
Mensagens 486 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2 Level 1

Se usares o rsync consegues sincronizar directorias entre servidores.