我有一个很大的文件目录,我想维护一个单独的压缩 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 -