我們知道,備份文件是一件很重要的事情,我在《優秀程序員的十個習慣》一文向大家說明了備份文件應該是程序員最基本的一個習慣。本文主要是向大家介紹一些在備份文件和數據時能用得到的一些示例,當然,這些示例主要是通過一些命令行或是腳本來實現的。這就是用命令行和腳本的優勢,你可以實現比較靈活和自動的定制。
本文中的腳本和示例都是主要是通過zip, tar, ftp, wget和shell腳本來完成。在Linux下,你可以什麼也不用安裝任何程序,但在Windows下,你需要安裝zip 和wget這三個命令(在本文的最後有這三個命令的鏈接,你可以去下載)
1)首先,我們來看一下,如何給某目錄打個zip包。
Windows:
zip -r backup.zip "c:\yourfolder"
Linux: (打包自己的home目錄)
tar -czvf ~/backup.tgz --exclude backup.tgz ~/
2)接下來,我們再來看一下,創建一個帶有時間文件名的壓縮包,並上傳到遠程主機的一個例子。
Windows
:: cmd 腳本 :: 壓縮包文件格式`backup-mm-dd-yyyy.zip' :: 注意:%dir% 被引號括起是怕目錄名中有空格 @echo off set host=ftp.yourhost.com set user=username set pass=password set file=backup-%date:~4,2%-%date:~7,2%-%date:~10%.zip set dir="yourfolder" zip -r %file% %dir% > script.ftp echo open %host% >> script.ftp echo %user% >> script.ftp echo %pass% >> script.ftp echo bin >> script.ftp echo put %file% >> script.ftp echo bye ftp.exe -d -s:script.ftp > backup.log del script.ftp
Linux
#!/bin/bash host="ftp.yoursite.com" user="username" pass="password" file="backup-$(date '+%m-%d-%Y').tgz" dir="$HOME" tar -cvzf $file $dir ftp -vin <ftp.log open $host user $user $pass bin put $file close bye EOF
3)最後,我們來看一看,通過wget命令來下載備份好的壓縮包。
Windows
:: cmd 腳本 :: 注意: '^' 是一個命令的換行符 set host="ftp://ftp.your.host.com" set user="flintstone" set pass="yabbadabbadoo" wget %host% --ftp-user=%user% --ftp-password=%pass% ^ --mirror --output-file=backup.log --passive-ftp
Linux
#!/bin/sh # 注意 '\' 是命令的換行符 host="ftp://ftp.your.host.com" user="username" pass="password" wget $host --ftp-user=$user --ftp-password=$pass \ --mirror --output-file=backup.log --passive-ftp
上面的那幾個命令比較簡單,只是表明一些備份的腳本思路。在實際過程當中,基本上也是這樣,下面是幾點注意。
1)給備份文件打包壓縮這是第一步,你可以選用其它的壓縮程序。如bzip。
2)文件名上有時間信息比較容易歸檔。有時候,文件包比較大,還需要對大文件進行分割(一般的壓縮軟件都支持文件分割)。
3)使用wget和ftp可能會有用戶名密碼洩露的問題,使用ssh拷貝文件會比較好。
4)源代碼最好還是使用版本控制工具備份(比如Subversion或CVS)
5)備份腳本可以放在計劃任務(linux是corn)中以實際自動化。
6)以上的方法一般說來比較適用於全部備份,而不是增量備份。