close

文件版本 一致性作法

分類:解決方案
2011/10/11 13:00

       很多人可能碰過在文件產製初期,多人同時編輯文檔,卻沒有進行版本一致性控管,等到要進行驗收或交付客戶時,因同份文件有多個版本而傷腦筋,下面介紹個作法,係利用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

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 小宇哥 的頭像
    小宇哥

    小宇哥的CS學習筆記

    小宇哥 發表在 痞客邦 留言(0) 人氣()