Co wyjście Rsync mówi tutaj o to-chk?

20

Używałem rsync za pomocą opcji --progress, więc przesyłanie plików zostało zakończone i otrzymałem następujące dane wyjściowe

receiving incremental file list
Makefile
          9,935 100%    9.47MB/s    0:00:00 (xfr#1, to-chk=0/1)

Moje pytanie brzmi: co to to-chk=0/1znaczy?

Przesyłam tutaj tylko 1 plik, czyli Makefile. numer transferu (xfr # 1) wyraźnie wskazuje 1 plik, ale co oznacza to-chk = 0/1?

Akshay Patil
źródło
Czy Twój transfer składał się tylko z jednego pliku?
slhck
tak, tylko 1 plik
Akshay Patil

Odpowiedzi:

31

to-chklub to-checkpodaje liczbę plików do sprawdzenia, np. 0/1oznacza to , że 0 z 1 plików w kolejce wciąż wymaga sprawdzenia.

Podczas normalnego przesyłania z, powiedzmy 42 plików, w to-checkzasadzie odlicza od 42 do 0 ( to-check=38/42to-check=2/42) aż do zakończenia rsyncsynchronizacji.

Pamiętaj, że w przypadku dużych ilości plików ostatnia liczba to-checkmoże również wzrosnąć, ponieważ rsyncnie umieszcza w kolejce wszystkich plików jednocześnie ( to-check=38/42... to-check=2/56). Jest tak, ponieważ wykorzystuje algorytm rekurencji :

Począwszy od rsync 3.0.0, stosowany algorytm rekurencyjny jest teraz skanem przyrostowym, który zużywa znacznie mniej pamięci niż wcześniej i rozpoczyna transfer po zakończeniu skanowania pierwszych kilku katalogów.

Aby wyłączyć to zachowanie, dodaj --no-inc-recursiveopcję.

Zauważ, że w nowszych wersjach rsync (3.1.0) etykieta została zmieniona, aby ir-chkwskazywać przyrostowy postęp rekurencyjny (tj. Domyślny) i to-checkaby wskazywać nie przyrostowy postęp rekurencyjny (tj. Z --no-inc-recursiveopcją).

slhck
źródło
Myślę, że oprócz tego, ir-chk jest wtedy, gdy wciąż skanuje system plików i jest więcej systemu plików do skanowania, a kiedy osiągnie koniec, zmienia się w powiedzenie to-chk, co oznacza, że ​​więcej skanowania nie jest wymagane, a wynik końcowy jest ostatecznym odliczaniem, nie będzie już zwiększany
Christopher Thomas