Surprise! Surprise!

Prosty eksperyment:

  1. zainstaluj Google Drive,
  2. w synchronizowanym folderze utwórz kontener TrueCrypt, zaczekaj aż się zsynchronizuje,
  3. zamontuj kontener, utwórz w nim plik,
  4. odmontuj kontener,
  5. pobierze kontener z Google Drive,
  6. zamontuj pobrany kontener,
  7. ...gdzie jest mój plik?!

Właściwie do ostatniego punktu może się nie uda dojść, bo samo zamontowanie kontenera może okazać się niemożliwe (właściwie – otwarcie zamontowanego kontenera).

To na początek zróbmy inny eksperyment (z użyciem Google Drive):

  1. stwórzmy kontener TrueCrypt w synchronizowanym folderze,
  2. zaczekajmy aż się zsynchronizuje,
  3. pobierzmy (do innego folderu) kontener z Google Drive,
  4. porównajmy pliki,

    T:>sha256deep *.tc a7d510399a6728ee2e8c395af659fc97d80194e075f27bed1ba37f663b902e3f T:\sync.tc b3be3abd99352385fe31a936669fcc4aaf334304594543c3a88385f1f0fb0987 T:\sync-src.tc

Plik “źródłowy” tutaj nazywa się sync-src.tc , ten pobrany z Google Drive (w założeniu – jego kopia) to sync.tc. Jak widać pliki różnią się między sobą. Gdyby zastosować “hashowanie po kawałku”, okazałoby się, że pliki są do siebie częściowo podobne. Podobny rezultat daje zresztą ssdeep:

T:>ssdeep -d * T : \ s y n c . t c matches T : \ s y n c – s r c . t c (66)

Gdzie jest problem? Przypuszczam, że tu: TrueCrypt –> Settings –> Preferences –> Preserve modification timestamp of file containers. Czas modyfikacji pliku nie ulega zmianie, Google Drive (SkyDrive zresztą zachowuje się tak samo) nie zauważa zmiany pliku i go nie synchronizuje.

W przypadku samego tworzenia kontenera Google Drive zaczyna synchronizować plik, ale nie jest świadomy tego, że sam plik ulega zmianie w trakcie synchronizacji (formatowanie), w związku z czym wersja zapisana w chmurze nie będzie zawierała prawidłowego systemu plików.

Fajnie by było, gdyby któraś usługa operowała na poziomie zmian w pliku i nie była zależna od timestampu ostatniej modyfikacji...

EDIT: Odnośnie “operowania na poziomie zmian w pliku” chodzi mi nie tylko o wykrywanie zmian, ale również o synchronizowanie tylko zmienionych fragmentów plików. Coś jak w rsync.

Oryginał tego wpisu dostępny jest pod adresem Surprise! Surprise!

Autor: Paweł Goleń