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

2021-09-05 03:11:25 字數 1366 閱讀 2190

張宇

,北亞 伺服器資料恢復

在不同作業系統之間進行檔案傳送的方式有很多種。如果網路可通,可以使用ftp、sftp、nfs、samba(cifs)、http等方式進行傳輸;如果網路不通,則可以使用兩個作業系統之間共同支援的檔案系統進行傳輸,比如軟盤、光碟或最常用的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/rhd***獲取新硬碟裝置路徑。

3、進行資料遷移。

第一種方法:

用dd if=

要備份的檔案of=/dev/rhd*** 就可以把檔案複製到/dev/rhd***這塊硬碟上了,把這塊硬碟掛到要匯入資料的系統上,從硬碟(在虛擬機器看來,實際上是外部作業系統下的乙個檔案)開頭用winhex擷取

要備份檔案大小成目標檔案即可。

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

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

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

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

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

張宇 北亞 伺服器資料恢復 在不同作業系統之間進行檔案傳送的方式有很多種。如果網路可通,可以使用ftp sftp nfs samba cifs http等方式進行傳輸 如果網路不通,則可以使用兩個作業系統之間共同支援的檔案系統進行傳輸,比如軟盤 光碟或最常用的fat檔案系統等 還可以使用兩個作業系統...

mysql在不同作業系統下的區別

mysql在不同作業系統下的區別 mysql在linux下資料庫名 表名 列名 別名大小寫規則是這樣的 1 資料庫名與表名是嚴格區分大小寫的 2 表的別名是嚴格區分大小寫的 3 列名與列的別名在所有的情況下均是忽略大小寫的 4 變數名也是嚴格區分大小寫的 mysql在windows下都不區分大小寫。...

不同作業系統上遮蔽oracle的作業系統認證方式

windows系統上 如果不想使用者通過作業系統驗證方式登入,可以修改 sqlnet.ora檔案,把 sqlnet.authentication services nts 前面加 注釋掉就可以了。linux系統上 如果不想使用者通過作業系統驗證方式登入,可以建立乙個 sqlnet.ora 檔案,加上...