tar_ssh 配合下载文件(适合于带宽充足传输大量小文件场景)
局域网网速快,但是当要传输大量小文件时倘若仍然使用scp,由于每个文件传输完毕都需要独立进行传输完毕的确认,这样就无法充分利用带宽。一方面等待确认时tcp窗口无法填满,另一方面文件传完之前确认也不会开始读下一个文件。
而ssh tar传输方式则恰对应与该场景,将所有文件变成一条流,连续传输,省掉了linux的传输确认过程。
#不带压缩
ssh ${username}@${ip} '(cd ${src_folder_path}&&tar -cf - ${src_folder_name} | cat)' | tar xfv - -C ${dst_path}
#带压缩
ssh ${username}@${ip} '(cd ${src_folder_path}&&tar -cf - ${src_folder_name} | cat | gzip -1)' | gzip -d | tar xfv - -C ${dst_path}
spawn bash -c "ssh ${username}@${ip} '(cd ${src_folder_path};tar -cf - ${src_folder_name} | cat)' | tar xfv - -C ${dst_path}" expect { "(yes/no)?" { send "yes\r";exp_continue } "*assword:*" { send "${password}\r" } }