Форум программистов, компьютерный форум CyberForum.ru

Backup - C++ Linux

Восстановить пароль Регистрация
 
ildar411
1 / 1 / 1
Регистрация: 13.10.2016
Сообщений: 7
19.10.2016, 21:01     Backup #1
это код cp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#define MAX_SIZE 65536
 
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
 
void cpy(char * from, char * to);
 
int main (int argc, char * argv[], char* envp[]) {
    if (argc < 3)
    {
        perror("Incorrect input of path");
        exit(-1);
    }
    if (!strcmp(argv[1], argv[2]))
    {
        return 0;
    }
    
    //printf ("start copying: %s to %s\n", argv[1], argv[2]);
    cpy(argv[1], argv[2]);
    
    
    return 0;
}
 
void cpy(char * from, char * to) {
    //printf("%s %s\n", from, to);
    DIR * dir;
    dir = opendir(from);
    if (!dir)
    {
        printf("No such file or directory\n");
        exit(1);
    }
    
    struct dirent * curr=readdir(dir);
    curr=readdir(dir);
    
    while ((curr=readdir(dir))!=NULL) {
        char* pathFrom = (char*)calloc(sizeof(char), (strlen(from) + strlen(curr->d_name) + 1));
        char* pathTo = (char*)calloc(sizeof(char), (strlen(to) + strlen(curr->d_name) + 1));
        strcat(strcat(strcat(pathFrom, from), "/"), curr->d_name);
        strcat(strcat(strcat(pathTo, to), "/"), curr->d_name);
        
        //printf("%s\n", pathFrom);
        
        struct stat Stat;
        stat(pathFrom, &Stat);
        if (S_ISDIR(Stat.st_mode)) {
            //printf("directory\n");
            mkdir(pathTo, Stat.st_mode);
            //printf("%s %s\n", pathFrom, pathTo);
            cpy(pathFrom, pathTo);
            
            free(pathFrom);
            free(pathTo);
           // printf("успешно\n");
            
        } else {
           // printf("file\n");
            
            int input=open(pathFrom, O_RDONLY), output=open(pathTo, O_RDWR|O_CREAT, 0666), result;
            
            int _flag=0;
            while (_flag==0) {
                char * buff=(char *)calloc(sizeof(char), MAX_SIZE);
                if ((result=read(input, buff, MAX_SIZE))==-1) {
                    printf("Error in read\n");
                    exit(-1);
                } else if ((result<MAX_SIZE)&&(result>=0)) {
                    _flag=1;
                }
                if ((result=write(output, buff, MAX_SIZE))==-1) {
                    printf("Error in write\n");
                    
                }
                free(buff);
                
                //printf("успешно\n");
                
                
            }
            free(pathFrom);
            free(pathTo);
        }
    }
}
из него надо сделать backup дополнив
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2016, 21:01     Backup
Посмотрите здесь:

Backup в 1С
Горячий backup Oracle
FreeBSD Полный Backup
Need Backup C#
Ubuntu Linux Backup Wine'a
Backup Recovery Oracle
Backup Windows 7 Windows 7
Acronis backup
WordPress Wordpress backup
Windows 7 Backup программ

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 15:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru