opencode-skills-collection 4.0.67 → 4.0.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +281 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/anti-slop-design/SKILL.md +393 -0
- package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +1 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/artifact-yylo/SKILL.md +122 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/google-no-code/SKILL.md +136 -0
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/idea-evaluator/SKILL.md +75 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-con/SKILL.md +64 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-pro/SKILL.md +64 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/ledger-tasks-yylo/SKILL.md +219 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +4 -4
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/plan-ledger-tasks-yylo/SKILL.md +52 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/ralph-loop-yylo/SKILL.md +55 -0
- package/bundled-skills/ralph-loop-yylo/references/first_check.md +18 -0
- package/bundled-skills/ralph-loop-yylo/references/implement.md +60 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/resumable-implementation-contracts/SKILL.md +254 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/understand-project-yylo/SKILL.md +62 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/weather-model-data-fetching/SKILL.md +277 -0
- package/bundled-skills/weather-observation-fetching/SKILL.md +246 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/wiki-yylo/SKILL.md +114 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/workflow-yylo/SKILL.md +107 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +6924 -0
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: backup-recovery
|
|
3
|
+
description: Implement backup and recovery strategies. Configure rsync, Restic, and
|
|
4
|
+
cloud backups. Use when designing data protection solutions.
|
|
5
|
+
category: devops
|
|
6
|
+
risk: critical
|
|
7
|
+
source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
|
|
8
|
+
source_repo: BagelHole/DevOps-Security-Agent-Skills
|
|
9
|
+
source_type: community
|
|
10
|
+
date_added: '2026-09-20'
|
|
11
|
+
license: MIT
|
|
12
|
+
license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
|
|
13
|
+
compatibility: Requires the relevant OS/platform tooling and privileged access where
|
|
14
|
+
noted. Docs-only; helper scripts and templates not bundled.
|
|
15
|
+
metadata:
|
|
16
|
+
author: devops-skills
|
|
17
|
+
version: '1.0'
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Backup and Recovery
|
|
21
|
+
|
|
22
|
+
Implement comprehensive backup and recovery strategies using rsync, Restic, and cloud storage backends. Covers the 3-2-1 rule, automated scheduling, S3/B2 backends, encryption, restore procedures, and verification testing.
|
|
23
|
+
|
|
24
|
+
## When to Use
|
|
25
|
+
|
|
26
|
+
- Designing a backup strategy for servers, databases, or application data
|
|
27
|
+
- Setting up Restic for encrypted, deduplicated backups to local or cloud storage
|
|
28
|
+
- Automating backups with systemd timers or cron
|
|
29
|
+
- Restoring data after accidental deletion, corruption, or disaster
|
|
30
|
+
- Migrating data between environments using backup/restore workflows
|
|
31
|
+
- Verifying backup integrity and testing recovery procedures
|
|
32
|
+
|
|
33
|
+
## Prerequisites
|
|
34
|
+
|
|
35
|
+
- `rsync` installed (included in most Linux distributions)
|
|
36
|
+
- `restic` installed (v0.16+ recommended)
|
|
37
|
+
- Cloud CLI configured for the backend: AWS CLI for S3, `b2` CLI for Backblaze B2
|
|
38
|
+
- Sufficient storage at the backup destination (2-3x source size for retention)
|
|
39
|
+
- SSH access for remote rsync targets
|
|
40
|
+
- `systemd` or `cron` for scheduling
|
|
41
|
+
|
|
42
|
+
## The 3-2-1 Backup Rule
|
|
43
|
+
|
|
44
|
+
- **3** copies of your data (1 primary + 2 backups)
|
|
45
|
+
- **2** different storage media or types (e.g., local disk + cloud)
|
|
46
|
+
- **1** copy offsite (cloud storage, remote datacenter)
|
|
47
|
+
|
|
48
|
+
## rsync Backups
|
|
49
|
+
|
|
50
|
+
### Basic Operations
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Sync a local directory to a backup location
|
|
54
|
+
rsync -avz --delete /data/ /backup/data/
|
|
55
|
+
|
|
56
|
+
# Flags explained:
|
|
57
|
+
# -a archive mode (preserves permissions, ownership, timestamps, symlinks)
|
|
58
|
+
# -v verbose output
|
|
59
|
+
# -z compress data during transfer
|
|
60
|
+
# --delete remove files at destination that no longer exist at source
|
|
61
|
+
|
|
62
|
+
# Sync to a remote server over SSH
|
|
63
|
+
rsync -avz -e "ssh -i ~/.ssh/backup_key" /data/ backup@remote:/backups/server01/
|
|
64
|
+
|
|
65
|
+
# Exclude patterns
|
|
66
|
+
rsync -avz --delete \
|
|
67
|
+
--exclude='*.tmp' \
|
|
68
|
+
--exclude='*.log' \
|
|
69
|
+
--exclude='.cache/' \
|
|
70
|
+
--exclude='node_modules/' \
|
|
71
|
+
/data/ /backup/data/
|
|
72
|
+
|
|
73
|
+
# Use an exclude file for complex patterns
|
|
74
|
+
rsync -avz --delete --exclude-from=/etc/backup-excludes.txt /data/ /backup/data/
|
|
75
|
+
|
|
76
|
+
# Dry run (preview what would change)
|
|
77
|
+
rsync -avzn --delete /data/ /backup/data/
|
|
78
|
+
|
|
79
|
+
# Limit bandwidth to 50 MB/s and show progress
|
|
80
|
+
rsync -avz --bwlimit=50000 --progress /data/ backup@remote:/backups/
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Incremental Backups with Hard Links
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Incremental: unchanged files hard-linked to previous backup (saves space)
|
|
87
|
+
rsync -avz --delete \
|
|
88
|
+
--link-dest=/backup/daily/latest \
|
|
89
|
+
/data/ /backup/daily/$(date +%Y-%m-%d)/
|
|
90
|
+
|
|
91
|
+
# Update the 'latest' symlink
|
|
92
|
+
ln -snf /backup/daily/$(date +%Y-%m-%d) /backup/daily/latest
|
|
93
|
+
|
|
94
|
+
# Remove backups older than 30 days
|
|
95
|
+
find /backup/daily -maxdepth 1 -type d -name "20*" -mtime +30 -exec rm -rf {} \;
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Restic Backup
|
|
99
|
+
|
|
100
|
+
### Installation
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Debian / Ubuntu
|
|
104
|
+
apt install -y restic
|
|
105
|
+
|
|
106
|
+
# RHEL / CentOS
|
|
107
|
+
dnf install -y restic
|
|
108
|
+
|
|
109
|
+
# Or download the latest binary
|
|
110
|
+
curl -L https://github.com/restic/restic/releases/latest/download/restic_0.17.3_linux_amd64.bz2 \
|
|
111
|
+
| bunzip2 > /usr/local/bin/restic
|
|
112
|
+
chmod +x /usr/local/bin/restic
|
|
113
|
+
|
|
114
|
+
# Verify installation
|
|
115
|
+
restic version
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Initialize a Repository
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
# Local repository
|
|
122
|
+
restic init --repo /backup/restic-repo
|
|
123
|
+
|
|
124
|
+
# AWS S3 backend
|
|
125
|
+
export AWS_ACCESS_KEY_ID="AKIAEXAMPLE"
|
|
126
|
+
export AWS_SECRET_ACCESS_KEY="secretkey"
|
|
127
|
+
restic init --repo s3:s3.amazonaws.com/my-backup-bucket
|
|
128
|
+
|
|
129
|
+
# S3-compatible (MinIO)
|
|
130
|
+
export AWS_ACCESS_KEY_ID="minioadmin"
|
|
131
|
+
export AWS_SECRET_ACCESS_KEY="miniosecret"
|
|
132
|
+
restic init --repo s3:http://minio.example.com:9000/backup-bucket
|
|
133
|
+
|
|
134
|
+
# Backblaze B2 backend
|
|
135
|
+
export B2_ACCOUNT_ID="accountid"
|
|
136
|
+
export B2_ACCOUNT_KEY="accountkey"
|
|
137
|
+
restic init --repo b2:my-backup-bucket:server01
|
|
138
|
+
|
|
139
|
+
# SFTP backend
|
|
140
|
+
restic init --repo sftp:backup@remote:/backups/server01
|
|
141
|
+
|
|
142
|
+
# Restic will prompt for a repository password -- store it securely
|
|
143
|
+
# Use a password file for automation
|
|
144
|
+
echo "my-secure-repo-password" > /etc/restic/password.txt
|
|
145
|
+
chmod 600 /etc/restic/password.txt
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Backup Operations
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Basic backup
|
|
152
|
+
restic backup /data --repo /backup/restic-repo --password-file /etc/restic/password.txt
|
|
153
|
+
|
|
154
|
+
# Backup multiple directories
|
|
155
|
+
restic backup /data /etc /var/lib/postgresql \
|
|
156
|
+
--repo s3:s3.amazonaws.com/my-backup-bucket \
|
|
157
|
+
--password-file /etc/restic/password.txt
|
|
158
|
+
|
|
159
|
+
# Backup with exclusions
|
|
160
|
+
restic backup /data \
|
|
161
|
+
--exclude='*.tmp' \
|
|
162
|
+
--exclude='*.log' \
|
|
163
|
+
--exclude-file=/etc/restic/excludes.txt \
|
|
164
|
+
--repo /backup/restic-repo \
|
|
165
|
+
--password-file /etc/restic/password.txt
|
|
166
|
+
|
|
167
|
+
# Backup with tags (useful for filtering snapshots later)
|
|
168
|
+
restic backup /data \
|
|
169
|
+
--tag server01 --tag production --tag daily \
|
|
170
|
+
--repo /backup/restic-repo \
|
|
171
|
+
--password-file /etc/restic/password.txt
|
|
172
|
+
|
|
173
|
+
# Backup stdin (e.g., database dump)
|
|
174
|
+
pg_dump -U postgres mydb | restic backup --stdin --stdin-filename mydb.sql \
|
|
175
|
+
--repo s3:s3.amazonaws.com/my-backup-bucket \
|
|
176
|
+
--password-file /etc/restic/password.txt
|
|
177
|
+
|
|
178
|
+
# Verbose output showing files processed
|
|
179
|
+
restic backup /data -v \
|
|
180
|
+
--repo /backup/restic-repo \
|
|
181
|
+
--password-file /etc/restic/password.txt
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Snapshot Management
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# List all snapshots (add --tag <tag> to filter)
|
|
188
|
+
restic snapshots --repo /backup/restic-repo --password-file /etc/restic/password.txt
|
|
189
|
+
|
|
190
|
+
# Browse files in the latest snapshot
|
|
191
|
+
restic ls latest --repo /backup/restic-repo --password-file /etc/restic/password.txt
|
|
192
|
+
|
|
193
|
+
# Compare two snapshots
|
|
194
|
+
restic diff abc123 def456 --repo /backup/restic-repo --password-file /etc/restic/password.txt
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Retention Policy (forget + prune)
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# Apply retention policy and reclaim space
|
|
201
|
+
restic forget \
|
|
202
|
+
--keep-daily 7 --keep-weekly 4 --keep-monthly 12 --keep-yearly 3 \
|
|
203
|
+
--prune \
|
|
204
|
+
--repo /backup/restic-repo \
|
|
205
|
+
--password-file /etc/restic/password.txt
|
|
206
|
+
|
|
207
|
+
# Dry run to preview what would be removed
|
|
208
|
+
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 \
|
|
209
|
+
--dry-run --repo /backup/restic-repo --password-file /etc/restic/password.txt
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Restore Procedures
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
# Restore the latest snapshot to a target directory
|
|
216
|
+
restic restore latest --target /restore \
|
|
217
|
+
--repo /backup/restic-repo \
|
|
218
|
+
--password-file /etc/restic/password.txt
|
|
219
|
+
|
|
220
|
+
# Restore a specific snapshot by ID
|
|
221
|
+
restic restore abc123 --target /restore \
|
|
222
|
+
--repo /backup/restic-repo \
|
|
223
|
+
--password-file /etc/restic/password.txt
|
|
224
|
+
|
|
225
|
+
# Restore only specific files or directories
|
|
226
|
+
restic restore latest --target /restore --include "/data/config" \
|
|
227
|
+
--repo /backup/restic-repo \
|
|
228
|
+
--password-file /etc/restic/password.txt
|
|
229
|
+
|
|
230
|
+
# Mount a snapshot as a FUSE filesystem (browse and copy individual files)
|
|
231
|
+
mkdir -p /mnt/restic
|
|
232
|
+
restic mount /mnt/restic --repo /backup/restic-repo --password-file /etc/restic/password.txt &
|
|
233
|
+
# Browse: ls /mnt/restic/snapshots/latest/
|
|
234
|
+
# Unmount when done: umount /mnt/restic
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Verification
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
# Verify repository integrity (checks all data and metadata)
|
|
241
|
+
restic check --repo /backup/restic-repo --password-file /etc/restic/password.txt
|
|
242
|
+
|
|
243
|
+
# Full data verification (reads all pack files -- slow but thorough)
|
|
244
|
+
restic check --read-data --repo /backup/restic-repo --password-file /etc/restic/password.txt
|
|
245
|
+
|
|
246
|
+
# Verify a random subset of data (faster than full read)
|
|
247
|
+
restic check --read-data-subset=5% --repo /backup/restic-repo --password-file /etc/restic/password.txt
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## Automated Backup with Environment File
|
|
251
|
+
|
|
252
|
+
### /etc/restic/env
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
# Repository configuration
|
|
256
|
+
export RESTIC_REPOSITORY="s3:s3.amazonaws.com/my-backup-bucket"
|
|
257
|
+
export RESTIC_PASSWORD_FILE="/etc/restic/password.txt"
|
|
258
|
+
export AWS_ACCESS_KEY_ID="AKIAEXAMPLE"
|
|
259
|
+
export AWS_SECRET_ACCESS_KEY="secretkey"
|
|
260
|
+
|
|
261
|
+
# Optional: set cache directory
|
|
262
|
+
export RESTIC_CACHE_DIR="/var/cache/restic"
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Backup Script
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
#!/bin/bash
|
|
269
|
+
# /usr/local/bin/restic-backup.sh
|
|
270
|
+
set -euo pipefail
|
|
271
|
+
source /etc/restic/env
|
|
272
|
+
LOG="/var/log/restic-backup.log"
|
|
273
|
+
|
|
274
|
+
echo "$(date): Starting backup" >> "$LOG"
|
|
275
|
+
|
|
276
|
+
restic backup /data /etc /var/lib/postgresql \
|
|
277
|
+
--exclude-file=/etc/restic/excludes.txt \
|
|
278
|
+
--tag "$(hostname)" --tag daily \
|
|
279
|
+
--verbose >> "$LOG" 2>&1
|
|
280
|
+
|
|
281
|
+
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 \
|
|
282
|
+
--prune >> "$LOG" 2>&1
|
|
283
|
+
|
|
284
|
+
# Weekly integrity check (Sundays)
|
|
285
|
+
[ "$(date +%u)" -eq 7 ] && restic check --read-data-subset=10% >> "$LOG" 2>&1
|
|
286
|
+
|
|
287
|
+
echo "$(date): Backup completed" >> "$LOG"
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
chmod +x /usr/local/bin/restic-backup.sh
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
## Scheduled Backups
|
|
295
|
+
|
|
296
|
+
### Systemd Timer (Recommended)
|
|
297
|
+
|
|
298
|
+
```ini
|
|
299
|
+
# /etc/systemd/system/restic-backup.service
|
|
300
|
+
[Unit]
|
|
301
|
+
Description=Restic backup
|
|
302
|
+
After=network-online.target
|
|
303
|
+
Wants=network-online.target
|
|
304
|
+
|
|
305
|
+
[Service]
|
|
306
|
+
Type=oneshot
|
|
307
|
+
User=root
|
|
308
|
+
ExecStart=/usr/local/bin/restic-backup.sh
|
|
309
|
+
Nice=10
|
|
310
|
+
IOSchedulingClass=idle
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
```ini
|
|
314
|
+
# /etc/systemd/system/restic-backup.timer
|
|
315
|
+
[Unit]
|
|
316
|
+
Description=Run Restic backup daily at 2 AM
|
|
317
|
+
|
|
318
|
+
[Timer]
|
|
319
|
+
OnCalendar=*-*-* 02:00:00
|
|
320
|
+
Persistent=true
|
|
321
|
+
RandomizedDelaySec=900
|
|
322
|
+
|
|
323
|
+
[Install]
|
|
324
|
+
WantedBy=timers.target
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
# Enable and start the timer
|
|
329
|
+
systemctl daemon-reload
|
|
330
|
+
systemctl enable --now restic-backup.timer
|
|
331
|
+
|
|
332
|
+
# Check timer status
|
|
333
|
+
systemctl list-timers restic-backup.timer
|
|
334
|
+
|
|
335
|
+
# Run manually for testing
|
|
336
|
+
systemctl start restic-backup.service
|
|
337
|
+
journalctl -u restic-backup.service -f
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
## Database Backups with Restic
|
|
341
|
+
|
|
342
|
+
```bash
|
|
343
|
+
# PostgreSQL: stream dump directly into restic (no temp file)
|
|
344
|
+
pg_dump -U postgres -Fc mydb | restic backup --stdin --stdin-filename mydb.dump \
|
|
345
|
+
--tag postgres --tag mydb \
|
|
346
|
+
--repo s3:s3.amazonaws.com/my-backup-bucket \
|
|
347
|
+
--password-file /etc/restic/password.txt
|
|
348
|
+
|
|
349
|
+
# MySQL / MariaDB: stream dump into restic
|
|
350
|
+
mysqldump --all-databases --single-transaction | \
|
|
351
|
+
restic backup --stdin --stdin-filename all-databases.sql \
|
|
352
|
+
--tag mysql \
|
|
353
|
+
--repo s3:s3.amazonaws.com/my-backup-bucket \
|
|
354
|
+
--password-file /etc/restic/password.txt
|
|
355
|
+
|
|
356
|
+
# Restore PostgreSQL from restic
|
|
357
|
+
restic dump latest mydb.dump \
|
|
358
|
+
--repo s3:s3.amazonaws.com/my-backup-bucket \
|
|
359
|
+
--password-file /etc/restic/password.txt \
|
|
360
|
+
| pg_restore -U postgres -d mydb --clean --if-exists
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
## Troubleshooting
|
|
364
|
+
|
|
365
|
+
| Symptom | Diagnostic Command | Common Fix |
|
|
366
|
+
|---|---|---|
|
|
367
|
+
| "repository not initialized" | `restic cat config --repo <repo>` | Run `restic init --repo <repo>` first |
|
|
368
|
+
| "wrong password" | Check env vars / password file | Verify RESTIC_PASSWORD_FILE contents and permissions |
|
|
369
|
+
| Backup is slow | `restic backup -v` for progress | Check network bandwidth; exclude large unneeded dirs |
|
|
370
|
+
| S3 permission denied | `aws s3 ls s3://bucket/` | Check IAM policy includes s3:GetObject, s3:PutObject |
|
|
371
|
+
| "unable to create lock" | `restic unlock --repo <repo>` | A previous backup crashed; unlock the repository |
|
|
372
|
+
| Restore shows empty dirs | `restic ls <snapshot-id>` | Verify correct snapshot ID; check --include path syntax |
|
|
373
|
+
| Repository growing too large | `restic stats --repo <repo>` | Run `restic forget --prune` with stricter retention |
|
|
374
|
+
| Check fails with pack errors | `restic check --read-data` | Rebuild index: `restic rebuild-index`; restore from another copy |
|
|
375
|
+
|
|
376
|
+
## Related Skills
|
|
377
|
+
|
|
378
|
+
- `linux-administration` -- Server maintenance and log management
|
|
379
|
+
- `systemd-services` -- Scheduling backups with systemd timers
|
|
380
|
+
- `object-storage` -- S3 and MinIO as backup destinations
|
|
381
|
+
- `block-storage` -- LVM snapshots for consistent backups
|
|
382
|
+
- `nfs-storage` -- Backing up NFS-shared data
|
|
383
|
+
|
|
384
|
+
## Limitations
|
|
385
|
+
|
|
386
|
+
- Infrastructure commands can disrupt services: confirm target host/scope and have backups/snapshots before mutating state.
|
|
387
|
+
- Docs-only import: upstream scripts and templates not bundled.
|
|
388
|
+
|