AWS s3cmd 的基本操做

過濾一下今天的流程linux

肯定了去把另一臺服務器上的日誌加到當前的服務器,當時想的是那貨直接把服務器的帳號和密碼直接給個我,我來搞定,結果發現仍是我太單純了。。。apache

一、人家直接給我一個公鑰,通過查找資料得出的結論有如下的幾種
    a、直接在本機生成公鑰和私鑰,而後把本身客戶端的公鑰傳到服務器上的id_rsa.pub中,這裏須要注意的是一個服務器可能運行多個主機來無密碼登錄,因此注意不要把服務器上的那個文件直接給替換了,看下里面有內容的話最好是直接添加到後面便可;centos

    b、直接給了個私鑰。。。不知道怎麼處理,通過詢問,聽說使用一下的方式直接能夠生成pub文件,而後根據這兩個文件登錄就行:
    若是給過來的是一個.pem文件,利用私鑰直接生成一個公鑰:
        key.pem
        ssh-keygen -e -f key.pem >> key.pem.pub
tomcat

    c、直接給個私鑰過來,今天最終的處理方式就是給了私鑰,而後根據私鑰的登錄公式直接的登錄,偶爾能成功,可是沒有搞清楚登錄不成功的緣由,登錄成功的公式以下:
       ssh -i /Users/project/LoginKey/xyl_wuyabin/key_22.22.222.122_22.pem centos@22.22.222.122服務器

臨時性的處理了服務器登錄的問題,接下來就是要把當前服務器上的日誌對應的扔到S3上去,在當前的服務上須要裝上s3工具,而後寫個腳本,定時的複製到s3服務器便可:ssh

一、在當前的服務器直接的安裝s3cmd, 最想見的就是wget直接下載到本地,而後根據絕對地址的方式使用命令,經常使用到的命令就是查看、上傳和下載
    s3cmd ls -l /  #注意這裏有坑  有的版本不支持這種的寫法
    s3cmd put a.avi  s3://xxx/xxx/xxx/a.avi  #注意這裏,有文件直接上傳,以前想先建立一個桶而後扔進去,結果失敗了,最終的處理方式是不用創建桶,直接扔的時候回本身建桶
    s3cmd get s3://xxx/xxx/xxx/a.avi 直接get到本地工具

二、開始寫腳本了,mac上的腳本和Linux上的部分不同,這裏是個坑,知道就行,測試的時候最好是用vagant上的linux服務器去測是,否則會累死的,參考寫的基本以下:
#!/bin/sh
####################
#put log to s3
#Author Lcm
#date 2016-10-27
###################
dateYMD=`date  -d   yesterday   +%Y-%m-%d`
dateYM=`date   -d   yesterday   +%Y-%m`
dateMD=`date   -d   yesterday   +%m-%d`
測試

OLD_LOG_PATH='/home/centos/tools/apache-tomcat-8080/igp_logs/reg1/'$dateYM'/reg1-'$dateMD'*.log'
NEW_LOG_PATH='/home/centos/tools/s3/s3cmd/s3cmddata/reglog'$dateMD'.log'
TAR_LOG_PATH='/home/centos/tools/s3/s3cmd/s3cmddata/reglog'$dateMD'.gz'
cat $OLD_LOG_PATH > $NEW_LOG_PATH
if [ -f "$NEW_LOG_PATH" ];then
    gzip -c $NEW_LOG_PATH >$TAR_LOG_PATH
    /home/centos/tools/s3/s3cmd/s3cmd put $TAR_LOG_PATH 's3://ngemobi/logs/igp_logs/reg/dt='$dateYMD'/reglog'$dateMD'.gz'
    rm $NEW_LOG_PATH
    rm $TAR_LOG_PATH
fi

這種腳本基本是流水帳形式的寫法,思路清晰的話直接安裝流水帳的流程寫就好了spa

三、使用Crontab -e 的形式添加自動執行的腳本
      2 10 12 * * * /bin/sh /Users/project/play/test.sh日誌

結束

相關文章
相關標籤/搜索