寫個小腳本紀念一下tee這個指令,批量備份http的源代碼:
<code>jason at XJX-Mac </code><code>in</code> <code>~</code><code>/Script</code>
<code>$ </code><code>cat</code> <code>backup.py</code>
<code>#!/usr/bin/env python</code>
<code># -*- coding: utf-8 -*-</code>
<code>from fabric.api </code><code>import</code> <code>run</code>
<code>from fabric.context_managers </code><code>import</code> <code>env</code>
<code>from fabric.context_managers </code><code>import</code> <code>cd</code>
<code>env</code><code>.hosts = [</code><code>'10.11.12.101'</code><code>,</code><code>'10.11.12.102'</code><code>,</code><code>'10.11.12.111'</code><code>,</code><code>'10.11.12.112'</code><code>,</code><code>'10.11.12.131'</code><code>,</code><code>'10.11.12.181'</code><code>,</code><code>'10.11.12.182'</code><code>]</code>
<code>env</code><code>.user = </code><code>'root'</code>
<code>env</code><code>.password = </code><code>'mypassword'</code>
<code>env</code><code>.parallel = True</code>
<code>def backup():</code>
<code> </code><code>with </code><code>cd</code><code>(</code><code>"/data/httpd/source/"</code><code>):</code>
<code> </code><code>run(</code><code>"pwd"</code><code>)</code>
<code> </code><code>run(</code><code>"tar -Jcvf bak/httpd_`date +%Y%m%d`.tar.xz httpd"</code><code>)</code>
執行指令如下:
<code>$ fab -f backup.py backup | </code><code>tee</code> <code>backup.log</code>
輸出:
生成已目前日期命名的xz壓縮包,例如:httpd_20160104.tar.xz;腳本執行過程用tee指令輸出到backup.log檔案并在螢幕上實時列印出來。
補充說明:
tee
功能說明:tee指令用于将資料重定向到檔案,另一方面還可以提供一份重定向資料的副本作為後續指令的stdin。簡單的說就是把資料重定向到給定檔案和螢幕上。
存在緩存機制,每1024個位元組将輸出一次。若從管道接收輸入資料,應該是緩沖區滿,才将資料轉存到指定的檔案中。若檔案内容不到1024個位元組,則接收完從标準輸入裝置讀入的資料後,将重新整理一次緩沖區,并轉存資料到指定檔案。
語 法:tee [選項][參數]
選 項:
<code> </code><code>-a或--append :向檔案中重定向時使用追加模式;</code>
<code> </code><code>-i或--ignore-interrupts :忽略中斷(interrupt)信号。</code>
參數:
指定輸出重定向的檔案
本文轉自Jx戰壕 51CTO部落格,原文連結:http://blog.51cto.com/xujpxm/1731471,如需轉載請自行聯系原作者