CLI AI

»Komprimiere dieses Verzeichnis und lade es nach S3« — eine One-Shot-Pipeline

2026-02-07

Die Hälfte aller Ad-hoc-Backups hat dieselbe Form: ein Verzeichnis nehmen, komprimieren, vom Host wegschicken. Niemand schreibt die Pipe gern von Hand. Datums-Namen, gzip-Stufen, die richtigen S3-Flags — genug Oberfläche, um zu zögern.

Die volle Pipe in einem Prompt

clai
$ clai tar diesen Ordner, gzip mit Datums-Suffix, upload nach s3://team-backups/db/→ tar -czf - . \    | aws s3 cp - "s3://team-backups/db/$(basename "$PWD")-$(date +%Y%m%d-%H%M).tar.gz"upload: <stdin> to s3://team-backups/db/data-20260427-1432.tar.gz

Ein paar Details. Das Archiv wird gestreamt — tar -czf - schreibt nach stdout, aws s3 cp - liest von stdin — kein lokales Zwischenfile. Der S3-Key enthält Verzeichnisname und Timestamp, was die meisten Teams beim Backup-Naming sowieso wollen.

Wache „bei Erfolg löschen" anfügen

Natürliche Folge: die Quelle löschen, wenn der Upload geklappt hat.

clai
$ clai gleichen Upload, lösche lokalen Ordner wenn Exit-Code 0→ tar -czf - . \    | aws s3 cp - "s3://team-backups/db/$(basename "$PWD")-$(date +%Y%m%d-%H%M).tar.gz" \    && rm -rf -- "$PWD"[Safety: DANGER] — rekursive Löschung des Arbeitsverzeichnisses.

CliAI hat die zweite Variante mit DANGER markiert wegen des nachfolgenden rm -rf -- "$PWD". Der Klassifikator schaut auf die gesamte Pipeline, nicht nur den ersten Abschnitt. Wie diese Entscheidung fällt, beschreibt der Safety-Beitrag.

Wenn die richtige Antwort nicht S3 ist

Tausch das Ziel — „nach gs://my-bucket", „auf einen Remote-Host via rsync", „in meinen Backblaze-B2-Bucket" — und die Struktur bleibt gleich. Der Pipe ist die URL egal; das Modell wählt den passenden Uploader.

Siehe auch