1 votes

Comment maintenir efficacement une archive tar snapshot à jour ?

J'ai un grand répertoire de fichiers et j'aimerais maintenir une seule archive tar compressée que je peux envoyer par http contenant tous les fichiers et qui est mise à jour une fois par jour.

La plupart des fichiers ne changeront pas tous les jours et j'aimerais éviter de perdre des heures de processeur à compresser les mêmes fichiers chaque jour.

tar "ne peut pas mettre à jour les archives compressées", donc tar uj n'aidera pas.

Y a-t-il une façon intelligente de faire cela ?

0voto

artfulrobot Points 2557

Comme on y accède par http, utilisez PHP pour générer le fichier tar à la volée en utilisant quelque chose comme ceci :

<?php
    set_time_limit(1);
    header("Pragma: public"); // required
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: private",false); // required for certain browsers
    header("Content-Type: application/x-bzip2; charset=binary");
    header("Content-Disposition: attachment; filename=\"archive.tar.bz2\";" );
    passthru("tar cj --exclude-vcs /path/to/files",$err);
    if ($err) {
        error_log("exit value: $err");
    }
    exit;

Évidemment, cela n'aide pas dans le cas où ce fichier va être beaucoup téléchargé.

0voto

ndasusers Points 427

Cette idée était sur un forum de conseils sur la concurrence .

tar cf --newer YYYYMMDD

    To copy differences or only the files since the last tar date 
    here is the command.

    Let's say we did a tar on Feb 9th, 2009 as follows:
    (cd /mydata; tar cf - *) | tar xvf -

    Today is Feb 11th and we only want to copy the files that have changed 
    since Feb 9th, 2009. The command would be
    (cd /mydata; tar cf - --newer 20090209 * ) | tar xvf -

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X