看實驗
爲了驗證切割後的有效性,創建了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