Jaki jest efekt kopiowania pliku, powiedz fileA.big (900mb) z lokalizacji B do lokalizacji C. Jeśli podczas tej operacji cp powiedzmy 35% przez proces, do plikuA.big dołączone zostaną nowe informacje i wzrośnie z 900 MB do 930 MB.
Jaki jest wynik kopii końcowej (tj. FileA.big at locationC)?
Co się stanie, jeśli kopia ma w przybliżeniu 70%, a oryginalny plik jest aktualizowany, ale tym razem obcięty do 400 MB (tj. Postęp kopiowania jest poza punktem obcięcia), jaki jest wynik kopii końcowej?
Odwoływanie się do systemu operacyjnego Linux w systemie plików ext3 / ext4. Brak magii cienia głośności itp. Po prostu stary cp. Ciekawość wywołana przez kopiowanie plików couchdb na żywo do tworzenia kopii zapasowych, ale bardziej zainteresowani ogólnymi scenariuszami niż konkretnym przypadkiem użycia.
Odpowiedzi:
Jeśli
fileA.big
jest uprawiany podczas kopiowania, kopia będzie zawierać dane, które zostały dołączone.Jeśli plik zostanie obcięty krócej niż miejsce, w którym aktualnie znajduje się kopia, kopia zostanie przerwana dokładnie tam, gdzie jest, a plik docelowy będzie zawierał to, co zostało skopiowane do momentu przerwania.
źródło
Patrick ma mniej więcej rację, ale oto dlaczego. Sposób kopiowania pliku w systemie UNIX działa w następujący sposób:
fileA
.fileB
i powróć do kroku 1.Wiedząc o tym i wiedząc, że to takie proste, możemy zobaczyć niektóre narożne przypadki.
Gdy tylko znajdziemy koniec pliku, kopiowanie jest gotowe. Powiedzmy, że nasz plik rośnie podczas kopiowania, ale rośnie wolniej niż my go kopiujemy. Program kopiujący będzie nadal przekraczał pierwotny rozmiar pliku, ponieważ zanim się tam dostanie, plik zawiera więcej. Ale w pewnym momencie, że dogania koniec pliku, a ona wie, że to w końcu dlatego, że nie potrafi czytać więcej bajtów teraz . Tak więc kończy pracę, nawet jeśli plik ma się dalej powiększać.
Jeśli plik jest obcięty, program kopiujący mówi „Whoa, jestem za końcem pliku!” i odchodzi.
A jeśli fragmenty pliku są aktualizowane losowo przez, powiedzmy, program bazy danych :-), to twoja kopia będzie mieszanką starych i nowych danych, ponieważ nie wszystkie dane są kopiowane w tym samym czasie. Rezultatem będzie prawdopodobnie uszkodzona kopia, dlatego generalnie nie jest dobrym pomysłem tworzenie kopii żywych baz danych.
(To powiedziawszy, nie znam CouchDB i możliwe jest zaprojektowanie bazy danych, która będzie odporna na tego rodzaju uszkodzenia. Ale najlepiej mieć absolutną pewność.)
źródło