CLI AI

「压缩这个目录并上传到 S3」——一条流水线

2026-02-07

一半的临时备份长得都一样:拿一个目录,压缩,推到本机以外。没人喜欢手敲那条 pipe。日期命名、gzip 等级、S3 的正确参数——值得停顿一下。

一句 prompt 出整条管道

clai
$ clai tar 当前目录、gzip 加日期后缀、上传到 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

值得留意的几个细节。归档是流式的——tar -czf - 写到 stdout,aws s3 cp - 从 stdin 读——本地不落临时文件。S3 的 key 同时含目录名和时间戳,这是大多团队备份命名想要的样子。

加一句「成功后清理」

自然的下一步:上传成功后删掉源。

clai
$ clai 同样上传,返回码为 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] — 当前目录递归删除。

CliAI 把第二条标了 DANGER,因为尾巴上挂了 rm -rf -- "$PWD"。分级器看的是整条管道,不只是第一段。决策细节见安全分级那篇。

当目的地不是 S3

换目的地——「到 gs://my-bucket」、「rsync 到远程主机」、「到 Backblaze B2」——结构不变。pipe 不在乎 URL,模型选对应的上传器。

另见