-
背景说明:
A系统的音频文件放置在oss中,需要把里面的音频文件筛选、转码成wav格式、修改文件名,再放置到B系统的ceph的xx桶中 -
执行方法:
第一步:将文件从oss拷贝到服务器硬盘上
mon容器内执行:
dest=/etc/ceph/filestore
#/etc/ceph:/etc/ceph容器映射目录,filestore 不存在的话,要手工创建;
for i inrados ls -p dsStore
;do rados -p dsStore get $i d e s t / dest/ dest/i; done;
ps:如果硬盘不够大,需要将新拷贝出来的文件,按照日期(30分钟前拷贝出来的数据)剪切到另一个文件夹,再scp到其他服务器,再删除该文件夹释放空间。
/usr/bin/find /home/kang -type f -newermt ‘2021-09-09 10:40’ ! -newermt ‘2021-09-09 10:48’ | xargs -i mv {} /home/new/
第二步:执行工具,把上一步骤拷贝出来的音频文件筛选、转码成wav格式、修改文件名,放置到一个新目录里(这里假设是/data/yinpin);
第三步:将第二步获取到的音频文件,复制到ceph中
将文件拷贝到新系统rgw容器的服务器映射目录:
/data/lib/yinpin
进入容器,再进入/var/lib/ceph/yinpin目录,可以看到文件已经映射到容器里了:
在容器中执行:
vi /root/.s3cfg
输入以下内容(ceph连接信息根据实际项目调整):
[default]
access_key = xxxxxx
secret_key = xxxxxxxxxxxxxxxxxxxxxxxxxx
host_base = 172.168.0.121:7480
host_bucket = localhost
use_https = False
然后在/var/lib/ceph/yinpin目录中执行:
for FILENAME in ls *.wav
; do { s3cmd put $FILENAME s3://new-bucket-d74433c7; } done
如果文件过多,报argument list too long错误,可以用下面的命令:
for FILENAME in find . -name "*.wav"
; do { s3cmd put $FILENAME s3://new-bucket-d74433c7; } done
如下图(我演示的是拷贝到一个新桶,便于下面验证):
验证:通过S3 Browser查看桶里已经有音频数据了,如下图: