天天看點

利用tar或dd在不同作業系統間傳輸檔案的另類方法

  在不同作業系統之間進行檔案傳送的方式有很多種。如果網絡可通,可以使用FTP、SFTP、NFS、SAMBA(CIFS)、HTTP等方式進行傳輸;如果網絡不通,則可以使用兩個作業系統之間共同支援的檔案系統進行傳輸,比如軟碟、CD光牒或最常用的FAT檔案系統等;還可以使用兩個作業系統共同支援的備份裝置進行傳輸,比如錄音帶備份(嚴格講,也是基于共同支援的依賴于硬體的檔案系統)。

  可現在我遇到的一個XENIX系統就麻煩得多了:網絡不工作(可能是我不會,呵呵),mkdev dos也不支援,試圖mount一個msdos檔案系統也不成功,又沒有錄音帶機等裝置,資料量也很大,軟碟備份也不太可靠。

  這個系統已經很老了,客戶已經報廢了這套系統,但裡面的資料希望能拷貝出來,遷移到新的系統上(新系統應該是現在主流的WINDOWS\LINUX或UNIX,傳入檔案都不是大問題)。

  我接手時,遇到很多問題,系統無法啟動,硬碟損壞等,後來雖然全部解決了(解決過程稍後有機會記錄),但COPY檔案真是為難了我了。

  一個好的辦法是,自己寫個檔案系統的解釋程式(類似于驅動),這個方式會麻煩一些,同時需要對檔案系統底層結構做下深入研究。這種做法我也做成功了,但畢竟适用性差,有點大材小用。先不講這個,看另外的方法:利用所有作業系統對硬碟IO的相容性,用dd或tar直接在祼裝置上進行檔案傳輸:

  dd是一個向裝置進行位元組完整輸入輸出的程式。

  tar是一個備份/打包/壓縮程式。

  為了操作友善,我在虛拟機下完成這個任務。

  1、将原資料硬碟挂接到建立的一個虛拟機環境下,在虛拟機環境下建一個flat硬碟(建立時即完全配置設定空間的硬碟,硬碟的大小應略大于導出資料總和),啟動xenix系統(這個系統和硬體關系不大)。

  2、啟動後執行mkdev hd對新硬碟自動mknod,分不分區無所謂。完成後,通過ls /dev/rhd* 以及 fdisk -f /dev/rhdXXX擷取新硬碟裝置路徑。

  3、進行資料遷移。

  第一種方法:

    用dd if=要備份的檔案 of=/dev/rhdXXX 就可以把檔案複制到/dev/rhdXXX這塊硬碟上了,把這塊硬碟挂到要導入資料的系統上,從硬碟(在虛拟機看來,實際上是外部作業系統下的一個檔案)開頭用WINHEX截取要備份檔案大小成目标檔案即可。

  第二種方式(可以導出大量檔案):

    tar -cvf /dev/rhdXXX / (把/下所有的檔案打包輸出到/dev/rhdXXX裝置上),然後操作同上,在另外的系統上截取資料即可(如果是在虛拟機裡,可以直接用tar或RAR等檔案解壓vmdf檔案,不需截取資料)

  第三種方式(tar與dd聯合):

    tar -cvf - / | dd of=/dev/rhdXXX (利用管道操作,與第二種方式相同)

本文轉自 張宇 51CTO部落格,原文連結:http://blog.51cto.com/zhangyu/161426,如需轉載請自行聯系原作者

繼續閱讀