2009-02-10 为什么cpio要比tar好
为什么cpio比tar好?有这样几个原因。 1、cpio会保留硬连接(hard link),备份的时候这个很重要 2、cpio没有文件名长度的限制。确实,guntar在这一点上做过改进,允许使用长文件名(实际上是创建了一个临时文件用来保存实际的文件名),但是在非gnu的tar工具上仍然存在这个问题。 3、默认情况下,cpio保留时间戳 4、在编写脚本的时候,cpio可以更好的控制要操作哪些文件。因为cpio需要显式的制定要操作的文件列表,例如下面哪个更加容易理解?
或者在Solaris上:
或者用gnutar:
`` find . -type f -name '*.sh' -print >/tmp/includeme tar -cf - . --files-from=/tmp/includeme | gzip >sh.tar.gz
find . -depth -print >/tmp/files egrep '.sh$' /tmp/files | cpio -o | gzip >with.cpio.gz egrep -v '.sh$' /tmp/files | cpio -o | gzip >without.cpio.gz
find . -depth -print >/tmp/files egrep '.sh$' /tmp/files >/tmp/with tar -cf - . -I /tmp/with | gzip >with.tar.gz tar -cf - . /tmp/without | gzip >without.tar.gz
find . -depth -print >/tmp/files egrep '.sh$' /tmp/files >/tmp/with tar -cf - . -I /tmp/with | gzip >with.tar.gz tar -cf - . -X /tmp/without | gzip >without.tar.gz
find . -depth -print >/tmp/files split /tmp/files for F in /tmp/files?? ; do cat $F | cpio -o | ssh destination "cd /target && cpio -idum" & done
```
注意,如果能够将输入平均分成几个部分来进行并行处理会更好。
最后更新于