2008-11-13 28 views
2

以下是方案 - 客戶端將Sybase轉儲文件上傳到(gzip)到我們的本地FTP服務器。我們有一個自動化的過程,將它們挑選出來,然後將它們移動到數據庫服務器所在網絡內的不同服務器上。不幸的是,這種傳輸是通過廣域網進行的,對於大文件需要很長時間,有時我們的客戶忘記以二進制模式進行FTP,這導致在我們的廣域網上傳輸10GB數據,因爲轉儲文件無法加載在另一端。我想要做的是在通過WAN發送出去之前驗證本地服務器上轉儲文件的完整性,但我不能只嘗試「加載」轉儲文件,因爲我們沒有Sybase安裝(並且不能安裝它)。是否有任何工具或代碼可用於執行此操作?如何驗證Sybase轉儲文件的完整性,而不嘗試加載它?

回答

3

您可以從命令行執行一些操作。第一,在發送方面,是生成文件的md5sum。

$ md5sum *.dmp 
2bddf3cd8b04010183dd3295ce7594ff pubs_1.dmp 
7510e0250c8d68bae3e0e794c211e60b pubs_2.dmp 
091fe54fa5fd81d8c109cc7835d37f4a pubs_3.dmp 

在客戶端,它們可以運行相同。其次,通常使用compress選項完成Sybase轉儲。如果使用此選項,則還可以通過命令行解壓縮文件來測試文件的完整性。這並不完整,但它將驗證是壓縮算法一部分的8字節CRC-32校驗和。

$ gunzip --test *.dmp 
gunzip: pubs_3.dmp: unexpected end of file 

這兩種方法都沒有驗證Sybase能夠加載文件,但它確實有助於確保文件沒有損壞。

0

如果沒有備份服務器以某種方式加載轉儲文件,沒有辦法真正驗證轉儲文件的完整性。在轉儲過程中,客戶端應該通過備份日誌或輸出知道轉儲是否成功。

但是爲了解決您的問題,您應該使用SFTP或SCP,所有傳輸都是以二進制方式完成的,可以緩解您的問題。

確保它們在轉儲中使用的壓縮數值是1-3還綽綽有餘,這也應該減少您的網絡流量。