仅复制更新的文件,删除一次删除并压缩更新的文件

时间:2019-02-14 12:33:23

标签: bash shell rsync

https://www.mehr-schulferien.de托管约100,000个网页。出于性能原因,它们不是从实际的Web应用程序传递的,而是从静态镜像传递的。该镜像在每月的1号产生。通过运行wget -m完成。然后用gzip和brotli压缩所有文件。因为这是一台非常老旧且缓慢的服务器,所以该过程将花费近两天的时间。

我想优化流程。实际上每个月只有不到10%的页面获得新内容。有些被一起删除。因此,无需花费大部分时间压缩所有文件。

这是一个简化的示例(实际的有子目录,显然还有更多文件)。 current目录中包含20190101发行版中的所有文件,并且所有这些文件都使用gzip和brotli压缩。 20190201版本删除了b.html文件并更改了a.html文件。

├── current
│   ├── a.html
│   ├── a.html.br
│   ├── a.html.gz
│   ├── b.html
│   ├── b.html.br
│   ├── b.html.gz
│   ├── c.html
│   ├── c.html.br
│   ├── c.html.gz
│   ├── d.html
│   ├── d.html.br
│   └── d.html.gz
└── releases
    ├── 20190101
    │   ├── a.html
    │   ├── b.html
    │   ├── c.html
    │   └── d.html
    └── 20190201
        ├── a.html # is changed
        ├── c.html
        └── d.html

解决此问题的最佳方法是什么?最糟糕的情况是编写一个Ruby脚本,该脚本会转到20190201目录,并将文件与current目录进行比较。但是,是否有一个更优雅,更快捷的解决方案呢?我可以使用rsyncfind或其他Bash工具解决此问题吗?还是一些聪明的目录和文件链接?

0 个答案:

没有答案