Скопируйте только обновленные файлы, удалите удаленные и сожмите обновленные файлы - PullRequest
0 голосов
/ 14 февраля 2019

https://www.mehr -schulferien.de содержит около 100 000 веб-страниц.По соображениям производительности они доставляются не из реального веб-приложения, а из статического зеркала.Это зеркало генерируется каждый 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.Но нет ли более элегантного и быстрого решения этой проблемы?Могу ли я решить эту проблему с помощью rsync, find или другого инструмента Bash?Или какой-нибудь умный каталог и файл, связывающий?

...