天天看點

python常用的備份腳本

腳本介紹:

1)備份源目錄的檔案

2)目标檔案以tar 和bzip2的方式壓縮之後放在目前日期檔案夾下

4)備份檔案以時間注釋和執行腳本的使用者命名

3)主要用到了時間子產品,系統子產品,和getpass子產品

4)source 可以修改為想備份的目錄,因為備份目錄一般不經常變動,是以這裡寫死了

<code>#!/bin/env python  </code>

<code>import</code> <code>os </code>

<code>import</code> <code>time</code> 

<code>import</code> <code>getpass </code>

<code>source</code> <code>= [</code><code>'/data/mysql'</code><code>, </code><code>'/data/mysql/mysql'</code><code>]  </code>

<code>target_dir = </code><code>'/backup/'</code> 

<code>user = getpass.getuser()  </code>

<code>today = target_dir + </code><code>time</code><code>.strftime(</code><code>'%Y%m%d'</code><code>) </code>

<code>now = </code><code>time</code><code>.strftime(</code><code>'%H%M%S'</code><code>) </code>

<code>comment = raw_input(</code><code>'please input comment --&gt; '</code><code>)  </code>

<code>if</code> <code>len(comment) == 0: </code>

<code>    </code><code>target = today + now + </code><code>'_'</code> <code>+ user + </code><code>'_'</code> <code>+ </code><code>'tar.bz2'</code>  

<code>else</code><code>:  </code>

<code>    </code><code>target = today +  now + </code><code>'_'</code> <code>+ comment + </code><code>'_'</code> <code>+ user + </code><code>'_'</code> <code>+ </code><code>'tar.bz2'</code>  

<code>if</code> <code>not os.path.exists(today):    </code>

<code>    </code><code>os.</code><code>mkdir</code><code>(today)   </code>

<code>    </code><code>print </code><code>'Create folder successfully'</code><code>, today  </code>

<code>else</code><code>:    </code>

<code>    </code><code>print today,</code><code>'Folder already exists'</code>  

<code>time</code><code>.</code><code>sleep</code><code>(5) </code>

<code>zip_command = </code><code>"tar -cjPf '%s' %s"</code> <code>% (target, </code><code>' '</code><code>.</code><code>join</code><code>(</code><code>source</code><code>))  </code>

<code>if</code> <code>os.system(zip_command) == 0:  </code>

<code>    </code><code>print </code><code>' Backup for success:'</code><code>, target  </code>

<code>    </code><code>print </code><code>'Backup for failed'</code> <code>,target</code>

備注:一下是詳細解釋:

<code>  </code> 

<code>#告訴解釋器查找pyton解釋器并且使用它 </code>

<code>#_*_encoding:utf8_*_  </code>

<code>#指定編碼為utf8編碼 </code>

<code>#導入系統子產品  </code>

<code>#導入時間子產品  </code>

<code>#導入擷取使用者子產品  </code>

<code>#定義備份源目錄 </code>

<code>#定義備份目标目錄  </code>

<code>user = getpass.getuser() </code>

<code>#定義使用備份腳本的使用者  </code>

<code>#定義今日的日期 </code>

<code>#定義現在的時間  </code>

<code>comment = raw_input(</code><code>'please input text --&gt; '</code><code>)  </code>

<code>#定義注釋為輸入的字元串 </code>

<code>#檢查輸入的注釋是否為空  </code>

<code>#如果注釋為空,備份檔案的檔案名為日期時間運作腳本使用者  </code>

<code>#如果非空,則使用日期時間注釋使用者為檔案名 </code>

<code>if</code> <code>not os.path.exists(today):  </code>

<code>#檢查備份目錄下的時間目錄是否不存在 </code>

<code> </code> 

<code>    </code><code>os.</code><code>mkdir</code><code>(today)  </code>

<code>#如果不存在建立檔案夾 </code>

<code>#存在,則列印 </code>

<code>#暫停五秒  </code>

<code>#定義本備份指令 </code>

<code>#使用系統環境(相當于shell執行備份指令,如果成功傳回0) </code>

<code>    </code><code>print </code><code>' 成功備份為:'</code><code>, target  </code>

<code>    </code><code>print </code><code>'備份失敗'</code> <code>,target</code>

2,查找某個目錄下N天以前的以log結尾的檔案并移動到/tmp下

<code>[root@zabbix log]</code><code># find /data/nginx/log  -type f -name "*.log" -mtime +114 -exec mv {} /tmp \;</code>

本文轉自 lqbyz 51CTO部落格,原文連結:http://blog.51cto.com/liqingbiao/1749996