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 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.