zoukankan      html  css  js  c++  java
  • 腾讯云 COS 对象存储使用

    目前使用腾讯云的对象存储cos服务,将本地的文件同步到cos中,看了腾讯云的用户文档,发现使用COS Migration 工具还是挺适合的。

    原因

     因为服务器已经安装有java环境,而cos的几个用户工具中,用于自动同步的只看到这个工具,其他工具都需要额外的代码去调用命令,

    从开箱即用的角度看,还是这个工具好用的。

    使用

    配置下./conf/config.ini。指定好同步周期后,运行脚本

    1 sh start_migrate.sh

    因为是需要常驻运行,所以我这边是后台运行的

    nohup sh start_migrate.sh >/dev/null 2>&1 &

    命令大体意思是 

    1.  nohup 表示后台运行
    2. sh start_migrate.sh 是具体的命令
    3. >/dev/null 2>&1   标准输出到空,标准错误输出重定向(等同于)标准输出,即不保存脚本运行中产生的日志,也不保存错误信息(比如脚本不合法。。文件不存在)
    4.    是与nohup一起的,表示不受终端关闭信号影响,保持后台运行。如果没有&,在终端关闭时,当前终端执行的nohup进程也会被stop

    日志

    工具的日志默认是保存在./log下的,有info.log,warn.log,error.log 三个级别的日志。

    1 migrateLocal over! op statistics:
    2                      op_status : ALL_OK
    3                     migrate_ok : 0
    4                   migrate_fail : 0
    5                   migrate_skip : 1094
    6    migrate_condition_not_match : 0
    7                     start_time : 2018-07-14 11:05:57
    8                       end_time : 2018-07-14 11:05:59
    9                      used_time : 2 s

     上面是脚本运行成功后的输出,因为我之前已经同步过了,所以这里是显示 migrate_skip 跳过的文件数。如果有新文件同步成功了,会在migrate_ok显示成功文件数的。

    同步结果中还有可以看到些文件是没有同步成功的,具体的失败原因从error.log中就会详细说明。

    utf-8

    我这边遇到的失败原因全都是文件名乱码,或者是说不是utf-8字符格式,导致工具找不到文件。日志中的信息基本是这个内容,就路径不一样

    。。。
    localpath /data/xxxxxx not exist! maybe the path contail illegal utf-8 letter
    ...

    官方文档已经明确指出

    但我们的文件是从本地开发机中通过ftp上传到服务器的。通过对比,那些乱码文件都是含有中文的。

    1. 通过ftp到服务器后全部乱码。
    2. 通过shell远程touch中文名的文件,正常可同步。

    搜索之后知道了ftp是需要设置语言环境的,即字符格式。正在使用的ftp是用默认语言环境,应该是跟系统一样,windows是GBK。linux默认是utf-8

      接下来就是删除乱码文件,修改ftp环境,重新同步文件了。

    发现了乱码文件后,想在终端中手动删除文件,但无法选定。可以使用文件id进行指定。

    ls -i  ./  # 列出文件id及文件名
    find ./ -inum xxxxx -print -exec rm {} ;  # 获取xxx文件id的文件名传给附加命令 rm 删除 如果是文件夹 -rf 需要加在{}后面

    通知

    有文件需要同步时,不想还要查看日志知道是否成功,打算通过webhook的方式自动通知同步结果。就像git有代码提交后,有消息推送的webhook。目前是使用钉钉平台的自定义机器人

    1. 在群聊中添加自定义机器人,获取webhook地址。
    2. 修改cos migration工具的源码,在成功同步后添加通知任务,向webhook地址post数据
    3. 群聊中显示同步结果,有成功的文件数,还有失败的文件路径及原因

    具体代码请查看我的另外一篇。

  • 相关阅读:
    Android之缩减apk大小[资源文件篇]:基于自定义Shape设置ShapeDrawable
    二叉排序树与堆的区别
    4、多用类型常量,少用#define预处理指令
    3、多用字面量语法,少用与之等价的方法
    2、在类的头文件中尽量少引入其他头文件
    1、了解Objective-C语言的起源
    iOS中date和string的转换
    OC中的抽象基类 和 接口
    Swift -- 基础部分 -- 1、常量和变量
    计算机原理简述-处理器和汇编
  • 原文地址:https://www.cnblogs.com/duoxuan/p/9283959.html
Copyright © 2011-2022 走看看