网站地图    收藏   

主页 > 系统 > linux系统 >

s3cmd借助split分批实现文件同步备份 - Linux操作系

来源:自学PHP网    时间:2015-04-14 11:13 作者: 阅读:

[导读] s3cmd借助split分批实现文件同步备份一直都在使用s3cmd工具对服务器进行同步备份,可是最近却出了点小问题,查证之后,发现是服务器文件打包后越来越大,达到了7G左右,导致s3cmd无法...

s3cmd借助split分批实现文件同步备份
 
一直都在使用s3cmd工具对服务器进行同步备份,可是最近却出了点小问题,查证之后,发现是服务器文件打包后越来越大,达到了7G左右,导致s3cmd无法将其上传至amazon云端;
解决办法就是需要将打包的档案借助split先进行切割,在进行上传;
命令大致如下:
[plain] 
tar -zcvf - db_backup.sql webserver/ | openssl des3 -salt -k password | split -b 1024m - mybackup.des3_  
 
这样,一个7.2G左右的档案,按照1G的大小切割,得到了7个1G的档案和一个0.2G的档案,然后在逐个使用s3cmd进行上传;
[plain] 
for filename in `ls mybackup.des3_*`  
do  
    s3cmd -v put $filename s3://mybackup/$filename  
done  
 
上传完之后,在AWS上对各个档案使用cat进行整合;
[plain] 
cat mybackup.des3_* > mybackup.des3  
 
关于s3cmd的安装使用,做一下备注:
一、安装方法
 
方法一:(Debian/Ubuntu )
[plain] 
wget -O- -q http://s3tools.org/repo/deb-all/stable/s3tools.key | sudo apt-key add -  
wget -O/etc/apt/sources.list.d/s3tools.list http://s3tools.org/repo/deb-all/stable/s3tools.list  
apt-get update && sudo apt-get install s3cmd  
 
方法二:
[plain] 
wget http://nchc.dl.sourceforge.net/project/s3tools/s3cmd/1.0.0/s3cmd-1.0.0.tar.gz  
tar -zxf s3cmd-1.0.0.tar.gz -C /usr/local/  
mv /usr/local/s3cmd-1.0.0/ /usr/local/s3cmd/  
ln -s /usr/local/s3cmd/s3cmd /usr/bin/s3cmd  
 
二、使用方法
 
1、配置,主要是 Access Key ID 和 Secret Access Key
    s3cmd --configure
 
2、列举所有 Buckets。(bucket 相当于根文件夹)
    s3cmd ls
 
3、创建 bucket,且 bucket 名称是唯一的,不能重复。
    s3cmd mb s3://my-bucket-name
 
4、删除空 bucket
    s3cmd rb s3://my-bucket-name
 
5、列举 Bucket 中的内容
    s3cmd ls s3://my-bucket-name
 
6、上传 file.txt 到某个 bucket,
    s3cmd put file.txt s3://my-bucket-name/file.txt
 
7、上传并将权限设置为所有人可读
    s3cmd put --acl-public file.txt s3://my-bucket-name/file.txt
 
8、批量上传文件
    s3cmd put ./* s3://my-bucket-name/
 
9、下载文件
    s3cmd get s3://my-bucket-name/file.txt file.txt
 
10、批量下载
    s3cmd get s3://my-bucket-name/* ./
 
11、删除文件
    s3cmd del s3://my-bucket-name/file.txt
 
12、来获得对应的bucket所占用的空间大小
    s3cmd du -H s3://my-bucket-name
 
三、目录处理规则
 
以下命令都能将dir1 中的文件上传至my-bucket-name,但效果只截然不同的。
 
1)dir1 不带"/"斜杠,那么dir1会作为文件路径的一部分,相当于上传整个dir1目录,即类似 "cp -r dir1/"
[plain] 
~/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校验的,只有当文件不同时,才会被传输。
4.1、常规同步操作
 
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/
 
4.2、高级同步操作
 
4.2.1、排除、包含规则(--exclude 、--include)
 
file1-1.txt被排除,file2-2.txt同样是txt格式却能被包含。
[plain] 
~/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  
 
4.2.2、从文件中载入排除或包含规则。(--exclude-from、--include-from)
    s3cmd sync  --exclude-from pictures.exclude ./  s3://my-bucket-name/
 
pictures.exclude 文件内容
# Hey, comments are allowed here ;-)
*.jpg
*.gif
 
4.2.3、排除或包含规则支持正则表达式
    --rexclude 、--rinclude、--rexclude-from、--rinclude-from

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论