Como compactar arquivos em um servidor Linux por FTP?

Enviada por Thiago Bittencourt 
Thiago Bittencourt
Como compactar arquivos em um servidor Linux por FTP?
10 de March de 2010 às 06:36AM
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 09:02AM
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 10:55AM
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 11:30AM
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 06:41AM
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 09:04AM
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.