s3cmd 安装使用,以及批量删除用法

s3cmd 安装使用,以及大批量删除文件

最近在做一个发票保存的功能,遇到文件无法上传问题,因为.net代码,对.net 不是那么熟悉,这个问题找了好久,才发现是测试环境文件服务器满了。

后面经过和Leader沟通,才知道使用是文件服务是Amazon Simple Storage Service ,因为后面三个单词的首字母都是S,所以简称 Amazon s3

知道了使用什么文件服务器,那么就需要使用对应的链接工具,登录文件服务器对历史文件进行清理,但可惜的是,windows系统中的一些链接软件非常拉胯,连上去要么卡死,要么直接链接不上。

后面了解到了针对linux系统有一款软件叫s3cmd,可惜我用的电脑是windows系统,这个软件我没法用。但是这也难不倒我,我想到了用docker 开一个ubuntu镜像来解决这个问题,以下是我解决问题的过程。

第一步 下载docker镜像

docker pull ubuntu

第二步 更新 ubuntu

因为默认下载的是最小化的ubuntu系统,总共才有78M,所以需要更新软件包列表

apt update

第三步 安装s3cmd

apt-get install s3cmd

第四步 配置s3cmd

配置文件地址:

/root/.s3cfg

如果在这个目录找不到配置文件,可以用以下命令来配置s3cmd

s3cmd --configure

推荐更改的配置项:

access_key = <your access key id>
secret_key = <your access key secret>
host_base = host:port
host_bucket = %(bucket)s.host
use_https = False #Default is True

第五步 编写删除脚本,删除文件

因为测试环境文件桶满了,所以要批量删除以前老的文件。我就想到用shell 脚本来删除。

查看所有桶

s3cmd ls

查看指定的buctke内容

s3cmd ls s3://my-bucket-name

把文件名称写入文件

s3cmd ls s3://my-bucket-name >> a.txt

查找到a.txt当中的最后五千行写入b.txt

tail -5000n a.txt >> b.txt

写一个shell脚本截取文件名字符串,并且执行删除命令

删除命令

s3cmd del s3://BUCKET/OBJECT

批量删除脚本

#!/bin/bash  
  
# 检查文件是否存在  
if [ -f "a.txt" ]; then  
    echo "文件a.txt存在,开始读取..."  
    # 使用while循环和read命令读取文件  
    while IFS= read -r line  
    do  
     s3cmd del s3://BUCKET/"line"
    done < "a.txt"  
else  
    echo "文件a.txt不存在,请检查文件路径是否正确。"  
fi

s3其他常用命令

S3没有文件夹的概念,只有桶(bucket)的概念

创建桶:

s3cmd mb s3://my-bucket-name

删除空桶

s3cmd rb s3://my-bucket-name

查看所有buckets

s3cmd ls

查看指定bucket的内容

s3cmd ls s3://my-bucket-name

上传文件

s3cmd put file.txt s3://my-bucket-name/file.txt

下载文件

s3cmd get s3://BUCKET/OBJECT LOCAL_FILE

删除文件 Delete file from bucket

s3cmd del s3://BUCKET/OBJECT

查看bucket大小

s3cmd du [s3://BUCKET[/PREFIX]]
s3cmd du s3://my-bucket-name

拷贝文件

s3cmd cp s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
s3cmd get s3://my-bucket-name/file.txt s3://my-bucket-copy-name2/file.txt

移动文件

s3cmd mv s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
s3cmd mv s3://my-bucket-name/file.txt s3://my-bucket-mv-name/file.txt

权限相关:

上传文件时指定权限public:

s3cmd put --acl-public file.txt s3://my-bucket-name/file.txt

为已上传的文件设置public权限

s3cmd setacl s3://BUCKET[/OBJECT]
s3cmd setacl s3://my-bucket-name/myfile.txt --acl-public

生成url下载链接,并指定链接有效期

day=`date -d 'now + 1 year' +%s`
echo $day

# 生成文件url共享地址,并指定有效期,时间格式为时间戳

s3cmd signurl s3://my-bucket-name/file.txt $day
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值