首页 > 编程知识 正文

shell脚本实现文件备份,linux项目开发实例

时间:2023-05-04 05:14:40 阅读:19349 作者:394

传统的文件传输(读/写)要求通过多个上下文开关最终将文件写入套接字(read ) file、tmp_buf和len )。

write (套接字,tmp_buf,len );

传统的文件读写过程

1、调用read函数,将文件数据复制到内核缓冲区。

2、read函数从内核缓冲区取出文件数据,复制到用户缓冲区。

3、写函数将文件数据从用户缓冲区复制到套接字相关缓冲区。

4、将数据从套接字缓冲区复制到协议引擎。

传统的网络传输过程进行了四次复制操作。

磁盘内核缓冲区-用户缓冲区socket协议引擎相关缓冲区

sendfile操作文件进程sendfile (套接字,文件,len );

1、调用sendfile,将文件数据复制到内核缓冲区。

2、从内核缓冲区复制到套接字缓冲区。

3、从套接字缓冲区复制到协议引擎。

与传统方法相比,sendfile更容易减少文件复制过程内核2.4中的sendfile。

2.1和2.4的区别

如果在2.4中将文件数据复制到内核缓冲区,则数据不再复制到套接字缓冲区,而只记录套接字缓存的位置和长度。 数据将直接发送到DMA协议引擎,减少复制操作,支持的数据不应超过2G。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。