CentOS下s3cmd安装使用

2015-05-20 浏览:7647
CentOS下s3cmd安装使用
评论:(4)复制地址

最近准备搞个数据备份,之前准备把国外服务器上的备份定时同步到公司内微服上,怎奈天朝网络如此不架势啊,所以瞄上了亚马逊的S3存储服务,因为之前有过接触,所以综合比较符合我现在的需求,让我意外的是现在控制台都全中文了,比起前年公司让我研究它的时候真是爽翻了~  

这边整理一下利用s3cmd操作S3:


安装:

下载最新版s3cmd  地址:http://s3tools.org/s3cmd

tar -xvzf s3cmd-1.5.2.tar.gz
mv s3cmd-1.5.2.tar.gz /usr/local/s3cmd
ln -s /usr/local/s3cmd/s3cmd /usr/bin/s3cmd
yum install python-dateutil python-magic


配置:

主要是 Access Key ID 和 Secret Access Key

获取地址:https://console.aws.amazon.com/iam/home?#security_credential

执行:s3cmd --configure

按提示输入就OK了


使用:

一、基本命令

1、列举所有 Buckets。(bucket 相当于根文件夹)

s3cmd ls

2、创建 bucket,且 bucket 名称是唯一的,不能重复。

s3cmd mb s3://my-bucket-name

3、删除空 bucket

s3cmd rb s3://my-bucket-name

4、列举 Bucket 中的内容

s3cmd ls s3://my-bucket-name

5、上传 file.txt 到某个 bucket,

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

6、上传并将权限设置为所有人可读

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

7、批量上传文件

s3cmd put ./* s3://my-bucket-name/

8、下载文件

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

9、批量下载

s3cmd get s3://my-bucket-name/* ./

10、删除文件

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

11、来获得对应的bucket所占用的空间大小

s3cmd du -H s3://my-bucket-name


二、目录处理规则

以下命令都能将dir1 中的文件上传至my-bucket-name,但效果只截然不同的。

1)dir1 不带"/"斜杠,那么dir1会作为文件路径的一部分,相当于上传整个dir1目录,即类似 "cp -r dir1/"

~/demo$ s3cmd put -r dir1 s3://my-bucket-name/
dir1/file1-1.txt -> s3://my-bucket-name/dir1/file1-1.txt  [1 of 1]

2)带"/"斜杠的 dir1,相当于上传dir1目录下的所有文件,即类似 "cp ./* "

~/demo$ s3cmd put -r dir1/ s3://my-bucket-name/
dir1/file1-1.txt -> s3://my-bucket-name/file1-1.txt  [1 of 1]



三、同步方法

这是s3cmd 使用难点,但却是最实用的功能。官方使用说明见《s3cmd sync HowTo

首先明确,同步操作是要进行MD5校验的,只有当文件不同时,才会被传输。

(一)常规同步操作

1、同步当前目录下所有文件

s3cmd sync  ./  s3://my-bucket-name/

2、加 "--dry-run"参数后,仅列出需要同步的项目,不实际进行同步。

s3cmd sync  --dry-run ./  s3://my-bucket-name/

3、加 " --delete-removed"参数后,会删除本地不存在的文件。

s3cmd sync  --delete-removed ./  s3://my-bucket-name/

4、加 " --skip-existing"参数后,不进行MD5校验,直接跳过本地已存在的文件。

s3cmd sync  --skip-existing ./  s3://my-bucket-name/


(二)高级同步操作

1、排除、包含规则(--exclude 、--include)

file1-1.txt被排除,file2-2.txt同样是txt格式却能被包含。

~/demo$ s3cmd sync --dry-run --exclude '*.txt' --include 'dir2/*' ./  s3://my-bucket-name/
exclude: dir1/file1-1.txt
upload: ./dir2/file2-2.txt -> s3://my-bucket-name/dir2/file2-2.txt

2、从文件中载入排除或包含规则。(--exclude-from、--include-from)

s3cmd sync  --exclude-from pictures.exclude ./  s3://my-bucket-name/

pictures.exclude 文件内容

# Hey, comments are allowed here ;-)
*.jpg
*.gif

3、排除或包含规则支持正则表达式

--rexclude 、--rinclude、--rexclude-from、--rinclude-from


问题:

1、可能有人在新建S3后,第一次传文件是报错 — [Errno 32] Broken pipe in s3cmd 

解决方法:等个几十分钟在试,可能是S3还未准备好。


2、传文件时有警告信息 — WARNING: Module python-magic is not available. Guessing MIME types based on file extensions.

解决方法:yum install python-magic

评论:(4)复制地址
发布:zpblog | 分类:Linux | Tags:同步

评论列表:

香港vps

评论于2015-05-20 11:11:03
这个对我来说太专业了,从来都没整过这个 - 回复该评论

安珂

评论于2015-05-25 14:44:24
不错,支持一下
产后恢复加盟http://www.leishi.cc - 回复该评论

最励志官网

评论于2015-08-31 23:18:00
无意溜达到了你的网站 留下足迹 - 回复该评论

爱奇趣分享网

评论于2015-09-13 16:46:06
不错的站点,以后一定常来。 - 回复该评论

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。