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

Bash 仅复制更新的文件,删除删除一次并压缩更新的文件,bash,shell,rsync,Bash,Shell,Rsync,拥有大约100000个网页。出于性能原因,它们不是从实际的web应用程序交付的,而是从静态镜像交付的。此镜像在每个月的第一天生成。它是通过运行wget-m完成的。然后用gzip和brotli压缩所有文件。因为这是一个非常旧且速度慢的服务器,这个过程几乎需要两天 我想优化流程。每月实际获得新内容的页面不到10%。一些被一起删除。因此,不需要压缩所有这些文件,这会占用大部分时间 下面是一个简化的示例(实际的示例有子目录,显然还有更多的文件)。在current目录中,是20190101版本中的所有文件

拥有大约100000个网页。出于性能原因,它们不是从实际的web应用程序交付的,而是从静态镜像交付的。此镜像在每个月的第一天生成。它是通过运行
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
目录进行比较。但对于这个问题,难道没有更优雅、更快的解决方案吗?我可以用
rsync
find
或其他Bash工具来解决这个问题吗?还是一些聪明的目录和文件链接?

rsync-nva——删除新/旧文件
以获得已删除和更改的文件列表,然后处理该列表?为什么不使用rsync完成所有工作,并且它在删除和同步完整结构方面非常快速。正如您所写,您正在创建一个“镜像”,我希望它是原始源的完整视图/快照。您过去为什么不使用rsync?也许有人可以帮助设置正确的rsync命令来更新镜像。我们在很多机器上都这样做。仅仅使用rsync并不能解决我知道哪些文件需要压缩的问题。压缩部分是最耗时的部分。
rsync-nva——删除新的/旧的/
以获取已删除和更改的文件列表,然后处理该列表?为什么不使用rsync完成所有工作,而且它在删除和同步完整结构方面非常快速。正如您所写,您正在创建一个“镜像”,我希望它是原始源的完整视图/快照。您过去为什么不使用rsync?也许有人可以帮助设置正确的rsync命令来更新镜像。我们在很多机器上都这样做。仅仅使用rsync并不能解决我知道哪些文件需要压缩的问题。压缩部分是最耗时的部分。