小编alo*_*oc1的帖子

如何将 tar 压缩操作通过管道传输到 aws s3 cp?

我正在用 bash 编写一个自定义备份脚本供个人使用。目标是通过 tar/gzip 压缩目录的内容,拆分压缩存档,然后将部分上传到 AWS S3。

几个月前我第一次尝试编写这个脚本时,我能够通过以下方式让它工作:

tar -czf - /mnt/STORAGE_0/dir_to_backup | split -b 100M -d -a 4 - /mnt/SCRATCH/backup.tgz.part
aws s3 sync /mnt/SCRATCH/ s3://backups/ --delete
rm /mnt/SCRATCH/*
Run Code Online (Sandbox Code Playgroud)

这对我的目的很有效,但需要/mnt/SCRATCH有足够的磁盘空间来存储压缩目录。现在我想改进这个脚本,不必依赖于 中有足够的空间/mnt/SCRATCH,并做了一些研究。我最终得到了类似的东西:

tar -czf - /mnt/STORAGE_0/dir_to_backup | split -b 100M -d -a 4 --filter "aws s3 cp - s3://backups/backup.tgz.part" -
Run Code Online (Sandbox Code Playgroud)

这几乎有效,但我的 S3 存储桶上的目标文件名不是动态的,它似乎只是backup.tgz.part在运行时多次覆盖文件。最终结果只是一个 100MB 的文件,而预期的几个 100MB 文件以.part0001.

任何指导将不胜感激。谢谢!

bash pipe tar amazon-s3 aws-sdk

8
推荐指数
1
解决办法
1918
查看次数

标签 统计

amazon-s3 ×1

aws-sdk ×1

bash ×1

pipe ×1

tar ×1