\documentclass[a4paper,11pt]{report}

	\input{../includes/headers_global.tex}
	
    \def\sitename{Debian GNU/Linux :: Serveur }
	\def\shorttitre{Sauvegarde}
	\def\titre{Serveur de sauvegarde BackupPC}
	\def\autheur{Matthieu Vogelweith}
	\def\subject{Mise en place d'un serveur de sauvegarde sous Debian GNU/Linux}
	\def\keywords{Debian, Linux, Matthieu, Vogelweith, Serveur, Lenny, BackupPC}

	\input{../includes/headers.tex}

\begin{document}

\renewcommand{\bibname}{R\'ef\'erences}

\begin{titlepage}
	\maketitle
\end{titlepage}

\chapter*{Résumé}

	L'objectif de ce document est de détailler l'installation d'un serveur sauvegarde BackupPc \cite{backuppc} sous Debian Lenny \cite{debian}. 

\input{../includes/licence.tex}

\tableofcontents

\chapter{Préparation}

    \section{Pré requis}

Ce document suppose que le serveur est déjà installé avec une Debian Lenny \cite{debian} propre. L'installation et la configuration du système de base sont présentées en détail dans un document dédié à cet effet : \cite{debian_install}.

    \section{Installation}

\vspace{1em}
\begin{lstlisting}
# aptitude install backuppc
\end{lstlisting}
\vspace{1em}

    \section{Configuration d'Apache}

\vspace{1em}
\begin{lstlisting}
\end{lstlisting}
\vspace{1em}

\chapter{Sauvegarde des serveurs Linux}

    \section{Préparation}
 
\vspace{1em}
\begin{lstlisting}
# aptitude install sudo rsync
\end{lstlisting}
\vspace{1em}

Dans /etc/sudoers :

\vspace{1em}
\begin{lstlisting}
backup        ALL=(root) NOPASSWD:/usr/bin/rsync
\end{lstlisting}
\vspace{1em}

\vspace{1em}
\begin{lstlisting}
# chown backup.backup /var/backups
\end{lstlisting}
\vspace{1em}

    \section{Configuration des base}
    
    \section{Sauvegarde des bases de données et annuaires LDAP}

Dans /etc/cron.d/backups:

\vspace{1em}
\begin{lstlisting}
# /etc/cron.d/backups: Backup crontab

# PostgreSQL backup (All)
00 20 * * *    root    [ -x /usr/bin/pg_dumpall ] && mkdir -p /var/backups/postgres && if [ -f /var/backups/postgres/pg_dumpall.0.sql.gz ]; then mv -f /var/backups/postgres/pg_dumpall.0.sql.gz /var/backups/postgres/pg_dumpall.1.sql.gz; fi && su - postgres -c /usr/bin/pg_dumpall | gzip > /var/backups/postgres/pg_dumpall.0.sql.gz

# PostgreSQL backup
30 20 * * *    root    [ -x /usr/bin/pg_dump ] && mkdir -p /var/backups/postgres && for db in `su - postgres -c "psql -lt | grep -v 'template[01]' | cut -d'|' -f 1"`; do if [ -f /var/backups/postgres/pg_dump_$db.0.sql.gz ]; then mv -f /var/backups/postgres/pg_dump_$db.0.sql.gz /var/backups/postgres/pg_dump_$db.1.sql.gz; fi  && su - postgres -c "pg_dump $db" |gzip > /var/backups/postgres/pg_dump_$db.0.sql.gz; done

# MySQL backup (All)
00 21 * * *    root    [ -x /usr/bin/mysqldump ] && mkdir -p /var/backups/mysql && if [ -f /var/backups/mysql/mysqldump_all.0.sql.gz ]; then mv -f /var/backups/mysql/mysqldump_all.0.sql.gz /var/backups/mysql/mysqldump_all.1.sql.gz; fi && /usr/bin/mysqldump --all-databases | gzip > /var/backups/mysql/mysqldump_all.0.sql.gz

# MySQL backup
30 21 * * *    root    [ -x /usr/bin/mysqldump ] && mkdir -p /var/backups/mysql && for db in `/usr/bin/mysql -Bse 'show databases'`; do if [ -f /var/backups/mysql/mysqldump_$db.0.sql.gz ]; then mv -f /var/backups/mysql/mysqldump_$db.0.sql.gz /var/backups/mysql/mysqldump_$db.1.sql.gz; fi  && /usr/bin/mysqldump --databases $db |gzip > /var/backups/mysql/mysqldump_$db.0.sql.gz; done

# LDAP backup
00 22 * * *    root    [ -x /usr/sbin/slapcat ] && mkdir -p /var/backups/ldap && if [ -f /var/backups/ldap/slapcat.0.ldif.gz ]; then mv -f /var/backups/ldap/slapcat.0.ldif.gz /var/backups/ldap/slapcat.1.ldif.gz; fi && /usr/sbin/slapcat | gzip > /var/backups/ldap/slapcat.0.ldif.gz
\end{lstlisting}
\vspace{1em}

\vspace{1em}
\begin{lstlisting}
# chmod +x /etc/cron.d/backups
\end{lstlisting}
\vspace{1em}

\textbf{\it{Note :}} Si l'utilisateur root de MySQL ne peut se connecter sans mot de passe (ce qui est une bonne idée ...) il est possible de définir le mot de passe dans les commandes ci-dessus ou de créer un fichier de préférences pour l'utilisateur root. La deuxième solution est préférable puisqu'on pourra définir des permissions plus restrictives sur le fichier de préférences. Par exemple, pour définir le mot de passe à utiliser pour se connecter sur le serveur 127.0.0.1, ajouter les lignes suivantes dans /root/.my.cnf :

\vspace{1em}
\begin{lstlisting}
[client]
user = root
password = my_root_password
host = 127.0.0.1
\end{lstlisting}
\vspace{1em}

Ne pas oublier ensuite de restreindre les droits d'accès avec la commande suivante :

\vspace{1em}
\begin{lstlisting}
# chmod 600 /root/.my.cnf
\end{lstlisting}
\vspace{1em}


\chapter{Sauvegarde des postes Windows}

\clearpage
\nocite{*}
\bibliographystyle{unsrt}
\bibliography{\jobname}

%\ifpdf
%\else
%\chapter{Vos commentaires}
%\fi
\end{document}
