很多人可能碰過在文件產製初期,多人同時編輯文檔,卻沒有進行版本一致性控管,等到要進行驗收或交付客戶時,因同份文件有多個版本而傷腦筋,下面介紹個作法,係利用Unix/Linux的公用程式(utility),將文件過濾歸納,整合出一份最新的版本。
提醒: 若使用者的作業系統為Microsoft Windows,麻煩先將檔案複製到Unix/Linux環境下再進行版本一致性作業。
檔案版本一致性作業
A. 需求:過濾及包裹原始檔案,將其封裝成一個包裹檔案
教學範例
做法一:
1.過濾及包裹原始檔案,透過重導向轉存成一個包裹檔案。
$ find . -name "*.conf" | cpio -covB > /tmp/conf.cpio |
2.解開cpio格式的包裹檔案。
$ cpio -iduv < conf.cpio |
做法二:
1.保留原始檔屬性,過濾原始檔案,然後將其複製至另一指定的目錄下。
$ find . -name "*.conf" | cpio -pdumv /path/to/destination |
2.切換至指定的目錄下。
$ cd /path/to/destination
3.封裝成一個包裹檔案。
$ tar cvf conf.tar .
B. 需求:比較存放於不同主機的檔案群-版本差異分析
教學範例
原始檔目錄 : ~/perl
目的檔目錄 : ~/lab
1.備份原始檔案至目的檔目錄 :
bbc@ubuntu:~$ cd ~/lab
bbc@ubuntu:~/lab$ cp -r -p ~/perl/* . |
bbc@ubuntu:~/lab$ ls -l
total 28
drwxr-xr-x 4 bbc bbc 4096 2011-05-10 17:39 bnk
drwxr-xr-x 2 bbc bbc 4096 2011-05-10 17:39 cis
drwxr-xr-x 5 bbc bbc 4096 2011-05-10 17:39 etm
drwxr-xr-x 4 bbc bbc 4096 2011-05-10 17:39 hcm
drwxr-xr-x 2 bbc bbc 4096 2011-05-11 10:24 ips
-rwxr-xr-x 1 bbc bbc 1792 2011-01-17 09:50 resort_item.pl
drwxr-xr-x 7 bbc bbc 4096 2011-05-11 10:19 rpt
bbc@ubuntu:~/lab$
2. 於原始檔目錄隨意新增目錄暨變更檔案內容 :
bbc@ubuntu:~/lab$ cd ~/perl
bbc@ubuntu:~/perl$ ls -l
total 28
drwxr-xr-x 4 bbc bbc 4096 2011-05-10 17:39 bnk
drwxr-xr-x 2 bbc bbc 4096 2011-05-10 17:39 cis
drwxr-xr-x 5 bbc bbc 4096 2011-05-10 17:39 etm
drwxr-xr-x 4 bbc bbc 4096 2011-05-10 17:39 hcm
drwxr-xr-x 2 bbc bbc 4096 2011-05-11 11:39 ips
-rwxr-xr-x 1 bbc bbc 1792 2011-01-17 09:50 resort_item.pl
drwxr-xr-x 7 bbc bbc 4096 2011-05-11 10:19 rpt
bbc@ubuntu:~/perl$ mkdir test
bbc@ubuntu:~/perl$ cd test
bbc@ubuntu:~/perl/test$ echo "hello w1" > w1.pl
bbc@ubuntu:~/perl/test$ echo "hello w2" > w2.pl
bbc@ubuntu:~/perl/test$ cd ../ips
bbc@ubuntu:~/perl/ips$ ls -l
total 28
-rw-r----- 1 bbc bbc 1711 2007-07-06 17:59 cut_ips_f.pl
-rw-r----- 1 bbc bbc 1513 2007-07-06 17:59 cut_ips_h.pl
-rw-r----- 1 bbc bbc 1717 2007-07-06 17:59 cut_ips_l.pl
-rw-r----- 1 bbc bbc 1800 2011-05-11 11:39 cut_ips.pl
-rwxr-xr-x 1 bbc bbc 4983 2008-10-17 08:42 cut_rpt.pl
-rwxr-xr-x 1 bbc bbc 1645 2007-02-27 20:34 sortBill.pl
bbc@ubuntu:~/perl/ips$ echo "---------End---------" >> cut_ips.pl
bbc@ubuntu:~/perl/ips$ cd ../..
bbc@ubuntu:~$
3. 複製修改後的原始目錄檔至目的檔目錄 :
說明:上列指令僅將最新的文檔覆蓋舊版文檔,欲複製的文檔日期若等於或舊於目的文檔,則將不會進行覆寫動作,如此可確保目的目錄下的文檔板本為最新的一份‧
bbc@ubuntu:~$ cp -r -u ~/perl/* ~/lab |
4. 檢查目的檔目錄 :
bbc@ubuntu:~/lab$ ls -l
total 32
drwxr-xr-x 4 bbc bbc 4096 2011-05-10 17:39 bnk
drwxr-xr-x 2 bbc bbc 4096 2011-05-10 17:39 cis
drwxr-xr-x 5 bbc bbc 4096 2011-05-10 17:39 etm
drwxr-xr-x 4 bbc bbc 4096 2011-05-10 17:39 hcm
drwxr-xr-x 2 bbc bbc 4096 2011-05-11 10:24 ips
-rwxr-xr-x 1 bbc bbc 1792 2011-01-17 09:50 resort_item.pl
drwxr-xr-x 7 bbc bbc 4096 2011-05-11 10:19 rpt
drwxr-xr-x 2 bbc bbc 4096 2011-05-11 11:51 test
bbc@ubuntu:~/lab$ cd ips
bbc@ubuntu:~/lab/ips$ ls -l
total 28
-rw-r----- 1 bbc bbc 1711 2007-07-06 17:59 cut_ips_f.pl
-rw-r----- 1 bbc bbc 1513 2007-07-06 17:59 cut_ips_h.pl
-rw-r----- 1 bbc bbc 1717 2007-07-06 17:59 cut_ips_l.pl
-rw-r----- 1 bbc bbc 1800 2011-05-11 11:51 cut_ips.pl
-rwxr-xr-x 1 bbc bbc 4983 2008-10-17 08:42 cut_rpt.pl
-rwxr-xr-x 1 bbc bbc 1645 2007-02-27 20:34 sortBill.pl
bbc@ubuntu:~/lab/ips$ vi cut_ips.pl <===檢查cut_ips.pl內容
bbc@ubuntu:~/lab/ips$
5. 使用 find指令檢查被更改過的檔案為何 ?
下面範例是搜尋2分鐘內曾被變更過的檔案,將其含路徑的檔案名稱訊息轉存至/tmp目錄下 :
bbc@ubuntu:~/lab$ find . -cmin 2 -print > /tmp/diff.msg |
說明:可確認新舊版本的差異處,再進一步決定何種版本要保留。
轉貼自: http://tw.myblog.yahoo.com/tonywangblog2011-tonywangblog2011/article?mid=6&l=f&fid=7
留言列表