本质上我们想要实现的是,本地文件与S3之间的同步,下面我们以MINIO进行举例,MINIO是完全兼容AWS S3的对象存储服务。

1.AWS S3的客户端下载与安装

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

unzip awscliv2.zip

sudo ./aws/install

# 配置aws访问的accessKey和accessSecret
aws configure

2.备份本地文件到AWS S3

备份本地文件到MINIO,cp命令第一个参数为需要备份的文件路径,第二个参数是S3服务器的bucket名称。

aws s3 cp /home/wanna/k8s/ s3://dell-server-resourceyaml-backup/ --recursive --endpoint-url http://192.168.11.168:9000

如果出现checksum问题。

wanna@dell-server-k8s-master01:~$ aws s3 cp /home/wanna/k8s-20250307205841.tar.gz s3://dell-server-resourceyaml-backup/ --endpoint-url http://192.168.11.168:9000
upload failed: ./k8s-20250307205841.tar.gz to s3://dell-server-resourceyaml-backup/k8s-20250307205841.tar.gz An error occurred (InvalidArgument) when calling the CreateMultipartUpload operation: Invalid arguments provided for dell-server-resourceyaml-backup/k8s-20250307205841.tar.gz: (invalid/unknown checksum sent: invalid checksum)

那么可以尝试手动指定checksum的算法:

aws s3 cp /home/wanna/k8s-${DATE}.tar.gz s3://dell-server-resourceyaml-backup/ --endpoint-url http://192.168.11.168:9000 --checksum-algorithm CRC32

4. 从AWS S3将文件恢复到本地

从MINIO进行恢复,区别只是第一个参数和第二个参数交换位置,第一个参数是S3服务器的bucket名称,第二个参数是需要恢复文件的路径。

aws s3 cp s3://dell-server-resourceyaml-backup/ /home/wanna/k8s-restore --recursive --endpoint-url http://192.168.11.168:9000