Perché Rsync ricopia i file quando le dimensioni e la data visualizzata coincidono?

Eva Wong è la Technical Writer e smanettatrice residente di ZimaSpace. Una geek da sempre con una passione per homelab e software open-source, si specializza nel tradurre concetti tecnici complessi in guide accessibili e pratiche. Eva crede che l'auto-ospitare debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, dà potere alla comunità di demistificare le configurazioni hardware, dalla costruzione del loro primo NAS al dominio dei container Docker.

Rsync può ricopiare file la cui dimensione visibile e data corrispondono quando i relativi tempi di modifica effettivi, le regole di confronto o le opzioni di trasferimento differiscono comunque.

I browser di file spesso nascondono i timestamp al di sotto del secondo e mostrano solo una data locale arrotondata, mentre Rsync confronta i metadati esposti da ciascun endpoint e può anche essere configurato per ignorare le corrispondenze temporali, confrontare i checksum o aggiornare i metadati. Un processo può quindi indicare la stessa dimensione e la stessa data leggibili dall’utente, selezionando comunque il file perché i nanosecondi differiscono, un filesystem arrotonda l’orario, un client SMB riscrive il timestamp oppure il comando esclude esplicitamente il normale controllo rapido.

Verifica che Rsync stia selezionando il file per il trasferimento dei dati

Esegui il processo in modalità di simulazione con le modifiche dettagliate e salva il comando esatto, il percorso di origine, il percorso di destinazione, le versioni di Rsync e un nome file rappresentativo.

Il manuale ufficiale di Rsync spiega che il controllo rapido predefinito confronta la dimensione del file e il tempo di modifica, mentre l’output dettagliato identifica quali attributi hanno causato un aggiornamento.

Se il codice delle modifiche dettagliate mostra solo modifiche a permessi, proprietario, gruppo, ACL o attributi estesi, il file potrebbe essere stato considerato nuovamente senza ritrasmettere l’intero contenuto.

Confronta i tempi di modifica effettivi invece della data visualizzata

Leggi i tempi di modifica di origine e destinazione con precisione al nanosecondo e confronta i relativi valori numerici dell’epoca sui sistemi che eseguono l’invio e la ricezione.

La struttura stat di Linux supporta timestamp con precisione al nanosecondo, quindi due file visualizzati nello stesso secondo possono avere comunque valori diversi.

Un browser che mostra solo minuti o secondi non può dimostrare che i tempi di modifica sottostanti corrispondano. Registra i valori effettivi prima di modificare nuovamente i file.

Controlla la precisione dei timestamp e la finestra di modifica

Identifica ogni filesystem presente nel percorso, inclusi FAT, exFAT, NTFS, SMB, NFS, i volumi di estrazione degli archivi e quelli rimovibili usati per la preparazione.

Il manuale Debian di Rsync documenta il comportamento di modify-window, inclusa la tolleranza per i filesystem che non possono memorizzare timestamp con la stessa precisione.

Usa una finestra diversa da zero solo dopo aver misurato la differenza. Una finestra troppo ampia può nascondere un file realmente modificato con la stessa dimensione.

Controlla i flag che sovrascrivono il normale controllo rapido

Esamina il comando pianificato completo e qualsiasi script wrapper, interfaccia NAS, variabile d’ambiente, file di inclusione o preset che aggiunga opzioni.

Il riferimento Ubuntu di Rsync afferma che ignore-times forza gli aggiornamenti, la modalità checksum sostituisce il controllo del tempo e size-only ignora il tempo di modifica.

Rimuovi solo il flag di cui hai dimostrato la causa. La modalità checksum può aggiungere letture intensive anche quando attraversa la rete una quantità minima di dati.

Controlla se SMB o Windows riscrivono il tempo di destinazione

Calcola l’hash e rileva il timestamp della destinazione subito dopo il trasferimento, dopo aver chiuso la sessione SMB e dopo averla riaperta da un altro client.

Microsoft documenta che le applicazioni possono impostare e recuperare i timestamp dei file, mentre filesystem e applicazioni possono aggiornare singoli campi secondo tempistiche diverse.

Se il tempo di destinazione cambia solo dopo l’intervento di un indicizzatore, un’app multimediale, un client cloud o un flusso di lavoro SMB, correggi quel processo invece di Rsync.

Separa il tempo di modifica dagli altri metadati

Confronta il tempo di modifica, il tempo di modifica dello stato, i permessi, la proprietà, le ACL, gli attributi estesi, i collegamenti fisici e i collegamenti simbolici.

L’utilità stat di NetBSD espone i campi grezzi dello stato dei file, aiutando a distinguere il tempo di modifica del contenuto dalle modifiche agli altri metadati.

Le opzioni relative ad archivi, ACL, xattr, proprietari o gruppi possono attivare operazioni sui metadati. Leggi il codice delle modifiche dettagliate invece di considerare ogni percorso elencato come un trasferimento completo del contenuto.

Esegui un test su un solo file e correggi la minima differenza dimostrata

Copia un singolo file di test chiuso, conserva i metadati previsti, ripeti lo stesso comando e confronta l’output dettagliato, i byte trasferiti e i timestamp effettivi.

L’articolo di ZimaSpace sui backup incrementali inaspettatamente grandi tratta le cause più generali legate alla catena di backup; questo articolo isola le regole di selezione dei file di Rsync.

Il problema è risolto quando una nuova esecuzione senza modifiche ignora il file di test o esegue solo l’aggiornamento dei metadati che hai configurato intenzionalmente.

Domande frequenti

Perché le date sembrano identiche nel browser di file?

Il browser potrebbe arrotondare a secondi o minuti e mostrare l’ora locale, mentre Rsync riceve un timestamp di modifica più preciso.

La modalità checksum impedirà le copie non necessarie?

Può evitare il trasferimento quando i contenuti corrispondono nonostante tempi diversi, ma deve leggere e calcolare l’hash dei file della stessa dimensione su entrambi i lati.

I fusi orari possono causare trasferimenti Rsync ripetuti?

La sola visualizzazione del fuso orario non dovrebbe modificare i timestamp numerici, ma le applicazioni o i filesystem che li convertono o arrotondano possono farlo.

Supporto e consigli

Altro da leggere

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.