使用dd命令切割文件

看實驗

爲了驗證切割後的有效性,創建了a.txt,b.txt 和一個10M的空文件然後壓縮
[root@localhost test]# echo 1 >> a.txt
[root@localhost test]# echo 2 >> b.txt
[root@localhost test]# dd if=/dev/zero of=testfile bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.016804 seconds, 624 MB/s

[root@localhost test]# tar cvf test.tar.gz testfile a.txt b.txt 
testfile
a.txt
b.txt
[root@localhost test]# ls
a.txt  b.txt  testfile  test.tar.gz
[root@localhost test]# rm -f a.txt b.txt testfile 
[root@localhost test]# 
[root@localhost test]# 
[root@localhost test]# du -h test.tar.gz 
11M	test.tar.gz
[root@localhost test]# du test.tar.gz 
10268	test.tar.gz

通過du命令查看文件大小爲10268k,下面用dd切割爲3份,5000+5000+268

[root@localhost test]# dd if=test.tar.gz of=test.tar.gz_1 bs=1k count=5000
5000+0 records in
5000+0 records out
5120000 bytes (5.1 MB) copied, 0.019158 seconds, 267 MB/s

注意這裏skip=5000,意思就是說從第5000k開始寫數據

[root@localhost test]# dd if=test.tar.gz of=test.tar.gz_2 bs=1k skip=5000 count=5000 
5000+0 records in
5000+0 records out
5120000 bytes (5.1 MB) copied, 0.021693 seconds, 236 MB/s

因此這裏就要從第10000k開始寫數據,這裏就不需要加count了讀取到文件最後一個塊

[root@localhost test]# dd if=test.tar.gz of=test.tar.gz_3 bs=1k skip=10000 
250+0 records in
250+0 records out
256000 bytes (256 kB) copied, 0.000541 seconds, 473 MB/s

從ll命令可以看到3個文件大小和正好等於切割前的文件大小

[root@localhost test]# ll
總計 20548
-rw-r--r-- 1 root root 10496000 09-02 01:33 test.tar.gz
-rw-r--r-- 1 root root  5120000 09-02 01:35 test.tar.gz_1
-rw-r--r-- 1 root root  5120000 09-02 01:36 test.tar.gz_2
-rw-r--r-- 1 root root   256000 09-02 01:37 test.tar.gz_3


dd還原

[root@localhost test]# dd if=test.tar.gz_1 of=test_new.tar.gz
10000+0 records in
10000+0 records out
5120000 bytes (5.1 MB) copied, 0.037999 seconds, 135 MB/s

seek=5000 由於前面我們已經往test_new.tar.gz寫入了5000k,因此我們需要從第5000k也就是第5000個塊開始寫

[root@localhost test]# dd if=test.tar.gz_2 of=test_new.tar.gz bs=1k seek=5000
5000+0 records in
5000+0 records out
5120000 bytes (5.1 MB) copied, 0.047617 seconds, 108 MB/s

前面已經寫入了10000k,因此這裏seek=10000

[root@localhost test]# dd if=test.tar.gz_3 of=test_new.tar.gz bs=1k seek=10000
250+0 records in
250+0 records out
256000 bytes (256 kB) copied, 0.001094 seconds, 234 MB/s


驗證結果:

[root@localhost test]# ll
總計 30816
-rw-r--r-- 1 root root 10496000 09-02 01:50 test_new.tar.gz
-rw-r--r-- 1 root root 10496000 09-02 01:44 test.tar.gz
-rw-r--r-- 1 root root  5120000 09-02 01:44 test.tar.gz_1
-rw-r--r-- 1 root root  5120000 09-02 01:44 test.tar.gz_2
-rw-r--r-- 1 root root   256000 09-02 01:45 test.tar.gz_3

如果前面還原有問題這裏解壓將會報錯。

[root@localhost test]# tar xvf test_new.tar.gz 
testfile
a.txt
b.txt
[root@localhost test]# cat a.txt 
1
[root@localhost test]# cat b.txt 
2


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章