騰訊雲 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. 群聊中顯示同步結果,有成功的文件數,還有失敗的文件路徑及原因

具體代碼請查看我的另外一篇。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM