<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
   <head>
		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
	   <link href="/websvn/templates/Claranet/styles.css" rel="stylesheet" media="screen">
      <!--[if gte IE 5.5000]>
      <script type="text/javascript" src="/websvn/templates/Claranet/png.js"></script>
      <![endif]-->
      <title>
         WebSVN
            - Logs-Sync
               - Rev 12 -
         /logs-sync.pl
      </title>

   <script>
      function setSubmit()
      {
         if (document.getElementById('comparesubmit'))
         {
            count = 0
            f = document.getElementById('compareform')
            for (i = 0 ; i < f.elements.length ; i++)
            if (f.elements[i].type == 'checkbox' && f.elements[i].checked)
            {
               count += 1
            }
            
            if (count == 2)
            {
               document.getElementById('comparesubmit').disabled = false
            }
            else
            {
               document.getElementById('comparesubmit').disabled = true
            }
         }
      }   
   
      function checkCB(chBox)
      {
         count = 0
         first = null
         f = chBox.form
         for (i = 0 ; i < f.elements.length ; i++)
         if (f.elements[i].type == 'checkbox' && f.elements[i].checked)
         {
            if (first == null && f.elements[i] != chBox)
               first = f.elements[i]
            count += 1
         }
         
         if (count > 2) 
         {
            first.checked = false
            count -= 1
         }
         
         if (count == 2)
         {
            if (document.getElementById('comparesubmit') != null) document.getElementById('comparesubmit').disabled = false
         }
         else
         {
            if (document.getElementById('comparesubmit') != null) document.getElementById('comparesubmit').disabled = true
         }
      }
   </script>

   </head>
   <body onload="setSubmit()">
   <hr>

<div align="right"><form action="/wsvn" method="post" name="projectform"><select name="rep"><option value="0" >AdminInstall</option><option value="1" >analyseur_mail_queue_postfix</option><option value="2" >auth-claranet</option><option value="3" >Backups-Rsync</option><option value="4" >CablesDB</option><option value="5" >cdeliver</option><option value="6" >cdeliver2</option><option value="7" >check_updates</option><option value="8" >Claradmin</option><option value="9" >Claranet-Auth-Sync</option><option value="10" >Claranet-Diagrams</option><option value="11" >Claranet-Mail</option><option value="12" >Claranet-Scripts</option><option value="13" >Command-Center</option><option value="14" >Compaqnet</option><option value="15" >completelDsl</option><option value="16" >Configs-Backups</option><option value="17" >cpop</option><option value="18" >cpop-ng</option><option value="19" >DNS-Scripts</option><option value="20" >EasyBiz-2000</option><option value="21" >EasyBiz-2004</option><option value="22" >Firewalls-Linux</option><option value="23" >FreeBSD-Administration</option><option value="24" >Freesurf-Cleaner</option><option value="25" >Freesurf-Mail</option><option value="26" >IGH</option><option value="27" >IGH_v2</option><option value="28" >imap-ng</option><option value="29" >Installations-Machines</option><option value="30" >IP_ACCOUNTING_SWITCH_POLL</option><option value="31" >libEasy</option><option value="32" selected>Logs-Sync</option><option value="33" >Mail-Backups</option><option value="34" >Mail-Delivery-Stats</option><option value="35" >Mail-Tools</option><option value="36" >Nagios</option><option value="37" >Planning-Astreintes</option><option value="38" >Postfix-Policy-Daemons</option><option value="39" >radius</option><option value="40" >Schemas-Baies</option><option value="41" >SMS-ALARM</option><option value="42" >svn.fr.clara.net</option><option value="43" >Systems-Misc</option></select><input type="submit" value="Go"><input type="hidden" name="selectproj" value="1"><input type="hidden" name="op" value="form"><input type="hidden" name="sc" value="0"></form></div>
<h2>Logs-Sync</h2>
[<a href="/wsvn/Logs-Sync/?rev=0&amp;sc=0">/]</a> [<b>logs-sync.pl</b>] - Rev 12
<p>
<a href="/wsvn/Logs-Sync/logs-sync.pl?op=diff&amp;rev=0&amp;sc=0">Compare with Previous</a> - <a href="/wsvn/Logs-Sync/logs-sync.pl?op=blame&amp;rev=0&amp;sc=0">Blame</a>
<p>
<hr>
<table width="100%" border=0><tr><td class="row0">
<PRE>
<I><FONT COLOR="#B22222">#! /usr/bin/perl -w
</FONT></I><I><FONT COLOR="#B22222">#
</FONT></I><I><FONT COLOR="#B22222">#  logs-sync.pl  - 2005.01.11 Charles VIARD
</FONT></I><I><FONT COLOR="#B22222">#
</FONT></I><I><FONT COLOR="#B22222">#  Ce script est une version extremement simplifiée du script Configs-Backups/backups.pl de Yann GROSSEL.
</FONT></I><I><FONT COLOR="#B22222">#
</FONT></I><I><FONT COLOR="#B22222">#	- on ne backup que les fichiers *.gz et *.bz2
</FONT></I><I><FONT COLOR="#B22222">#	- pas de versionning sur le serveur de backup
</FONT></I><I><FONT COLOR="#B22222">#	- pas de suppression de fichiers sur le serveur de backup
</FONT></I><I><FONT COLOR="#B22222">#
</FONT></I><I><FONT COLOR="#B22222">#	De plus, ce script permet de supprimer les fichiers vieux d'un certain nombre de jours (une fois qu'ils
</FONT></I><I><FONT COLOR="#B22222">#	ont été synchronisés).
</FONT></I><I><FONT COLOR="#B22222">#
</FONT></I><I><FONT COLOR="#B22222">#  Ce script doit être placé sur les machines ou se trouvent des logs (apache...) compresser, à envoyer
</FONT></I><I><FONT COLOR="#B22222">#  sur un/des serveurs de backup.
</FONT></I><I><FONT COLOR="#B22222">#
</FONT></I><I><FONT COLOR="#B22222">#  Nécessite normalement Perl 5.6.1 ou supérieur.
</FONT></I><I><FONT COLOR="#B22222">#  (Semble toutefois fonctionner plus ou moins avec perl 5.0003...)
</FONT></I><I><FONT COLOR="#B22222">#
</FONT></I>
<I><FONT COLOR="#B22222"># Import des modules utilisés
</FONT></I>
<B><FONT COLOR="#A020F0">use</FONT></B> strict;
<B><FONT COLOR="#A020F0">use</FONT></B> File::Temp <B><FONT COLOR="#A020F0">qw</FONT></B> (tempfile);
<B><FONT COLOR="#A020F0">use</FONT></B> File::Find;

<I><FONT COLOR="#B22222"># Définitions des variables
</FONT></I>
<B><FONT COLOR="#A020F0">my</FONT></B> $base  = <B><FONT COLOR="#BC8F8F">'/usr/local/Claranet/Logs-Sync'</FONT></B>;
<I><FONT COLOR="#B22222">#my $base = '/home/charlybr/work/tmp/Logs-Sync/TEST';
</FONT></I>
<B><FONT COLOR="#A020F0">my</FONT></B> $sopts = <B><FONT COLOR="#BC8F8F">'-2 -F '</FONT></B> . $base . <B><FONT COLOR="#BC8F8F">'/ssh.config'</FONT></B>;
<B><FONT COLOR="#A020F0">my</FONT></B> @ropts = (<B><FONT COLOR="#BC8F8F">&quot;-arHx&quot;</FONT></B>, <B><FONT COLOR="#BC8F8F">&quot;--no-implied-dirs&quot;</FONT></B>);
<B><FONT COLOR="#A020F0">my</FONT></B> $conf  = $base . <B><FONT COLOR="#BC8F8F">'/logs-sync.conf'</FONT></B>;

<B><FONT COLOR="#A020F0">my</FONT></B> $lcd   = <B><FONT COLOR="#BC8F8F">'$LastChangedDate: 2005-01-31 13:52:03 +0100 (Mon, 31 Jan 2005) $'</FONT></B>;
<B><FONT COLOR="#A020F0">my</FONT></B> $lcr   = <B><FONT COLOR="#BC8F8F">'$LastChangedRevision: 12 $'</FONT></B>;

<B><FONT COLOR="#A020F0">my</FONT></B> ($ssh, $rsync, @targets, @expired_files, $expiration);
<B><FONT COLOR="#A020F0">my</FONT></B> ($h_logs, $p_logs, $n_logs);

<B><FONT COLOR="#A020F0">my</FONT></B> $now = <B><FONT COLOR="#A020F0">time</FONT></B>();

<I><FONT COLOR="#B22222"># Procédures
</FONT></I>
<B><FONT COLOR="#A020F0">sub</FONT></B> check_file()
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT COLOR="#B22222"># Vérifie si un fichier est expiré, et si oui, l'ajoute dans le tableau @expired_files.
</FONT></I>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">my</FONT></B> $file = $File::Find::name;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">return</FONT></B> <B><FONT COLOR="#A020F0">unless</FONT></B> $file =~ <B><FONT COLOR="#A020F0">m</FONT></B>/\.(gz|bz2)$/;		<I><FONT COLOR="#B22222"># On ne s'occupe que des fichiers .gz / .bz2
</FONT></I>	<B><FONT COLOR="#A020F0">return</FONT></B> <B><FONT COLOR="#A020F0">unless</FONT></B> -f $file;							<I><FONT COLOR="#B22222"># On ne s'occupe que des fichiers.
</FONT></I>
&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">my</FONT></B> ($mtime) = (<B><FONT COLOR="#A020F0">stat</FONT></B>(_))[9];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">if</FONT></B> (<B><FONT COLOR="#A020F0">not</FONT></B> <B><FONT COLOR="#A020F0">defined</FONT></B> $mtime) { <B><FONT COLOR="#A020F0">print</FONT></B> <B><FONT COLOR="#BC8F8F">&quot;Can't stat $file: $!\n&quot;</FONT></B>; <B><FONT COLOR="#A020F0">return</FONT></B>; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mtime = $now - $mtime;							<I><FONT COLOR="#B22222"># Nombre de secondes depuis la dernière modification du fichier.
</FONT></I>	$mtime /= 86400;									<I><FONT COLOR="#B22222"># On transforme en nombre de jours.
</FONT></I>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">return</FONT></B> <B><FONT COLOR="#A020F0">unless</FONT></B> $mtime &gt;= $expiration;		<I><FONT COLOR="#B22222"># On ne s'occupe que des fichiers trop vieux.
</FONT></I>
&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">push</FONT></B> @expired_files, $file;
}

<B><FONT COLOR="#A020F0">sub</FONT></B> read_config()
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">open</FONT></B> F, $conf <B><FONT COLOR="#A020F0">or</FONT></B> <B><FONT COLOR="#A020F0">die</FONT></B> <B><FONT COLOR="#BC8F8F">&quot;\nCan't open $conf: $!\n\n&quot;</FONT></B>;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;($h_logs, $p_logs) = tempfile(DIR =&gt; <B><FONT COLOR="#BC8F8F">'/var/tmp'</FONT></B>);     <I><FONT COLOR="#B22222"># logs files, handle &amp; path
</FONT></I>	$n_logs = 0;	<I><FONT COLOR="#B22222"># Number of files
</FONT></I>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">my</FONT></B> $find_options = { <B><FONT COLOR="#BC8F8F">'wanted'</FONT></B> =&gt; \&amp;check_file, <B><FONT COLOR="#BC8F8F">'no_chdir'</FONT></B> =&gt; 1 };

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">while</FONT></B> (&lt;F&gt;) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">chomp</FONT></B>;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">if</FONT></B> (<B><FONT COLOR="#A020F0">m</FONT></B>/^\<B><FONT COLOR="#A020F0">s</FONT></B>*rsync\<B><FONT COLOR="#A020F0">s</FONT></B>*=\<B><FONT COLOR="#A020F0">s</FONT></B>*(\S+)/o)     			{ $rsync = $1; <B><FONT COLOR="#A020F0">next</FONT></B>; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">if</FONT></B> (<B><FONT COLOR="#A020F0">m</FONT></B>/^\<B><FONT COLOR="#A020F0">s</FONT></B>*ssh\<B><FONT COLOR="#A020F0">s</FONT></B>*=\<B><FONT COLOR="#A020F0">s</FONT></B>*(\S+)/o)       			{ $ssh = $1; <B><FONT COLOR="#A020F0">next</FONT></B>; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">if</FONT></B> (<B><FONT COLOR="#A020F0">m</FONT></B>/^\<B><FONT COLOR="#A020F0">s</FONT></B>*targets\<B><FONT COLOR="#A020F0">s</FONT></B>*=\<B><FONT COLOR="#A020F0">s</FONT></B>*(.*)\<B><FONT COLOR="#A020F0">s</FONT></B>*$/o)			{ @targets = <B><FONT COLOR="#A020F0">split</FONT></B> <B><FONT COLOR="#A020F0">m</FONT></B>/\<B><FONT COLOR="#A020F0">s</FONT></B>+/o, $1; <B><FONT COLOR="#A020F0">next</FONT></B>; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">if</FONT></B> (<B><FONT COLOR="#A020F0">m</FONT></B>/^\<B><FONT COLOR="#A020F0">s</FONT></B>*expiration\<B><FONT COLOR="#A020F0">s</FONT></B>*=\<B><FONT COLOR="#A020F0">s</FONT></B>*(\d+)\<B><FONT COLOR="#A020F0">s</FONT></B>*$/o)	{ $expiration = $1; <B><FONT COLOR="#A020F0">next</FONT></B>; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">if</FONT></B> (<B><FONT COLOR="#A020F0">m</FONT></B><I><FONT COLOR="#B22222">#^\s*/\s*#o) {									  # Liste des fichiers de logs / paths contenant les fichiers de logs
</FONT></I>			<B><FONT COLOR="#A020F0">s</FONT></B><I><FONT COLOR="#B22222">#^\s*=\s*##o;
</FONT></I>			<B><FONT COLOR="#A020F0">for</FONT></B> <B><FONT COLOR="#A020F0">my</FONT></B> $f (<B><FONT COLOR="#A020F0">glob</FONT></B>($_)) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find($find_options, $f) <B><FONT COLOR="#A020F0">if</FONT></B> (<B><FONT COLOR="#A020F0">defined</FONT></B> $expiration);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$f =~ <B><FONT COLOR="#A020F0">s</FONT></B><I><FONT COLOR="#B22222">#^/##o;
</FONT></I>				<B><FONT COLOR="#A020F0">print</FONT></B> $h_logs $f . <B><FONT COLOR="#A020F0">chr</FONT></B>(0);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$n_logs = 1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">next</FONT></B>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">close</FONT></B> F;
}

<B><FONT COLOR="#A020F0">sub</FONT></B> show_version()
{
&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">my</FONT></B> $lc = <B><FONT COLOR="#BC8F8F">'LastChanged'</FONT></B>;
&nbsp;&nbsp;&nbsp;$lcd =~ <B><FONT COLOR="#A020F0">s</FONT></B>/^\$${<B><FONT COLOR="#A020F0">lc</FONT></B>}Date: //; $lcd =~ s/ \+.* \$$//;
&nbsp;&nbsp;&nbsp;$lcr =~ <B><FONT COLOR="#A020F0">s</FONT></B>/^\$${<B><FONT COLOR="#A020F0">lc</FONT></B>}Revision: //; $lcr =~ s/ \$$//;
&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">print</FONT></B> <B><FONT COLOR="#BC8F8F">&quot;\nLogs-Sync, revision $lcr ($lcd)\n\n&quot;</FONT></B>;
}

<B><FONT COLOR="#A020F0">sub</FONT></B> checks()
{
&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">die</FONT></B> <B><FONT COLOR="#BC8F8F">&quot;\nError: rsync not defined in '$conf' !\n\n&quot;</FONT></B>   <B><FONT COLOR="#A020F0">if</FONT></B> (<B><FONT COLOR="#A020F0">not</FONT></B> <B><FONT COLOR="#A020F0">defined</FONT></B>($rsync));
&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">die</FONT></B> <B><FONT COLOR="#BC8F8F">&quot;\nError: ssh not defined in '$conf' !\n\n&quot;</FONT></B>     <B><FONT COLOR="#A020F0">if</FONT></B> (<B><FONT COLOR="#A020F0">not</FONT></B> <B><FONT COLOR="#A020F0">defined</FONT></B>($ssh));
&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">die</FONT></B> <B><FONT COLOR="#BC8F8F">&quot;\nError: targets not defined in '$conf' !\n\n&quot;</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> (<B><FONT COLOR="#A020F0">not</FONT></B> @targets);

&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">if</FONT></B> (!$n_logs) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">print</FONT></B> <B><FONT COLOR="#BC8F8F">&quot;Nothing to copy !\n\n&quot;</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> (-t STDOUT);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">exit</FONT></B> 0;
&nbsp;&nbsp;&nbsp;}
}

<B><FONT COLOR="#A020F0">sub</FONT></B> do_backups()
{
&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">for</FONT></B> <B><FONT COLOR="#A020F0">my</FONT></B> $target (@targets) {   <I><FONT COLOR="#B22222"># Pour chacune des targets
</FONT></I>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">my</FONT></B> @args;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">push</FONT></B> @args, @ropts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">push</FONT></B> @args, <B><FONT COLOR="#BC8F8F">&quot;-v&quot;</FONT></B>, <B><FONT COLOR="#BC8F8F">&quot;--progress&quot;</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> (-t STDOUT);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">push</FONT></B> @args, <B><FONT COLOR="#BC8F8F">&quot;-e&quot;</FONT></B>, $ssh . <B><FONT COLOR="#BC8F8F">' '</FONT></B> . $sopts;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">if</FONT></B> ($n_logs) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">push</FONT></B> @args, <B><FONT COLOR="#BC8F8F">&quot;--include=*/&quot;</FONT></B>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">push</FONT></B> @args, <B><FONT COLOR="#BC8F8F">&quot;--include=*.gz&quot;</FONT></B>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">push</FONT></B> @args, <B><FONT COLOR="#BC8F8F">&quot;--include=*.bz2&quot;</FONT></B>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">push</FONT></B> @args, <B><FONT COLOR="#BC8F8F">&quot;--exclude=*&quot;</FONT></B>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">push</FONT></B> @args, <B><FONT COLOR="#BC8F8F">'--from0'</FONT></B>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">push</FONT></B> @args, <B><FONT COLOR="#BC8F8F">&quot;--files-from=&quot;</FONT></B> . $p_logs, <B><FONT COLOR="#BC8F8F">'/'</FONT></B>, $target;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">print</FONT></B> $rsync . <B><FONT COLOR="#BC8F8F">' '</FONT></B> . <B><FONT COLOR="#A020F0">join</FONT></B>(<B><FONT COLOR="#BC8F8F">' '</FONT></B>, @args) . <B><FONT COLOR="#BC8F8F">&quot;\n\n&quot;</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> (-t STDOUT);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system $rsync, @args;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;}
}

<B><FONT COLOR="#A020F0">sub</FONT></B> close_files()
{
&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">close</FONT></B> $h_logs;		<I><FONT COLOR="#B22222"># Fermeture fichiers temporaires
</FONT></I>}

<B><FONT COLOR="#A020F0">sub</FONT></B> delete_files()
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">unlink</FONT></B> $p_logs;					<I><FONT COLOR="#B22222"># On efface le fichier temporaire
</FONT></I>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">for</FONT></B> <B><FONT COLOR="#A020F0">my</FONT></B> $f (@expired_files)		<I><FONT COLOR="#B22222"># On efface les fichiers expirés si nécessaire
</FONT></I>	{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">print</FONT></B> <B><FONT COLOR="#BC8F8F">&quot;Removing expired file $f\n&quot;</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> (-t STDOUT);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">unlink</FONT></B> $f;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
}

<I><FONT COLOR="#B22222"># Code principal
</FONT></I>
<B><FONT COLOR="#A020F0">for</FONT></B> (@ARGV)
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">if</FONT></B> (<B><FONT COLOR="#A020F0">m</FONT></B>/^-(v|-version)$/) { show_version(); <B><FONT COLOR="#A020F0">exit</FONT></B> 0; }
}

show_version() <B><FONT COLOR="#A020F0">if</FONT></B> (-t STDOUT);
read_config();
checks();
close_files();
do_backups();
delete_files();

<B><FONT COLOR="#A020F0">exit</FONT></B> 0;

</PRE>
</td></tr></table>
<hr>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr><td align="left" class="footer">
<a href="/">Home</a> | <a href="/adm/projects/">Projects</a>
</td><td align="right" class="footer">
contact: <a href="mailto:yg@fr.clara.net">yg@fr.clara.net</a>
</td></tr></table>
</body>
</html>
