UNIX 中的檔案切割(轉)
UNIX 中的檔案切割(轉)[@more@]前幾日,為了將一臺安裝SCO UNIX 5.0.5主機上的TAR打包檔案備份, 需要將其透過網路傳送到另外一臺配有磁帶機的UNIX主機上。兩臺主機透過TX530網路卡相連,用FTP傳送的時候,前幾個檔案分別在10M、20M位元組大小,都能夠順利傳送。但其中有一個檔案壓縮後體積已達98M之巨,傳送了幾次,要麼只能傳40M, 要麼只能傳20M左右就導致網路崩潰,換畫面PING對方主機,本應為零的速率延遲降為2400多毫秒,而且誤位元速率極高,只有重新啟動兩臺主機才能恢復網路通訊。
UNIX的SHELL功能強大,非WINDOWS可比,從上面使用的TAR、FTP已可管窺。同樣,UNIX已經提供了檔案切割功能,不需要費力氣去尋找第三方的檔案切割程式。能完成這個功能的UNIX命令就是DD。
要切割的大檔案為DGJD,共98336321位元組,則:
dd if=dgjd of=zz1 bs=1 count=20000000
dd if=dgjd of=zz2 bs=1 count=20000000 skip=20000000
dd if=dgjd of=zz3 bs=1 count=20000000 skip=40000000
dd if=dgjd of=zz4 bs=1 count=20000000 skip=60000000
dd if=dgjd of=zz5 bs=1 count=18336321 skip=80000000
其中IF(INPUT FILENAME)是要切割的大檔名,OF(OUTPUT FILENAME)是切割後的子檔名,BS是指明以多少位元組作為一個切割記錄單位,COUNT是要切割的單位記錄數,SKIP是說明切割時的起點,單位同樣以BS設定值為準。透過上述五條指令就將DGJD大檔案切割成為4個2千萬位元組、1個18336321位元組的子檔案。要注意的是SKIP的值不能錯。 由此也不難看出,DD切割是“非損耗”式的切割,並且支援從任意位置開始的任意大小的切割。
要將生成的ZZ1、ZZ2、ZZ3、ZZ4四個子檔案組裝為XDGJD,則:
dd if=zz1 of=xdgjd bs=1 count=20000000
dd if=zz2 of=xdgjd bs=1 count=20000000 seek=20000000
dd if=zz3 of=xdgjd bs=1 count=20000000 seek=40000000
dd if=zz4 of=xdgjd bs=1 count=20000000 seek=60000000
dd if=zz5 of=xdgjd bs=1 count=18336321 seek=80000000
其中SKIP引數改為SEEK引數,指明組裝的新大檔案XDGJD每次的開始位置是從檔案頭開始多少位元組。如果預設,則組裝從檔案頭開始,顯然這不是我們每次都希望的, 所以需用SEEK引數明確指出開始位置。透過以上5個指令,即可將5個子檔案重新組裝為一個大檔案。
將切割後生成的子檔案重新用FTP傳送,結果有的能夠順利傳送, 有的仍然導致網路癱瘓,不怕,繼續切割,切成每個一千萬位元組,再傳,OK!成功傳送!
測試表明,每次傳送的檔案最好小於12M位元組,否則可能導致網路故障。另外,DD這個命令最初是為了進行編碼轉換而設計的,用於在大型機中將EBCDIC字元程式碼轉換為ASCII程式碼,但此功能已不常用,現在DD成了檔案系統備份的工具,以及做一些類似檔案切割的“另類業務”,正所謂“有心栽花花不開,無心插柳柳成蔭”,不過對於使用者來說,重要的是軟體能否完成自己需要的功能,它的“本職工作”是什麼並不重要,“不管白貓黑貓,捉住老鼠就是好貓”!實用為本,軟體的生命力就在於實用。
UNIX的SHELL功能強大,非WINDOWS可比,從上面使用的TAR、FTP已可管窺。同樣,UNIX已經提供了檔案切割功能,不需要費力氣去尋找第三方的檔案切割程式。能完成這個功能的UNIX命令就是DD。
要切割的大檔案為DGJD,共98336321位元組,則:
dd if=dgjd of=zz1 bs=1 count=20000000
dd if=dgjd of=zz2 bs=1 count=20000000 skip=20000000
dd if=dgjd of=zz3 bs=1 count=20000000 skip=40000000
dd if=dgjd of=zz4 bs=1 count=20000000 skip=60000000
dd if=dgjd of=zz5 bs=1 count=18336321 skip=80000000
其中IF(INPUT FILENAME)是要切割的大檔名,OF(OUTPUT FILENAME)是切割後的子檔名,BS是指明以多少位元組作為一個切割記錄單位,COUNT是要切割的單位記錄數,SKIP是說明切割時的起點,單位同樣以BS設定值為準。透過上述五條指令就將DGJD大檔案切割成為4個2千萬位元組、1個18336321位元組的子檔案。要注意的是SKIP的值不能錯。 由此也不難看出,DD切割是“非損耗”式的切割,並且支援從任意位置開始的任意大小的切割。
要將生成的ZZ1、ZZ2、ZZ3、ZZ4四個子檔案組裝為XDGJD,則:
dd if=zz1 of=xdgjd bs=1 count=20000000
dd if=zz2 of=xdgjd bs=1 count=20000000 seek=20000000
dd if=zz3 of=xdgjd bs=1 count=20000000 seek=40000000
dd if=zz4 of=xdgjd bs=1 count=20000000 seek=60000000
dd if=zz5 of=xdgjd bs=1 count=18336321 seek=80000000
其中SKIP引數改為SEEK引數,指明組裝的新大檔案XDGJD每次的開始位置是從檔案頭開始多少位元組。如果預設,則組裝從檔案頭開始,顯然這不是我們每次都希望的, 所以需用SEEK引數明確指出開始位置。透過以上5個指令,即可將5個子檔案重新組裝為一個大檔案。
將切割後生成的子檔案重新用FTP傳送,結果有的能夠順利傳送, 有的仍然導致網路癱瘓,不怕,繼續切割,切成每個一千萬位元組,再傳,OK!成功傳送!
測試表明,每次傳送的檔案最好小於12M位元組,否則可能導致網路故障。另外,DD這個命令最初是為了進行編碼轉換而設計的,用於在大型機中將EBCDIC字元程式碼轉換為ASCII程式碼,但此功能已不常用,現在DD成了檔案系統備份的工具,以及做一些類似檔案切割的“另類業務”,正所謂“有心栽花花不開,無心插柳柳成蔭”,不過對於使用者來說,重要的是軟體能否完成自己需要的功能,它的“本職工作”是什麼並不重要,“不管白貓黑貓,捉住老鼠就是好貓”!實用為本,軟體的生命力就在於實用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-947699/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- UNIX的檔案處理(轉)
- 提升 UNIX 中檔案系統使用效率(轉)
- bash切割檔案
- NFS-UNIX 中的網路檔案系統(轉)NFS
- linux下檔案的切割與合併(轉)Linux
- UNIX下去除檔案中重複資料的方法(轉)
- 某檔案切割工具
- unix口令檔案介紹(轉)
- unix下複製檔案(轉)
- UNIX檔案的SUID/SGID(轉)UI
- unix freebsd 配製檔案(轉)
- UNIX系統下各檔案的作用(轉)
- 如何在Linux中進行檔案切割操作?Linux
- 去掉檔案中LF(dos->unix)
- Unix與FreeBSD下檔案的屬性(轉)
- Unix/ELF檔案格式及病毒分析(轉)
- Unix檔案安全檢查利器- Tripwire(轉)
- Unix/ELF檔案格式及病毒分析 (轉)
- Java實現檔案切割拼接Java
- unix檔案操作
- UNIX系統被刪檔案的恢復策略(轉)
- Linux大檔案的切割與合併Linux
- 檔案切割以及合併筆記筆記
- [譯] 在 UNIX 中,一切皆檔案
- 中轉檔案
- 遷移和移動 UNIX 檔案系統(轉)
- Unix使用者登陸shell控制檔案(轉)
- Centos檔案切割利器_split命令及cat命令合併檔案CentOS
- Linux/Unix中的SUID和SGID檔案許可權和在CVS專案管理中的應用 (轉)LinuxUI專案管理
- 轉載hp--unix下檔案系統的擴充套件套件
- UNIX中的精靈程式 (轉)
- Linux/Unix下pid檔案作用淺析(轉)Linux
- DOS/Windows和Linux/Unix間檔案格式轉換WindowsLinux
- UNIX下讓ORACLE定時執行*.sql檔案(轉)OracleSQL
- Unix 檔案查詢命令
- 如何用 grep 命令在 UNIX 中根據檔案內容查詢檔案
- ffmpeg用法-mp4檔案合成,切割功能
- 【小程式】切割和合並mp3檔案