写个小脚本纪念一下tee这个命令,批量备份http的源代码:

jason at XJX-Mac in ~/Script
$ cat backup.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from fabric.api import run
from fabric.context_managers import env
from fabric.context_managers import cd

env.hosts = ['10.11.12.101','10.11.12.102','10.11.12.111','10.11.12.112','10.11.12.131','10.11.12.181','10.11.12.182']
env.user = 'root'
env.password = 'mypassword'
env.parallel = True


def backup():
	with cd("/data/httpd/source/"):
		run("pwd")
		run("tar -Jcvf bak/httpd_`date +%Y%m%d`.tar.xz httpd")

执行命令如下:

jason at XJX-Mac in ~/Script
$ fab -f backup.py backup  | tee backup.log

输出:

     生成已当前日期命名的xz压缩包,例如:httpd_20160104.tar.xz;脚本执行过程用tee命令输出到backup.log文件并在屏幕上实时打印出来。

补充说明:  

tee

功能说明:tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。简单的说就是把数据重定向到给定文件和屏幕上。

    存在缓存机制,每1024个字节将输出一次。若从管道接收输入数据,应该是缓冲区满,才将数据转存到指定的文件中。若文件内容不到1024个字节,则接收完从标准输入设备读入的数据后,将刷新一次缓冲区,并转存数据到指定文件。

语    法:tee [选项][参数]

选    项:

  -a或--append :向文件中重定向时使用追加模式;
  -i或--ignore-interrupts  :忽略中断(interrupt)信号。

参数:

    指定输出重定向的文件