Thiago Bittencourt
Como compactar arquivos em um servidor Linux por FTP?
10 de March de 2010 às 12:36PM
Primeiramente bom dia.


O meu problema é o seguinte:

Em meu script php eu preciso me conectar com uma máquina, compactar 3 arquivos em .tar.gz, e fazer o upload dos mesmos.

Porem, estou tendo problema ao fazer essa compactação.

Quando executo o comando ftp_exec("tar -zcvf $X.tar.gz $X.*") no servidor, aparece a seguinte mensagem:

"Warning: ftp_exec(): 'SITE EXEC' not understood in (arquivo .php) linha (x)"

O que fazer?


O meu código está como segue:

<?
(...)
//o time default é de 30 segundos. setando para 0 fica um tempo indefinido
set_time_limit(0);

//efetua a conexão
$connec_id = ftp_connect($const_ftp_svr);

//caso ocorra algum erro de conexao...
if(!$connec_id){
echo "- Status da conexão FTP: ".
"Não foi possível conectar ao servidor de FTP da máquina ".$const_ftp_svr."\n";

return 0;
}

else{
echo "- Status da conexão FTP: ".
"Conexão FTP com a máguina ".$const_ftp_svr." realizada com sucesso!\n";

//efetua o login
$login_result = ftp_login($connec_id, $const_login_svr, $const_senha_svr);

//caso não tenha logado...
if(!$login_result){
echo "- Status do login: Erro ao efetuar login!\n";

//fechando a conexao FTP
ftp_close($connec_id);

return 0;
}

else{
echo "- Status do login: Login efetuado com sucesso!\n";

//trocando o diretório atual
ftp_chdir($connec_id, "/envios");

$X = 'envio2';

//compactando para .tar.gz
$comand_compac = "tar -zcvf $X.tar.gz $X.*";

if (!ftp_exec($connec_id, $comand_compac)){
echo "+ Erro ao efetuar o comando no Servidor: $comand_compac\n";
echo "- Status da Compactação: A compactação falhou!\n";

//fechando a conexao FTP
ftp_close($connec_id);

return 0;
}
else{
(...)
}
(...)
}
(...)
}
(...)
?>
Marcos Regis
Re: Como compactar arquivos em um servidor Linux por FTP?
10 de March de 2010 às 03:02PM
Por ftp não vai funcionar. Teria que ser por ssh.
Thiago Bittencourt
Re: Como compactar arquivos em um servidor Linux por FTP?
10 de March de 2010 às 04:55PM
Como eu faria isso então no meu código?

seria:

system("ssh (user)@(ip)");

(...)?
Marcos Regis
Re: Como compactar arquivos em um servidor Linux por FTP?
10 de March de 2010 às 05:30PM
Dê uma lida nisso primeiro. De repente também não é viável.
http://br.php.net/manual/pt_BR/book.ssh2.php
Thiago Bittencourt
Re: Como compactar arquivos em um servidor Linux por FTP?
11 de March de 2010 às 12:41PM
Acredito que essas funções resolvam meu problema. Porem, quando a utilizo em meu script, o PHP não as reconhece. Seria falta da biblioteca? Se sim, onde consigo?
Marcos Regis
Re: Como compactar arquivos em um servidor Linux por FTP?
11 de March de 2010 às 03:04PM
sim. Ela não está disponível por padrão. Teria que instalar o suporte a elas.
Além disso, o servidor remoto deve estar disponivel para conexão ssh.
Se nenhuma das opções for possível, não tem jeito de fazer via PHP. O mais indicado nesse cado é usar uma tarefa agendada no servidor remoto que faça a compactação de tempos em tempos.
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.