海量小文件备份

案例:tom blog的file服务器,因为所有的图片都是以/data/xxx/xxx/blog/yeah/month/day/article/xxx.jpg,文件不大,但是目录深,数量多。 
以ftp,sftp传大量小文件毫无疑问非常慢;而rsync是需要文件遍历之后再传输的,rsync给每个文件的每层目录都分配一个FD(文件描述符),对系统资源浪费极大,几个小时都还没遍历完。 
这样的情况下,下面的传输方法就非常实用: 
tar -cf - /data/xxx/xxx/blog | ssh user@dst_host tar -C target_dir -xvf - 
将目录打包到标准输出,再通过ssh通道传送到远端之后解包。 
这个命令的机制是不遍历的,又不需要占用系统太多的FD,是个折衷的办法,能解决文件备份的问题。 

PS:
如果我要
tar -cf - /data/xxx/blog |ssh root@dst_host tar -cf target_dir.tar -
 行不?

或者换一种说法:
我现在机器上硬盘空间不够了

想把目录用tar 打成包传到另一台机器上(本机不留,因为没有空间了)
上面命令可以吧?
解决方法:
tar -cf - /data/xxx/blog | ssh root@host "cat > my.tar" 

猜你喜欢

转载自mailx8.iteye.com/blog/2350841