Il modo migliore per copiare grandi quantità di dati tra le partizioni

Sto cercando di trasferire dati su 2 lv di un server HP-UX. Ho un paio di quei trasferimenti da fare, alcuni dei quali sono per lo più binari (Oracle tablespace …) e altri altri sono più file di text (log …). La dimensione dei dati utilizzata dei volumi è compresa tra 100Gb e 1Tb. Inoltre, cambierò la dimensione del block da 1K a 8K su alcune di queste partizioni …

Cose da cercare:

  • Garantisce l'integrità dei dati
  • Velocità di trasferimento dati più veloce
  • Mantiene la properties; del file e le autorizzazioni

Adesso, ho pensato a dd, cp e rsync, ma non sono sicuro del meglio da usare e il modo migliore per usarli …

  • Partizione del server web Linux: come devo farlo?
  • condividendo una partizione ext3 / ext4 sull'unità esterna
  • kpartx verbose info: cosa significa?
  • Eliminare in modo sicuro la partizione estesa senza riavviare
  • Imansible ridimensionare il volume root di ec2 ebs
  • mdadm --zero-superblock su dischi con altre partizioni su di loro
  • Come estendere una partizione ext4 e un filesystem?
  • Ridurre o rimuovere la partizione di casa in installazione CentOS 7
  • 4 Solutions collect form web for “Il modo migliore per copiare grandi quantità di dati tra le partizioni”

    Non si desidera utilizzare dd. Ciò significa lavorare su un file o un stream, non su un file system integer.

    rsync è progettato per fare quello che vuoi, ma come ha dichiarato il poster precedente e come hanno mostrato i miei test, non è il più veloce. Questo è perché sta facendo qualcosa di simile: "Ok, sto guardando il file A. È il file A sulla destinazione? In caso affermativo, è più recente, più vecchio, lo stesso?" Ecc. Rsync è un po 'complicato perché è destinato ad essere eseguito più di una volta … come dice il nome, è per sincronizzare due posizioni.

    Per fare quello che volete, ho trovato una copia di catrame rapida, facile e affidabile. Tar conosce i legami duri. Tar conosce i dispositivi. Il Tar gestisce quasi tutte le situazioni in cui accederai nel tuo filesystem (ad exception di routes davvero lunghi e, se non utilizzi Gnu tar, potrebbe essere necessario stare attenti a mettere un / all'inizio del tuo path).

    Comunque, ho avuto il 99,98% di successo negli ultimi 20 anni facendo questo:

    cd / my / source; tar cf – sottodirectory | (cd / destinazione / path; tar xf -)

    … La sottodirectory che si desidera copiare verrà visualizzata in / destination / path.

    Se ti piace guardare il tuo progresso, puoi usare "xvf" invece di "xf" nell'ultima parte di quella string.

    … i miei errori di 0,02% sono venuti da routes di file molto lunghi … 🙁

    Tar non garantisce l'integrità dei file. Detto questo, fintanto che non si vedono messaggi di errore, ho trovato che sia molto affidabile. Manterrà correttamente le autorizzazioni e la properties;.

    Date un'occhiata a questo post . Alcune risposte hanno suggerito di utilizzare tar . Altri suggerivano di usare rsync . Stanno prendendo circa la copia dei dati tra due macchine. Il problema è simile, ma è necessario copiare i file localmente anziché eseguirlo sulla networking.

    Vorrei raccomandare l'utilizzo di rsync , in quanto dispone di funzioni che rispondono in modo specifico alla maggior parte delle tue preoccupazioni. Se si utilizzano le opzioni appropriate (ad es. L'opzione -a ), tutte le properties;, le autorizzazioni e gli orari dei file verranno conservati. Inoltre, rsync utilizza automaticamente checksum per assicurarsi che tutti i file trasferiti arrivino intatte alla destinazione, quindi è garantita l'integrità dei dati (presumendo una corretta esecuzione).

    L'unico punto in cui rsync potrebbe non essere ottimale è la velocità, soprattutto quando si confronta con un'alternativa più leggera come cp , ma dubito che si noterebbe molta differenza, a less che il tuo potere di elaborazione non sia molto basso.

    In pratica hai tre opzioni:

    1. Copiare l'integer dispositivo di partizione / block
    2. Distribuire l'integer filesystem
    3. Copiare i dati all'interno del filesystem

    Selezionare una delle tre opzioni dipende da cosa hai dovuto eseguire il backup e sui risultati che desideri avere. Per il tuo caso specifico, penso che l'opzione n.1 (copia dispositivo block) accoppiata con ddrescue è il modo per andare. In each caso, consulta una raccolta di opzioni disponibili.

    Caso 1: copia di partizione
    PRO: la copia di un integer dispositivo di block, è sicuro che il notare è stato lasciato indietro.
    CON: il fastidio con i dispositivi di block è less conveniente di lavorare con i file, la selezione del dispositivo o delle opzioni bloccate potrebbe distruggere i dati.
    Se si desidera avere una copia binaria di un integer block, devi utilizzare dd o uno strumento simile. Altri strumenti molto utili sono dcfldd (una fork forzata di hash-ready) e ddrescue (uno strumento ancora più avanzato di tipo dd).

    Caso 2: deposito dei filesystem
    PRO: la copia di un integer filesystem, sei sicuro che tutti i dati e i metadati contenuti in esso sono stati restituiti.
    CON: se si dispone di più file system per il backup, si whereva fare più pass (uno per il filesystem)
    Uno strumento utile per affrontare i file system è FSArchive . Inoltre, molti filesystem hanno integrato utilità per il loro contenuto in modo efficiente (ad esempio XFS ha xfsdump, Ext2 / 3/4 usa dumpe2fs, e così via).

    Caso 3: copia i dati all'interno del filesystem
    PRO: copiare i dati dall'interno del filesystem, è ansible specificare in modo specifico ciò che è necessario eseguire il backup. Ciò garantisce tempi di backup / ripristino veloci e piccole immagini di backup.
    CON: Dovevi sapere perfettamente cosa fare il backup e come. È necessario utilizzare particolare attenzione per metadati importnti (ad esempio: proprietario, authorization, ACL, EA …)
    Rsync è il tuo migliore amico qui. Rsnapshot e rdiff-backup sono strumenti meravigliosi costruiti in cima a rsync / librsync. Tar è il colto di svizzera di qualsiasi sistema Unix.

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