s3cmd 借助split分批实现文件同步备份(3)

三、目录处理规则
 
以下命令都能将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校验的,只有当文件不同时,才会被传输。
 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格式却能被包含。

~/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

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1af0ff8b6af4fbeb7a0fc0b639bef9c4.html