Tagliare grandi trasferimenti rsync?

Utilizziamo rsync per aggiornare uno specchio del nostro file server primario a un server di backup colocato fuori sede. Uno dei problemi che abbiamo attualmente è che il nostro server di file dispone di> 1TB di file principalmente più piccoli (nell'intervallo da 10 a 100kb) e quando trasferiamo questi dati, spesso concludiamo con la connessione di più ore il trasferimento. Rsync non dispone di una funzionalità di ripristino / ripetizione che si ricollega semplicemente al server per recuperare where è stato interrotto – è necessario passare attraverso il process di confronto dei file, che finisce per essere molto lungo con la quantità di file che abbiamo.

La soluzione che si consiglia di aggirare è dividere il tuo grande trasferimento rsync in una serie di trasferimenti più piccoli. Ho scoperto che il modo migliore per farlo è la prima lettera dei nomi di directory di livello superiore, che non ci dà una distribuzione perfettamente uniforms, ma è abbastanza buona.

  • rsync "Funzionamento non consentito"
  • Handy Backup Server
  • Ripristina il backup in server sql
  • è sicuro di eseguire insieme più istanze di rsync
  • Come posso impostare le autorizzazioni di destinazione con rsync (chown chmod)
  • Ripristina i nastri Backup Exec senza eseguire Backup Exec
  • Vorrei confermare se la mia metodologia per farlo è sana, o se c'è un modo più semplice per raggiungere l'objective.

    Per fare questo, ripeto attraverso AZ, az, 0-9 per scegliere un $prefix un carattere $prefix . Inizialmente stavo pensando di correre

     rsync -av --delete --delete-excluded --exclude "*.mp3" "src/$prefix*" dest/ 

    (–exclude "* .mp3" è solo un esempio, poiché abbiamo un elenco di escludere più lungo per rimuovere le cose come file temporanei)

    Il problema con questo è che le directory di livello superiore in dest / che non sono più presenti presenti su src non verranno raccolte da –delete. Per aggirare questo problema, sto cercando i seguenti:

     rsync \ --filter 'S /$prefix*' \ --filter 'R /$prefix*' \ --filter 'H /*' \ --filter 'P /*' \ -av --delete --delete-excluded --exclude "*.mp3" src/ dest/ 

    Sto usando lo show e hide l' include e l' exclude , perché altrimenti l'esclusione eliminerà qualsiasi cosa che non corrisponde a prefisso $.

    È questo il modo più efficace per dividere il rsync in blocchi più piccoli? C'è uno strumento più efficace, o una bandiera che ho perso, che potrebbe rendere questo più semplice?

  • Qual è il modo più efficace per eseguire il backup di una directory piena di file di backup di database di grandi size?
  • Backup di Hyper-v di Windows 2012
  • Le cose da considerare quando si esegue il backup di Windows 2003 Server
  • Come eseguire il backup di NAS di archiviazione di file tramite soluzioni di backup basate su VM
  • Quali sono i modi migliori per avere un backup e un failover per un singolo server di scambio in un dominio?
  • Come facciamo a proteggere il nostro codice sorgente?
  • 3 Solutions collect form web for “Tagliare grandi trasferimenti rsync?”

    La mia soluzione a questo era un approccio diverso a due passaggi, where ho scambiato uno spazio su disco. Faccio rsync – batch-only-write sul server, quindi rsync il file batch stesso alla destinazione, loop fino a quando rsync riesce. Una volta che il batch è completamente sopra rsync – batch-batch sulla destinazione ricrea tutte le modifiche.

    Ci sono alcuni vantaggi indesiderati per questo anche per me:

    • perché sono più preoccupato che il backup "esista" di quanto non sia "usabile" non faccio each giorno il batch di lettura all'estremità di ricezione, per la maggior parte del tempo il batch è relativamente piccolo

    • Sto sperimentando con –checksum-seed = 1 … Potrei leggere la documentazione ma penso che renda i file batch più sincronizzabili (cioè quando non faccio il –read-batch qualsiasi dato il giorno, il batch del giorno successivo sincronizza più velocemente perché il batch del giorno precedente è una buona base)

    • se il batch diventa troppo grande per submit "in tempo" su internet, posso sneaker-net su di un'unità esterna. In tempo voglio dire che se non riesco a get il batch e leggere prima di iniziare il backup del giorno successivo.

    • anche se non personalmente faccio questo, potrei avere due backup fuori sede in posizioni separate e submit il batch a entrambi.

    Non esattamente rispondere alla tua domanda, ma un'altra opzione che utilizzi abbastanza spesso sta facendo questo in un approccio a due pass: innanzitutto creare un elenco di file, dividere l'elenco dei file da trasferire e alimentare l'elenco di file in rsync / cpio / cp etc .

    rsync --ithemesze-changes <rest of options> stamperà un elenco di file da trasferire con un paio di metadati utili, da quella output è abbastanza facile estrarre i nomi dei file e poi eseguire la copia reale con rsync --files-from o rsync --files-from un altro strumento.

    Potrebbe essere utile per la tua situazione – riprendendo da un trasferimento rotto sarebbe molto più veloce.

    Ti suggerisco di esaminare il problema della connessione, invece di cercare di risolverlo creando un altro "problema".

    Non è un comportmento comune. Stai utilizzando rsync tramite SSH o rsyncd?

    Per quanto so, le connessioni più "chiuse" si verificano quando non vengono trasferiti dati tra gli endpoint.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.