정적 생성 사이트용 덮어쓰기 방지 가드

사이트가 다음 중 하나인 경우정기 작업에 의해 다시 생성된(크롤러가 데이터를 수집 → HTML을 생성 → 사이트 디렉터리로 복사), 따라서 다음과 같은 철칙이 있습니다:생성된 HTML을 직접 수정해서는 안 됩니다.. 우리는 rentgpu.link에서 이 문제를 겪었습니다: 수작업으로 수정한 876개 페이지가 정기 작업에 의해 한 번에 모두 덮어쓰여 몇 시간 분의 작업이 소멸되었습니다. 이 도구는 출력물이 수작업으로 수정되었는지 감시하는 가드 스크립트를 생성하며, 작업 손실 없이 변경할 수 있는 프로세스를 제공합니다.

무료 · 로그인 없음 로컬 생성 · 콘텐츠는 업로드되지 않음 사고에 해당함 · 876개 페이지가 cron에 의해 덮어씌워졌습니다.

1디렉터리 및 명령어

기억하기유일하게 올바른 수정 절차

출력 1가드 스크립트 guard.sh

0행
—
/usr/local/bin/guard.sh를 먼저 한 번 실행하세요 guard.sh snapshot으로 기준을 설정한 후, guard.sh check cron으로.

출력 2crontab 구성

0행
—

자체 점검생성 사이트의 보안 상태는 안전한가요?

이 함정은 우리가 이미 밟았습니다

1 · 876개 페이지가 한 번에 덮어씌워집니다.rentgpu.link에서는 생성된 HTML 876개를 직접 수정했습니다. 당일 18:07에 실행된 주기 작업이 완료되자마자 전체가 덮어씌워졌습니다—왜냐하면제품은 데이터 소스가 아니며, 생성기 템플릿이 진정한 데이터 소스입니다.. 올바른 방법은 다음을 수정하는 것입니다 scripts/build_site.py 템플릿을 수정한 후 수동으로 다시 생성 + 게시해야 합니다.

2 · 다국어 제품은 함께 수정해야 합니다.동일한 사이트에 /en /ja /ko /tw 총 4개의 생성물 세트, 766페이지. 중국어 세트만 수정하면 다른 언어 버전은 불일치하게 됩니다.

3 · "수정했는데 반영되지 않는다"고 생각할 수 있지만, 실제로는 덮어씌워진 것입니다.문제 해결 시 먼저 grep 생성물 디렉터리에서 콘텐츠 존재 여부를 먼저 확인한 후 cron 로그를 확인하면 1시간을 절약할 수 있습니다.

4 · 변경 전 전체 패키지 백업.우리는 정적 사이트를 매번 자동으로 생성할 때마다 먼저 tar czf /root/backups/xxx-$(date +%s).tar.gz <디렉터리>롤백은 단 30초만 소요됩니다.