如何有效地维护最新的快照 tar 存档?

如何有效地维护最新的快照 tar 存档?

我有一个很大的文件目录,我想维护一个单独的压缩 tar 档案,我可以通过 http 提供该档案,其中包含每天更新一次的所有文件。

许多文件不会每天改变,我想避免每天花费数小时的处理器时间来压缩相同的文件。

tar“无法更新压缩档案”,因此tar uj没有帮助。

有什么聪明的方法可以做到这一点吗?

答案1

因为这是通过 http 访问的,所以使用 PHP 动态生成 tar 文件,方法如下:

<?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;

显然,这对于需要大量下载该文件的情况没有帮助。

答案2

这个想法是竞争对手建议论坛

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 - 

相关内容