9 votes

Meilleur moyen de copier une grande quantité de données entre partitions

Je cherche à transférer des données sur 2 lv d'un serveur HP-UX. J'ai plusieurs de ces transferts à faire, dont certains sont principalement binaires (tablespace Oracle...) et d'autres sont plus des fichiers textes (logs...). La taille des données utilisées des volumes est comprise entre 100 Go et 1 To. De plus, je vais changer la taille des blocs de 1K à 8K sur certaines de ces partitions...

Les choses que je recherche :

  • Garantir l'intégrité des données
  • Vitesse de transfert de données la plus rapide
  • Conserve la propriété et les permissions des fichiers

Pour l'instant, j'ai pensé à dd, cp et rsync, mais je ne suis pas sûr de la meilleure solution à utiliser et de la meilleure façon de les utiliser...

8voto

Mike S Points 1033

Vous ne voulez pas utiliser dd. C'est pour travailler sur un fichier ou un flux, pas sur un système de fichiers entier.

rsync est conçu pour faire ce que vous voulez mais comme l'a dit l'affiche précédente, et comme mes tests l'ont montré, ce n'est pas le plus rapide. C'est parce que c'est pour faire quelque chose comme ça : "Ok, je regarde le fichier A. Le fichier A est-il sur la destination ? Si oui, est-il plus récent, plus ancien, identique ?" Etc. rsync est un peu plus compliqué car il est destiné à être exécuté plus d'une fois... comme son nom l'indique, il sert à synchroniser deux emplacements.

Pour faire le genre de choses que vous voulez, j'ai trouvé qu'une copie tar était rapide, facile et fiable. Tar connaît les liens durs. Tar connaît les périphériques. Tar gère presque toutes les situations que vous rencontrerez dans votre système de fichiers (sauf les chemins vraiment longs, et, si vous n'utilisez pas Gnu tar, vous devrez peut-être vous méfier de mettre un / au début de votre nom de chemin).

Quoi qu'il en soit, j'ai eu 99,98% de succès au cours des 20 dernières années en faisant ça :

cd /my/source ; tar cf - sous-répertoire | (cd /destination/path ; tar xf -)

...Le sous-répertoire que vous voulez copier apparaîtra dans /destination/path .

Si vous aimez regarder votre progression, vous pouvez utiliser "xvf" au lieu de "xf" dans la dernière partie de cette chaîne.

...mes 0,02% d'échecs sont dus à des chemins de fichiers très longs... :-(

Tar ne garantit pas l'intégrité des fichiers. Cela dit, tant que vous ne voyez pas de messages d'erreur, je l'ai trouvé très fiable. Il conserve correctement les permissions et la propriété.

1 votes

Je vous recommande d'utiliser le mode archive et d'activer toutes les options spéciales telles que les options xattr afin de conserver un maximum de métadonnées. Aussi : Si vous regardez un sous-volume btrfs, vous êtes probablement plus rapide en utilisant simplement btrfs send canalisé vers btrfs receive

2voto

Khaled Points 35208

Jetez un coup d'œil à ce poste . Certaines réponses suggèrent d'utiliser tar . D'autres ont suggéré d'utiliser rsync . Il s'agit de copier des données entre deux machines. Votre problème est similaire, mais vous devez copier les fichiers localement au lieu de le faire via le réseau.

2voto

Priyan R Points 687

Je recommande d'utiliser rsync car il possède des caractéristiques qui répondent spécifiquement à la plupart de vos préoccupations. Si vous utilisez les options appropriées (par exemple l'option -a ), alors tous les propriétaires de fichiers, les permissions et les heures seront préservés. De plus, rsync utilise automatiquement des sommes de contrôle pour s'assurer que tous les fichiers transférés arrivent intacts à destination, de sorte que l'intégrité des données est garantie (en supposant une exécution réussie).

Le seul point où rsync puede n'est pas optimale en termes de vitesse, surtout si on la compare à une alternative plus légère comme la cp mais je doute que vous remarquiez une grande différence, à moins que votre puissance de traitement soit très faible.

0 votes

Un problème avec rsync est la mémoire. il essaie de charger TOUS les chemins de fichiers de la source en mémoire avant de scanner la destination pour ce qui doit être copié. si vous faites une réplique de disque vers un système de fichiers vide, alors cp peut faire le travail.

0voto

shodanshok Points 42743

Vous avez essentiellement trois options :

  1. Copie de l'ensemble de la partition/du périphérique de bloc
  2. Dump le système de fichiers entier
  3. Copier les données à l'intérieur de le système de fichiers

Le choix de l'une des trois options dépend de ce que vous aviez à sauvegarder et des résultats que vous souhaitez obtenir. Pour votre cas spécifique, je pense que l'option n.1 (copie de périphérique de bloc) couplée à ddrescue est la voie à suivre. Quoi qu'il en soit, voyons une collection d'options disponibles.

Cas 1 : copie de partition
PRO : en copiant un bloc entier de dispositif, vous êtes sûr que l'on n'a rien oublié.
Inconvénient : la manipulation des périphériques de bloc est moins pratique que celle des fichiers. La sélection d'un périphérique de bloc ou d'options inappropriés peut détruire vos données.

Si vous voulez avoir une copie binaire d'un bloc entier, vous devez utiliser dd ou un outil similaire. D'autres outils très utiles sont dcfldd (une fourche dd prête à l'emploi) et ddrescue (un outil de type dd encore plus avancé).

Cas 2 : vidage du système de fichiers
_PRO : en copiant un système de fichiers entier, vous êtes sûr que toutes les données et métadonnées qu'il contient ont été sauvegardées.
CON : si vous avez plusieurs systèmes de fichiers à sauvegarder, vous devez faire plusieurs passes (une pour chaque système de fichiers).
_Un outil utile pour traiter les systèmes de fichiers est FSArchive . De plus, de nombreux systèmes de fichiers ont intégré des utilitaires pour vider leur contenu de manière efficace (par exemple, XFS a xfsdump, Ext2/3/4 utilise dumpe2fs, et ainsi de suite).

Cas 3 : copier les données à l'intérieur du système de fichiers
PRO : en copiant les données depuis l'intérieur du système de fichiers, vous pouvez sélectionner très précisément ce qui doit être sauvegardé. Cela garantit un temps de sauvegarde/restauration rapide et des images de sauvegarde de petite taille.
CON : Il fallait savoir parfaitement quoi sauvegarder, et comment. Un soin particulier doit être apporté aux métadonnées importantes (ex : propriétaire, permission, ACLs, EAs...)
Rsync est votre meilleur ami ici. Rsnapshot y rdiff-backup sont de merveilleux outils construits au-dessus de rsync/librsync. Goudron est le couteau à manchettes de tout administrateur système Unix.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X