Skip to content
Menu
files.fm blog
  • List of all instructions (EN)
  • Instrukciju saraksts (LV)
  • Blog posts
    • Cloud storage
    • Files.fm
    • Files.fm Library
    • Security and privacy
    • Technology
    • Tips and tricks
  • About
  • Kā pārdot video semināru Failiem.lv platformā?
files.fm blog

Rezerves kopiju veidošanas process

Posted on January 1, 2019November 14, 2019

Ievads

Duplicati ir atvērtā pirmkoda programma, kas ļauj veidot rezerves kopijas un kam nav servera puses komponentes, tādējādi programma var atbalstīt dažādus uz attālinātu glabāšanu balstītus pakalpojumu sniedzējus. Tas gan nozīmē, ka programma saskaras ar lielu latentumu, savienojuma zudumiem un tā var pievienot un dzēst failus, bet nav iespējams modificēt jau esošos failus. Duplicati tiek galā ar šim problēmām, izmantojot uzglabāšanas formātus, kas apvieno mazus failus un sadala lielus failus, atbalsta šifrēšanu, kompresiju un deduplikāciju1, rezerves kopiju versijas un inkrementālās2 rezerves kopijas. Šajā rakstā tiks paskaidrots, kā tiek veidotas rezerves kopijas un glabātas attālinātā uzglabāšanas vietā un attēlots, kā process darbojas.

Avota dati

Piemērā process tiek veikts nelielai mapei ar failiem. Mapes saturs ir sekojošs:

C:\data
|----> mydoc.txt, 4kb
|----> myvideo.mp4, 210kb
|----> extra
       |-----> olddoc.txt, 2kb
       |-----> samevideo.mp4, 210kb

Rezerves kopiju veidošanas process

Tā kā programma darbojas tikai ar absolūtiem ceļiem, mapju un failu saraksts tiek attēlots šādi:

C:\data\
C:\data\mydoc.txt
C:\data\myvideo.mp4
C:\data\extra\
C:\data\extra\olddoc.txt
C:\data\extra\samevideo.mp4

Lai glabātu informāciju par rezerves kopiju saturu, tiek izmantoti standarta failu formāti, kā arī JSON datu formāts un Zip kompresēšana.

Lai glabātu failu sarakstu, programma izveido failu ar nosaukumu duplicati-20161014090000.dlist.zip, kur ciparu virkne atpoguļo tekošo laiku un datumu UTC laika zonā. Zip arhīvā ir JSON fails ar nosaukumu filelist.json. Sākumā fails satur tukšu sarakstu, kas JSON formātā tiek aprakstīts kā [].

Lai glabātu datus no faila, programma izveido failu ar nosaukumu duplicati-7af781d3401eb90cd371.dblock.zip, kur cipari un burti ir izvēlēti nejauši un tiem nav nekāda sakara ar datiem un pašreizējo laiku. Sākotnējais arhīva fails ir tukšs.

Mapes apstrāde

Kad programma saņem pirmo ierakstu – C:\data\ – tā pamana, ka ieraksts ir mape un tādējādi tai nav datu. Ieraksts tiek ievietots failā ar nosaukumu filelist.json, kas minēts šī raksta iepriekšējā sadaļā.

Šobrīdī fails izskatās šādi:

[
  {
  "type": "folder",
  "path": "C:\\data\\"
  }
]

Reālā situācijā failā tiek glabāti arī metadati – atļaujas, modifikācijas laiki u.t.t., bet šajā gadījumā tie netiks iekļauti.

Mazu failu apstrāde

Nākamais ieraksts ir C:\data\mydoc.txt, kas ir fails, tātad tas satur informāciju. Programma nolasīs failu pa blokiem, kas pēc noklusējuma ir 100KB katrs. Ja fails, piemēram, ir 4KB, tas ietilpst vienā blokā. Pēc bloka nolasīšanas, programma aprēķina SHA-256 heša vērtību un sašifrē ar Base64 šifrēšanu, lai iegūtu virkni:  qaFXpxVTuYCuibb9P41VSeVn4pIaK8o3jUpJKqI4VF4=. Pēc tam tiek aprēķināta SHA-256 vērtība visam failam un sašifrēta ar Base64. Tā kā blokam un failam ir viens un tas pats saturs, rezultātā vērtība ir tā pati: qaFXpxVTuYCuibb9P41VSeVn4pIaK8o3jUpJKqI4VF4=.

Jāpiezīmē, ka papildus informācija hešam netiek pievienota. Tas nav nepieciešams, jo heša vērtība nav redzama pēc tam, kad arhīvi ir sašifrēti, tādējādi nedodot nekādus pavedienus, ko rezerves kopijas satur.

Pēc tam dati tiek pievienoti dblock failam, kas pieminēts iepriekš, izmantojot virkni kā faila nosaukumu. Tas nozīmē, ka dblock arhīva faila saturs tekošajā brīdī ir:

qaFXpxVTuYCuibb9P41VSeVn4pIaK8o3jUpJKqI4VF4= (4KB)

Fails tiek pievienots filelist.json failam, kas tagad izskatās šādi:

[
  {
  "type": "Folder",
  "path": "C:\\data\\"
  },
  {
  "type": "File",
  "path": "C:\\data\\mydoc.txt",
  "size": 4096,
  "hash": "qaFXpxVTuYCuibb9P41VSeVn4pIaK8o3jUpJKqI4VF4="
  }
]

Lielu failu apstrāde

Ierakstam C:\data\myvideo.mp4 tiek izmantots tas pats paņēmiens, kas aprakstīts priekš failam C:\data\mydoc.txt, bet šajā gadījumā fails ir lielāks nekā “bloka izmērs” (100KB). Tas nozīmē, ka programma aprēķina trīs SHA-256 bloku hešus, kur pirmie divi ir 100KB lieli, bet trešais bloks – 10KB.

Katrs no šiem blokiem tiek pievienots dblock failam, kas tagad satur:

qaFXpxVTuYCuibb9P41VSeVn4pIaK8o3jUpJKqI4VF4= (4KB)
0td8NEaS7SMrQc5Gs0Sdxjb/1MXEEuwkyxRpguDiWsY= (100KB)
PN2oO6eQudCRSdx3zgk6SJvlI5BquP6djt5hG4ZfRCQ= (100KB)
uS/2KMSmm2IWlZ77JiHH1p/yp7Cvhr8CKmRHJNMRqwA= (10KB)

Papildus tiek aprēķināts faila hešs, bet šajā gadījumā tas ir atšķirīgs: 4sGwVN/QuWHD+yVI10qgYa4e2F5M4zXLKBQaf1rtTCs=.

Mēs varam izvēlēties, vai glabāt šīs vērtības filelist.json failā, piemēram:

{
  "type": "File",
  "path": "C:\\data\\myvideo.mp4",
  "size": 215040,
  "hash": "4sGwVN/QuWHD+yVI10qgYa4e2F5M4zXLKBQaf1rtTCs=",
  "blocks": [
    "0td8NEaS7SMrQc5Gs0Sdxjb/1MXEEuwkyxRpguDiWsY=",
    "PN2oO6eQudCRSdx3zgk6SJvlI5BquP6djt5hG4ZfRCQ=",
    "uS/2KMSmm2IWlZ77JiHH1p/yp7Cvhr8CKmRHJNMRqwA="
  ]
}

Katriem 100KB failu datiem papildus tiek glabāti 47 simboli. Piemēram, 1GB fails failu sarakstam papildus pievienotu 482KB datu, kas padarītu failu sarakstu nenoliedzami lielāku.

Tā vietā programma pievieno “netiešo bloku”, kas izveido jaunu datu bloku, saturot tika hešu sarakstu. Tā kā SHA-256 hešs ir 32 baitus liels, un, ja tas nav šifrēts ar Base64, mēs varam glabāt 3200 bloku hešus vienā blokā. Tātad filelist.json fails palielinās savu izmēru tikai par 47 baitiem uz aptuveni 300MB datu.

Priekš C:\data\myvideo.mp4 tiek izveidoti trīs bloki, tātad jauns bloks ar trīs bloku hešiem aizņem tikai 96 baitus. Turklāt šis bloks nekādā veidā netiek apstrādāts citādāk nekā pārējie bloki, kā arī SHA-256 hešs ir aprēķināts, piešķirot Base64 šifrētu “bloka heša” vērtību:  Uo1f4rVjNRX10HkxQxXauCrRv0wJOvStqt9gaUT0uPA=.

Jaunais bloks tiek pievienots dblock failam, kas satur:

qaFXpxVTuYCuibb9P41VSeVn4pIaK8o3jUpJKqI4VF4= (4KB)
0td8NEaS7SMrQc5Gs0Sdxjb/1MXEEuwkyxRpguDiWsY= (100KB)
PN2oO6eQudCRSdx3zgk6SJvlI5BquP6djt5hG4ZfRCQ= (100KB)
uS/2KMSmm2IWlZ77JiHH1p/yp7Cvhr8CKmRHJNMRqwA= (10KB)
Uo1f4rVjNRX10HkxQxXauCrRv0wJOvStqt9gaUT0uPA= (96B)

Jauns faila ieraksts tiek saglabāts failu sarakstā, kas izskatās šādi:

[
  {
  "type": "Folder",
  "path": "C:\\data\\"
  },
  {
  "type": "File",
  "path": "C:\\data\\mydoc.txt",
  "size": 4096,
  "hash": "qaFXpxVTuYCuibb9P41VSeVn4pIaK8o3jUpJKqI4VF4="
  },
  {
  "type": "File",
  "path": "C:\\data\\myvideo.mp4",
  "size": 215040,
  "hash": "4sGwVN/QuWHD+yVI10qgYa4e2F5M4zXLKBQaf1rtTCs=",
  "blocklists": [ "Uo1f4rVjNRX10HkxQxXauCrRv0wJOvStqt9gaUT0uPA=" ]
  }  
]

Līdzīgu datu apstrāde

Šobrīd ir palikuši trīs ieraksti, kas tiek saglabāti tāpat, kā izskaidrots iepriekšējās sadaļās.

Fails C:\data\extra\olddoc.txt is vecāka versija dokumentam ar nosaukumu C:\\data\\mydoc.txt, kam jau iepriekš tika izveidota rezerves kopija. Bet tā kā programma aprēķina bloka hešu jaunam failam:  R/XSNsb4ln/SkeJwFDd4Fv4OnW2QNIxMR4HItgg9qCE=, kas nesakrīt ar iepriekš apstrādāto failu C:\data\mydoc.txt, tādēļ to uzskata kā atšķirīgu failu.

Daži backup risinājumi identificēs to, ka vairāki fragmenti sakrīt un šajā scenārijā veidos mazākus rezerves kopiju izmērus.

Tomēr šī programma koncentrējas un vienkāršību un ātrdarbību, apejot potenciālo vietas ietaupīšanu.

Programmā neiekļāva šo daļu, balstoties uz vairākiem novērojumiem:

  • Faili tiek kompresēti un ja nu gadījumā divi līdzīgi faili tiek iekļauti vienā blokā, vieta tāpat tiks ietaupīta uz kompresēšanas rēķina;
  • Nelielas pārbīdes bieži vien tiek atrastas teksta failos, jo lielāki faili:
    • nav pārrakstāmi (datubāzes, video, bildes, u.t.t.);
    • ir pārrakstāmi pilnībā (bildes, video);
    • ir pārrakstāmi ar kompresijas palīdzību (docx, bildes);
    • teksta faili pārsvarā ir salīdzinoši mazi (salīdzinot ar, piemēram, bildēm);
    • teksta faili viegli tiek sakompresēti.

Tas nozīmē, ka papildus ieraksts for C:\data\extra\olddoc.tx parādīsies filelist.json failā:

[
  {
  "type": "Folder",
  "path": "C:\\data\\"
  },
  {
  "type": "File",
  "path": "C:\\data\\mydoc.txt",
  "size": 4096,
  "hash": "qaFXpxVTuYCuibb9P41VSeVn4pIaK8o3jUpJKqI4VF4="
  },
  {
  "type": "File",
  "path": "C:\\data\\myvideo.mp4",
  "size": 215040,
  "hash": "4sGwVN/QuWHD+yVI10qgYa4e2F5M4zXLKBQaf1rtTCs=",
  "blocklists": [ "Uo1f4rVjNRX10HkxQxXauCrRv0wJOvStqt9gaUT0uPA=" ]
  },
  {
  "type": "Folder",
  "path": "C:\\data\\extra"
  },
  {
  "type": "File",
  "path": "C:\\data\\extra\\olddoc.txt",
  "size": 2048,
  "hash": "R/XSNsb4ln/SkeJwFDd4Fv4OnW2QNIxMR4HItgg9qCE="
  }
]

Kā arī jauns bloks tiks pievienots dblock failam:

qaFXpxVTuYCuibb9P41VSeVn4pIaK8o3jUpJKqI4VF4= (4kb)
0td8NEaS7SMrQc5Gs0Sdxjb/1MXEEuwkyxRpguDiWsY= (100kb)
PN2oO6eQudCRSdx3zgk6SJvlI5BquP6djt5hG4ZfRCQ= (100kb)
uS/2KMSmm2IWlZ77JiHH1p/yp7Cvhr8CKmRHJNMRqwA= (10kb)
Uo1f4rVjNRX10HkxQxXauCrRv0wJOvStqt9gaUT0uPA= (96b)
R/XSNsb4ln/SkeJwFDd4Fv4OnW2QNIxMR4HItgg9qCE= (2kb)

Visbeidzot, fails C:\data\extra\samevideo.mp4 tiek apstrādāts. Programma katru bloku apstrādās atsevišķi, bet sapratīs, ka tam jau ir izveidota rezerves kopija un neatspoguļos to dblock failā. Pēc tam, kad visi trīs bloki ir aprēķināti, tiks izveidots jauns bloks, kas glabās šos trīs hešus, bet atklās, ka šāds bloks arī jau ir glabāts.

Šis paņēmiens tiek devēts arī par deduplikāciju, kas nodrošina, ka katra daļa tiek glabāta tikai vienu reizi. Ar šo paņēmienu, failu kopijas ir atklātas neatkarīgi no to nosaukuma vai atrašanās vietas.

Gala saturs filelist.json failam:

[
  {
  "type": "Folder",
  "path": "C:\\data\\"
  },
  {
  "type": "File",
  "path": "C:\\data\\mydoc.txt",
  "size": 4096,
  "hash": "qaFXpxVTuYCuibb9P41VSeVn4pIaK8o3jUpJKqI4VF4="
  },
  {
  "type": "File",
  "path": "C:\\data\\myvideo.mp4",
  "size": 215040,
  "hash": "4sGwVN/QuWHD+yVI10qgYa4e2F5M4zXLKBQaf1rtTCs=",
  "blocklists": [ "Uo1f4rVjNRX10HkxQxXauCrRv0wJOvStqt9gaUT0uPA=" ]
  },
  {
  "type": "Folder",
  "path": "C:\\data\\extra"
  },
  {
  "type": "File",
  "path": "C:\\data\\extra\\olddoc.txt",
  "size": 2048,
  "hash": "R/XSNsb4ln/SkeJwFDd4Fv4OnW2QNIxMR4HItgg9qCE="
  },
  {
  "type": "File",
  "path": "C:\\data\\extra\\samevideo.mp4",
  "size": 215040,
  "hash": "4sGwVN/QuWHD+yVI10qgYa4e2F5M4zXLKBQaf1rtTCs=",
  "blocklists": [ "Uo1f4rVjNRX10HkxQxXauCrRv0wJOvStqt9gaUT0uPA=" ]
  },
]

Un pēdējais bloks dblock failam:

qaFXpxVTuYCuibb9P41VSeVn4pIaK8o3jUpJKqI4VF4= (4KB)
0td8NEaS7SMrQc5Gs0Sdxjb/1MXEEuwkyxRpguDiWsY= (100KB)
PN2oO6eQudCRSdx3zgk6SJvlI5BquP6djt5hG4ZfRCQ= (100KB)
uS/2KMSmm2IWlZ77JiHH1p/yp7Cvhr8CKmRHJNMRqwA= (10KB)
Uo1f4rVjNRX10HkxQxXauCrRv0wJOvStqt9gaUT0uPA= (96B)
R/XSNsb4ln/SkeJwFDd4Fv4OnW2QNIxMR4HItgg9qCE= (2KB)

1deduplikācija – jau esošu failu kopiju un liekas informācijas likvidēšana

2inkrementāls – process, kurā pieaug skaits, izmērs un daudzums

Avots: https://duplicati.com/

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Categories

  • Cloud storage
  • Files.fm
  • Files.fm Library
  • Instructions and support (EN)
    • File upload form
    • Files.fm Backup
    • Files.fm Sync
    • General info
    • Sell files
  • Instrukcijas un palīdzība (LV)
    • Failiem.lv Backup
    • Failiem.lv konferences
    • Failiem.lv Sync
    • Failu tirdzniecība
    • Foto produkti
    • Ielādes forma
    • Serveru noma un hostings
    • Vispārīgā info
  • Security and privacy
  • Technology
  • Tips and tricks
  • Uncategorized

Recent Posts

  • Failiem.lv dāvina skolotājiem failu glabāšanas, apmaiņas un video straumēšanas rīkus
  • Files.fm receives EU funding to implement blockchain technology
  • Make your photo-sharing adventures easier
  • The best way to fight misinformation is to recognize it
  • Most people give up on their New Year’s resolutions until 12 January. So, why keep making them?

Tags

about backup blockchain business comparison copyright crowdsale data loss data storage explaining the cloud filesfm filesfm library file sharing file shop file sync file upload form instructions (EN) instrukcijas (LV) lifetime storage news p2p piracy public profiles security send files storage space technology tips and tricks tokens use cases

Archives

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
©2023 files.fm blog | Powered by WordPress and Superb Themes!