皮皮网
皮皮网

【重写ros源码】【python zipline源码】【linux 编译 源码】cp源码 百度网盘

来源:电影源码解析 发表时间:2024-12-22 21:14:50

1.搭建nextcloud私有云存储网盘的源码教程详解
2.源码详解系列(八)--全面讲解HikariCP的使用和源码
3..cp是什么意思?
4.[转]Megatron-LM源码系列(八): Context Parallel并行
5.linux中cp命令如何用 C语言实现

cp源码 百度网盘

搭建nextcloud私有云存储网盘的教程详解

       Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的百度云同步网盘,从而实现跨平台跨设备文件同步、网盘共享、源码版本控制、百度重写ros源码团队协作等功能。网盘python zipline源码它的源码客户端覆盖了Windows、Mac、百度Android、网盘iOS、源码Linux 等各种平台,百度也提供了网页端以及 WebDAV接口,网盘所以你几乎可以在各种设备上方便地访问你的源码linux 编译 源码云盘。

       简介:

        搭建个人云存储一般会想到ownCloud,百度堪称是网盘自建云存储服务的经典。而Nextcloud是ownCloud原开发团队打造的号称是“下一代”存储.

        真正试用过后就由衷地赞同这个Nextcloud:它是个人云存储服务的绝佳选择。一开始以为Nextcloud只是psd教程源码一个网盘云存储,后来看到

        Nextcloud内置了Office文档、相册、日历联系人、两步验证、话题网站源码文件管理、RSS阅读等丰富的应用,我发现Nextcloud已经仅仅可以

        用作个人或者团队存储与共享,还可以打造成为一个个人办公平台,几乎相当于一个个人的Dropbox了。Nextcloud运行环境与平常我们

        常用的程序差不多,LAMP是官方首选,不过LNMP也照样可以运行,只不过需要自己写URL重写规则。当然,官方还提供了SNAP一键安装包

        注:以上来自网上某处,重点是下面的安装

       本篇采用rpm源码安装,本人亲测有效,在线或一键安装没难度,请自行百度,

       1.安装LAMP架构:

       注:为了避免权限,网络问题等请用root用户或较高级别账号登录再操作

       yum install -y tl.h>

       #include <errno.h>

       #include <unistd.h>

       #include <string.h>

       #define BUF_SIZE 

       #define PATH_LEN 

       void my_err(char *err_string, int line )

       {

           fprintf(stderr,"line:%d ",line);

           perror(err_string); 

           exit(1);

       }

       void copy_data(const int frd,const int fwd)

       {

           int read_len = 0, write_len = 0;

           unsigned char buf[BUF_SIZE], *p_buf;

           while ( (read_len = read(frd,buf,BUF_SIZE)) ) {

               

               if (-1 == read_len) {

                   my_err("Read error", __LINE__);

               }

               else if (read_len > 0) {  //把读取部分写入目标文件

                   p_buf = buf;

                   while ( (write_len = write(fwd,p_buf,read_len)) ) {

                       if(write_len == read_len) {

                           break;

                       }

                       else if (write_len > 0) {  //只写入部分

                           p_buf += write_len;

                           read_len -= write_len;

                       }

                       else if(-1 == write_len) {

                           my_err("Write error", __LINE__);

                       }

                   }

                   if (-1 == write_len) break;

               }

           }

       }

       int main(int argc, char **argv) 

       {

           

           int frd, fwd; //读写文件描述符

           int len = 0;

           char *pSrc, *pDes; //分别指向源文件路径和目标文件路径

           struct stat src_st,des_st;

           

           if (argc < 3) {

               printf("用法 ./MyCp <源文件路径> <目标文件路径>\n");

               my_err("arguments error ", __LINE__);

           }

           

           frd = open(argv[1],O_RDONLY);

           if (frd == -1) {

               my_err("Can not opne file", __LINE__);

           }

           if (fstat(frd,&src_st) == -1) {

               my_err("stat error",__LINE__);

           }

           /*检查源文件路径是否是目录*/

           if (S_ISDIR(src_st.st_mode)) {

               my_err("略过目录",__LINE__);

           }

           

           pDes = argv[2];

           stat(argv[2],&des_st);

           if (S_ISDIR(des_st.st_mode)) {  //目标路径是目录,则使用源文件的文件名

               

               len = strlen(argv[1]);

               pSrc = argv[1] + (len-1); //指向最后一个字符

               /*先找出源文件的文件名*/

               while (pSrc >= argv[1] && *pSrc != '/') {

                   pSrc--;

               }

               pSrc++;//指向源文件名

               

               len = strlen(argv[2]); 

               // . è¡¨ç¤ºå¤åˆ¶åˆ°å½“前工作目录

               if (1 == len && '.' == *(argv[2])) {

                   len = 0; //没有申请空间,后面就不用释放

                   pDes = pSrc;

               }

               else {  //复制到某目录下,使用源文件名

                   pDes = (char *)malloc(sizeof(char)*PATH_LEN);

                   if (NULL == pDes) {

                       my_err("malloc error ", __LINE__);

                   }

                   

                   strcpy(pDes,argv[2]);

               

                   if ( *(pDes+(len-1)) != '/' ) {  //目录缺少最后的'/',则补上’/‘

                       strcat(pDes,"/");

                   }

                   strcat(pDes+len,pSrc);

               }

           }

           

           /* æ‰“开目标文件, ä½¿æƒé™ä¸Žæºæ–‡ä»¶ç›¸åŒ*/ 

           fwd = open(pDes,O_WRONLY | O_CREAT | O_TRUNC,src_st.st_mode);

           if (fwd == -1) {

               my_err("Can not creat file", __LINE__);

           }

           copy_data(frd,fwd);

           //puts("end of copy");

           if (len > 0 && pDes != NULL)

               free(pDes);

           

           close(frd);

           close(fwd);

           return 0;

       }

相关栏目:综合