Varför kopierar Rsync om filer när storleken och det visade datumet stämmer överens?

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

Rsync kan kopiera om filer vars synliga storlek och datum matchar när deras råa ändringstider, jämförelseregler eller överföringsalternativ fortfarande skiljer sig åt.

Filhanterare döljer ofta tidsstämplar under en sekund och visar bara ett avrundat lokalt datum, medan Rsync jämför metadata som exponeras av varje slutpunkt. Rsync kan också instrueras att ignorera matchande tider, jämföra kontrollsummor eller uppdatera metadata. Ett jobb kan därför rapportera samma läsbara storlek och datum men ändå välja filen eftersom nanosekunderna skiljer sig åt, ett filsystem avrundar tiden, en SMB-klient skriver om tidsstämpeln eller kommandot uttryckligen kringgår den normala snabbkontrollen.

Bekräfta att Rsync väljer filen för dataöverföring

Kör jobbet som en torrkörning med specificerade ändringar och spara det exakta kommandot, källsökvägen, målsökvägen, Rsync-versionerna och ett representativt filnamn.

Den officiella Rsync-handboken förklarar att den normala snabbkontrollen jämför filstorlek och ändringstid, medan specificerade ändringar visar vilka attribut som orsakade en uppdatering.

Om ändringskoden endast visar ändringar av behörigheter, ägare, grupp, ACL eller utökade attribut kan filen ha besökts igen utan att hela innehållet överfördes på nytt.

Jämför råa ändringstider i stället för det visade datumet

Läs källans och målets ändringstider med nanosekunders precision och jämför deras numeriska epokvärden från systemen som kör sändaren och mottagaren.

Linux-strukturen stat stöder tidsstämplar med nanosekunders upplösning, så två filer som visas med samma sekund kan fortfarande ha olika värden.

En filhanterare som endast visar minuter eller sekunder kan inte bevisa att de underliggande ändringstiderna matchar. Dokumentera råvärdena innan du ändrar filerna igen.

Kontrollera tidsstämpelns precision och ändringsfönstret

Identifiera alla filsystem i sökvägen, inklusive FAT, exFAT, NTFS, SMB, NFS, arkivextrahering och flyttbara mellanlagringsvolymer.

Debians Rsync-handbok dokumenterar beteendet hos modify-window, inklusive tolerans för filsystem som inte kan lagra identisk tidsstämpelprecision.

Använd ett värde som inte är noll för fönstret först efter att du har mätt skillnaden. Ett för brett fönster kan dölja en verkligt ändrad fil med samma storlek.

Granska flaggor som åsidosätter den normala snabbkontrollen

Granska hela det schemalagda kommandot och alla omslutande skript, NAS-gränssnitt, miljövariabler, inklusionsfiler eller förinställningar som lägger till alternativ.

Ubuntus Rsync-referens anger att ignore-times tvingar fram uppdateringar, att kontrollsummeläget ersätter tidstestet och att size-only ignorerar ändringstid.

Ta endast bort den flagga som du har bevisat orsakar problemet. Kontrollsummeläget kan medföra omfattande läsning även när endast lite data passerar över nätverket.

Kontrollera om SMB eller Windows skriver om målets tid

Beräkna kontrollsumma och tidsstämpla målet omedelbart efter överföringen, efter att SMB-sessionen har stängts och efter att den har öppnats igen från en annan klient.

Microsoft dokumenterar att program kan ställa in och hämta filtidsstämplar, medan filsystem och program kan uppdatera enskilda fält enligt olika tidsplaner.

Om målets tid endast ändras efter att en indexerare, medieapp, molnklient eller SMB-arbetsflöde har rört filen bör du korrigera den skrivande komponenten i stället för Rsync.

Skilj ändringstid från annan metadata

Jämför ändringstid, statusändringstid, behörigheter, ägarskap, ACL:er, utökade attribut, hårda länkar och symboliska länkar.

NetBSD:s stat-verktyg visar råa filstatusfält, vilket hjälper dig att skilja innehållets ändringstid från andra metadataändringar.

Alternativ för arkiv, ACL, xattr, ägare eller grupp kan utlösa metadataarbete. Läs ändringskoden i stället för att behandla varje listad sökväg som en fullständig innehållsöverföring.

Kör ett test med en fil och åtgärda den minsta bevisade skillnaden

Kopiera en stängd testfil, bevara den avsedda metadatan, kör samma kommando igen och jämför ändringsutdata, överförda byte och råa tidsstämplar.

ZimaSpace-artikeln om oväntat stora inkrementella säkerhetskopior tar upp bredare orsaker i säkerhetskopieringskedjan; den här artikeln isolerar Rsyncs filvalsregler.

Problemet är löst när en omkörning utan ändringar hoppar över testfilen eller endast utför den metadatauppdatering som du avsiktligt har konfigurerat.

Vanliga frågor

Varför ser datumen identiska ut i filhanteraren?

Filhanteraren kan avrunda till sekunder eller minuter och visa lokal tid, medan Rsync får en mer exakt ändringstidsstämpel.

Kommer kontrollsummeläget att stoppa onödiga kopieringar?

Det kan undvika överföring när innehållet matchar trots olika tider, men det måste läsa och beräkna kontrollsummor för filer med samma storlek på båda sidor.

Kan tidszoner orsaka upprepade Rsync-överföringar?

Enbart visning i olika tidszoner bör inte ändra numeriska tidsstämplar, men program eller filsystem som konverterar eller avrundar dem kan göra det.

Support och tips

Mer att läsa

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.