看实验
为了验证切割后的有效性,创建了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