<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>Como compactar arquivos em um servidor Linux por FTP?</title>
        <description>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(&amp;quot;tar -zcvf $X.tar.gz $X.*&amp;quot;) no servidor, aparece a seguinte mensagem:

&amp;quot;Warning: ftp_exec(): 'SITE EXEC' not understood in (arquivo .php) linha (x)&amp;quot;

O que fazer?


O meu código está como segue:

&amp;lt;?
(...)
//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 &amp;quot;- Status da conexão FTP: &amp;quot;.
       &amp;quot;Não foi possível conectar ao servidor de FTP da máquina &amp;quot;.$const_ftp_svr.&amp;quot;\n&amp;quot;;

  return 0;
}

else{
  echo &amp;quot;- Status da conexão FTP: &amp;quot;.
       &amp;quot;Conexão FTP com a máguina &amp;quot;.$const_ftp_svr.&amp;quot; realizada com sucesso!\n&amp;quot;;
  
  //efetua o login
  $login_result = ftp_login($connec_id, $const_login_svr, $const_senha_svr);     

  //caso não tenha logado...
  if(!$login_result){
    echo &amp;quot;- Status do login: Erro ao efetuar login!\n&amp;quot;;
				
    //fechando a conexao FTP
    ftp_close($connec_id);
  		
    return 0;
  }

  else{			
    echo &amp;quot;- Status do login: Login efetuado com sucesso!\n&amp;quot;;
    				
    //trocando o diretório atual
    ftp_chdir($connec_id, &amp;quot;/envios&amp;quot;);				
  											
    $X = 'envio2';							
    			
    //compactando para .tar.gz
    $comand_compac  = &amp;quot;tar -zcvf $X.tar.gz $X.*&amp;quot;;			
				
    if (!ftp_exec($connec_id, $comand_compac)){
      echo &amp;quot;+ Erro ao efetuar o comando no Servidor: $comand_compac\n&amp;quot;;
      echo &amp;quot;- Status da Compactação: A compactação falhou!\n&amp;quot;;

      //fechando a conexao FTP
      ftp_close($connec_id);

      return 0;
    }
    else{
      (...)
    }
    (...)
  }
  (...)
}
(...)
?&amp;gt;</description>
        <link>http://phpbrasil.com/phorum/read.php?8,169612,169612#msg-169612</link>
        <lastBuildDate>Sat, 25 May 2013 15:22:20 -0500</lastBuildDate>
        <generator>Phorum 5.2.10</generator>
        <item>
            <guid>http://phpbrasil.com/phorum/read.php?8,169612,169659#msg-169659</guid>
            <title>Re: Como compactar arquivos em um servidor Linux por FTP?</title>
            <link>http://phpbrasil.com/phorum/read.php?8,169612,169659#msg-169659</link>
            <description><![CDATA[sim. Ela não está disponível por padrão. Teria que instalar o suporte a elas.<br />
Além disso, o servidor remoto deve estar disponivel para conexão ssh.<br />
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.]]></description>
            <dc:creator>Marcos Regis</dc:creator>
            <category>PHP em UNIXes (Linux e etc)</category>
            <pubDate>Thu, 11 Mar 2010 09:04:24 -0600</pubDate>
        </item>
        <item>
            <guid>http://phpbrasil.com/phorum/read.php?8,169612,169651#msg-169651</guid>
            <title>Re: Como compactar arquivos em um servidor Linux por FTP?</title>
            <link>http://phpbrasil.com/phorum/read.php?8,169612,169651#msg-169651</link>
            <description><![CDATA[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?]]></description>
            <dc:creator>Thiago Bittencourt</dc:creator>
            <category>PHP em UNIXes (Linux e etc)</category>
            <pubDate>Thu, 11 Mar 2010 06:41:17 -0600</pubDate>
        </item>
        <item>
            <guid>http://phpbrasil.com/phorum/read.php?8,169612,169633#msg-169633</guid>
            <title>Re: Como compactar arquivos em um servidor Linux por FTP?</title>
            <link>http://phpbrasil.com/phorum/read.php?8,169612,169633#msg-169633</link>
            <description><![CDATA[Dê uma lida nisso primeiro. De repente também não é viável.<br />
http://br.php.net/manual/pt_BR/book.ssh2.php]]></description>
            <dc:creator>Marcos Regis</dc:creator>
            <category>PHP em UNIXes (Linux e etc)</category>
            <pubDate>Wed, 10 Mar 2010 11:30:38 -0600</pubDate>
        </item>
        <item>
            <guid>http://phpbrasil.com/phorum/read.php?8,169612,169630#msg-169630</guid>
            <title>Re: Como compactar arquivos em um servidor Linux por FTP?</title>
            <link>http://phpbrasil.com/phorum/read.php?8,169612,169630#msg-169630</link>
            <description><![CDATA[Como eu faria isso então no meu código?<br />
<br />
seria:<br />
<br />
system(&quot;ssh (user)@(ip)&quot;);<br />
<br />
(...)?]]></description>
            <dc:creator>Thiago Bittencourt</dc:creator>
            <category>PHP em UNIXes (Linux e etc)</category>
            <pubDate>Wed, 10 Mar 2010 10:55:47 -0600</pubDate>
        </item>
        <item>
            <guid>http://phpbrasil.com/phorum/read.php?8,169612,169624#msg-169624</guid>
            <title>Re: Como compactar arquivos em um servidor Linux por FTP?</title>
            <link>http://phpbrasil.com/phorum/read.php?8,169612,169624#msg-169624</link>
            <description><![CDATA[Por ftp não vai funcionar. Teria que ser por ssh.]]></description>
            <dc:creator>Marcos Regis</dc:creator>
            <category>PHP em UNIXes (Linux e etc)</category>
            <pubDate>Wed, 10 Mar 2010 09:02:33 -0600</pubDate>
        </item>
        <item>
            <guid>http://phpbrasil.com/phorum/read.php?8,169612,169612#msg-169612</guid>
            <title>Como compactar arquivos em um servidor Linux por FTP?</title>
            <link>http://phpbrasil.com/phorum/read.php?8,169612,169612#msg-169612</link>
            <description><![CDATA[Primeiramente bom dia.<br />
<br />
<br />
O meu problema é o seguinte:<br />
<br />
Em meu script php eu preciso me conectar com uma máquina, compactar 3 arquivos em .tar.gz, e fazer o upload dos mesmos.<br />
<br />
Porem, estou tendo problema ao fazer essa compactação.<br />
<br />
Quando executo o comando ftp_exec(&quot;tar -zcvf $X.tar.gz $X.*&quot;) no servidor, aparece a seguinte mensagem:<br />
<br />
&quot;Warning: ftp_exec(): 'SITE EXEC' not understood in (arquivo .php) linha (x)&quot;<br />
<br />
O que fazer?<br />
<br />
<br />
O meu código está como segue:<br />
<br />
&lt;?<br />
(...)<br />
//o time default é de 30 segundos. setando para 0 fica um tempo indefinido<br />
set_time_limit(0);<br />
  <br />
//efetua a conexão<br />
$connec_id = ftp_connect($const_ftp_svr);  <br />
	<br />
//caso ocorra algum erro de conexao...<br />
if(!$connec_id){<br />
  echo &quot;- Status da conexão FTP: &quot;.<br />
       &quot;Não foi possível conectar ao servidor de FTP da máquina &quot;.$const_ftp_svr.&quot;\n&quot;;<br />
<br />
  return 0;<br />
}<br />
<br />
else{<br />
  echo &quot;- Status da conexão FTP: &quot;.<br />
       &quot;Conexão FTP com a máguina &quot;.$const_ftp_svr.&quot; realizada com sucesso!\n&quot;;<br />
  <br />
  //efetua o login<br />
  $login_result = ftp_login($connec_id, $const_login_svr, $const_senha_svr);     <br />
<br />
  //caso não tenha logado...<br />
  if(!$login_result){<br />
    echo &quot;- Status do login: Erro ao efetuar login!\n&quot;;<br />
				<br />
    //fechando a conexao FTP<br />
    ftp_close($connec_id);<br />
  		<br />
    return 0;<br />
  }<br />
<br />
  else{			<br />
    echo &quot;- Status do login: Login efetuado com sucesso!\n&quot;;<br />
    				<br />
    //trocando o diretório atual<br />
    ftp_chdir($connec_id, &quot;/envios&quot;);				<br />
  											<br />
    $X = 'envio2';							<br />
    			<br />
    //compactando para .tar.gz<br />
    $comand_compac  = &quot;tar -zcvf $X.tar.gz $X.*&quot;;			<br />
				<br />
    if (!ftp_exec($connec_id, $comand_compac)){<br />
      echo &quot;+ Erro ao efetuar o comando no Servidor: $comand_compac\n&quot;;<br />
      echo &quot;- Status da Compactação: A compactação falhou!\n&quot;;<br />
<br />
      //fechando a conexao FTP<br />
      ftp_close($connec_id);<br />
<br />
      return 0;<br />
    }<br />
    else{<br />
      (...)<br />
    }<br />
    (...)<br />
  }<br />
  (...)<br />
}<br />
(...)<br />
?&gt;]]></description>
            <dc:creator>Thiago Bittencourt</dc:creator>
            <category>PHP em UNIXes (Linux e etc)</category>
            <pubDate>Wed, 10 Mar 2010 06:36:22 -0600</pubDate>
        </item>
    </channel>
</rss>
