• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[C++] Jak porównywać stany plików? (opis)

VPS Starter Arubacloud
0 głosów
298 wizyt
pytanie zadane 19 lutego 2018 w C i C++ przez Hiskiel Pasjonat (22,830 p.)

Witam! Stworzyłem trywialny program który (jeśli dany pendrive jest "dostępny") uruchamia z pendrive plik. Czyli w skrócie, wkładam pena do portu a program to wykrywa i uruchamia odpowiedni plik z niego. Jest to akurat kopia zapasowa. Teraz chcę przerobić ten programu, na pełnoprawną kopię zapasową. Tylko problem jest taki, że zaraz po skopiowania odpowiednich plików wychodzę z programu, chciałbym, żeby program zapisywał stan ików. Co jakiś czas ma on zostać zapisany i sprawdzony. Czyli coś w stylu

If(GetLastFilesStatus()!=GetCurrentFileStatus()){
    SaveCurrentFilesStatus();
    CopyFiles("Path","Path");
}

jak można coś takiego zrobić?

komentarz 19 lutego 2018 przez Piotr Wilk Nowicjusz (200 p.)
Co to za biblioteka?
1
komentarz 19 lutego 2018 przez Hiskiel Pasjonat (22,830 p.)
To nie żadna biblioteka :D. Napisałem to tak dla zobrazowania.

Jest jedynie funkcja CopyFile z windows.h

CopyFile(from, to, error if exists);

Czyli

CopyFile("C:\a.txt", "C:\tmp\a_cpy.txt", true);

1 odpowiedź

+1 głos
odpowiedź 19 lutego 2018 przez draghan VIP (106,230 p.)
wybrane 19 lutego 2018 przez Hiskiel
 
Najlepsza
Najprościej chyba porównywać czas modyfikacji pliku źródłowego i docelowego.
komentarz 19 lutego 2018 przez Hiskiel Pasjonat (22,830 p.)

Nie wiem czy takie coś jest dobre, ale po prostu będę sprawdzał czas modyfikacji danego folderu (jest to akurat folder z projektami cpp, z ktorego pliki chciałem kopiować na pena) (u mnie po prostu Cpp) i zapisywał w jakiejś zmiennej (po wcześniejszym wyciągnięciu samego czasu, nie daty) i potem porównywał z aktualnym czasem (oczywiście po "wyciągnięciu" i sparsowaniu go) który będzie w zmiennej. Potem aktualny czas idzie to starego czasu, aktualny do nowego...

while(1){
    string CurrentTime = GCFMT() //GetCurrentFileModificationTime
    if(LastTime.compare(CurrentTime)!=0){
    //Kopiowanie pliku, seria ifów itd
    LastTime=CurrentTime;
    }
    Sleep(5000);
}

Nie potrafię tłumaczyć, kod powinien wszystko wyjaśnić.

 

komentarz 19 lutego 2018 przez mokrowski Mędrzec (155,460 p.)
Ma. Możesz mieć taki sam czas a dane się zmieniły. Tak... to "szczególarstwo" ale jeśli miało by zabraknąć kluczowego pliku, to nie chciał bym takiego systemu backupu.

Jak powiedziałem.. do zabaw wystarcza takie założenie jakie poczyniłeś. Bez backupów różnicowych i przyrostowych, czasów kreacji, modyfikacji i dostępu do pliku.
komentarz 20 lutego 2018 przez draghan VIP (106,230 p.)

Masz całkowitą rację, morkowski. Wczoraj miałem jakieś zaćmienie umysłu i nie rozpatrzyłem tego warunku, a jedynie odwrotny - dane się nie zmieniają, a czas tak. Heh. laugh

komentarz 20 lutego 2018 przez Hiskiel Pasjonat (22,830 p.)
No, tylko że moja teoria poszła się walić. Mam sobie folder Cpp, w którym są foldery z projektami, w których są pliki cpp. Kiedy z modyfikuje plik cpp, to folder z projektem też się zmienia (w sensie, czas modyfikacji się zmienia), ale ten "główny" folder Cpp się nie zmienia.
komentarz 20 lutego 2018 przez mokrowski Mędrzec (155,460 p.)
Do takich zabaw jest już "kombajn" który nazywa się rsync. Poszukaj informacji o tym jak to skonfigurować. Serwer może kopiować pliki poprzez sieć do wspólnego repozytorium. Oczywiście rozwiązań jest jeszcze więcej.

Podobne pytania

0 głosów
1 odpowiedź 479 wizyt
0 głosów
1 odpowiedź 216 wizyt
pytanie zadane 6 grudnia 2017 w PHP przez DaltooN Początkujący (430 p.)
+2 głosów
3 odpowiedzi 639 wizyt
pytanie zadane 13 kwietnia 2015 w C i C++ przez 97kos Obywatel (1,390 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...