Comment reprendre une copie d'un gros fichier sous linux? J'ai un énorme fichier (plusieurs gigaoctets) partiellement copié sur un lecteur réseau, et cela a pris beaucoup de temps, et cela a été principalement fait avant que l'opération de copie ne s'arrête en raison d'un problème de réseau qui est maintenant résolu. Comment reprendre la copie du fichier. Je ne veux pas d'un script inefficace, et ecp n'a pas fonctionné (il ne semble pas fonctionner pour les gros fichiers).
9
Si vous savez que vous avez simplement besoin d'ajouter au fichier local et que vous ne souhaitez pas utiliser rsync (ce qui pourrait prendre du temps à calculer les sommes de contrôle), vous pouvez utiliser curl. Par exemple, si vous avez un gros fichier sur une clé USB amovible lente montée sur
/media/CORSAIR/somefile.dat
et que la moitié seulement se trouve dans le répertoire en cours, pour reprendre:curl -C - -O "file:///media/CORSAIR/somefile.dat"
la source
Oui, rsync est la voie à suivre. Pour moi, nous avons transféré 100 + Go de données sur rsync + ssh. Si vous recherchez une véritable copie de sauvegarde, assurez-vous d'utiliser l'
-a
option (archive) pour conserver les attributs de fichier (heures, propriétaires, perms, etc.)Il est également utile pour copier des fichiers volumineux qui peuvent changer au cours d'une migration. Vous pouvez pré-charger les données vers la destination et une fois prêt pour la copie finale, recommencez mais seulement pour une fraction du temps. Vous pouvez économiser sur les temps d'arrêt réels en utilisant rsync à son plein potentiel.
PS L'utilisation
v
(verbeuse) peut ralentir le transfert de nombreux fichiers.la source
La commande que vous voulez sera quelque chose comme
sauf si vous pouvez accéder au serveur via ssh et exécuter rsync de cette façon, dans ce cas, la commande que FlyingFish a donnée est la meilleure.
la source
rsync n'est valable que si vous avez rsync sur le serveur de destination. Dans ce cas, c'est en effet la meilleure solution.
Mais pas autrement. Puisque le but de rsync est de ne copier que les pièces modifiées dans de gros fichiers, il suppose que ces pièces modifiées peuvent se trouver n'importe où dans le fichier. Cela signifie qu'il vérifiera tous les blocs qui ont déjà été copiés. Si vous n'avez pas rsync à l'extrémité distante, votre rsync local commencera donc par relire tout ce qui a déjà été transféré.
Si votre machine source a un serveur web ou ftp, vous pouvez utiliser wget depuis le serveur de destination avec l'option "--continue". (ou boucle avec l'option "--continue-at [- | size]").
Si votre machine de destination possède un serveur FTP, vous pouvez utiliser curl sur la machine source avec l'option --append.
En dernier recours, vous pouvez utiliser dd avec les arguments "bs =" (taille de bloc), "skip =" et "seek =". Par exemple:
Supposons que vous puissiez utiliser des blocs de 2048 octets. Si votre fichier de destination est actuellement de 2'048'000'000 octets (2 Go), soit 1'000'000 blocs de 2048 octets. Pour ajouter le reste de votre fichier source à la destination, vous pouvez
dd if = fichier_source de = fichier_destination bs = 2048 ignorer = 1000000 rechercher = 1000000
Vous pourrez peut-être utiliser une taille de bloc plus grande pour améliorer la vitesse de transfert. N'oubliez pas de spécifier la taille du bloc avec bs = et que la valeur donnée pour ignorer et rechercher est en blocs, pas en octets.
la source