Comment resynchroniser un gros fichier, avec le moins de frais de CPU et de bande passante possible?


13

J'ai un fichier de 500 Go que je prévois de sauvegarder à distance. Le fichier change souvent. Je vais le synchroniser d'un bureau à un serveur. Les deux peuvent exécuter le client ou le serveur rsync.

Quelle est la commande appropriée pour cela? Ceux que j'ai essayés ont duré une éternité ou ont tout simplement agi de façon étrange.

Exemple et résultats:

rsync -cv --partial --inplace --no-whole-file /desktop/file1 myserver.com::module/file1 

Semble fonctionner, mais seulement si je le fais deux fois (?!). Aussi, lentement.

La commande ci-dessus effectue-t-elle la somme de contrôle sur les deux ordinateurs, ou uniquement sur celui qui envoie? Est-ce correct sinon?


Un fichier aussi volumineux qui change souvent? Vous allez obtenir des résultats très, très décevants avec rsync ...
Ignacio Vazquez-Abrams

D'autres suggestions? Je devrais être faisable avec une application, le client propriétaire de Dropbox le fait très bien. Voir forums.dropbox.com/topic.php?id=17631
Johan Allgoth

--inplace implique --partial voir: linux.die.net/man/1/rsync
Ray Hulha

Réponses:


12

Cela ne sera jamais rapide, car rsync devra lire / contrôler le fichier entier, et la lecture de 500 Go va prendre beaucoup de temps, sauf si vous l'avez stocké sur des SSD ou quelque chose.

Essayez rsync -vhz --partial --inplace <file/server stuff>.

-csignifie qu'il contrôle le total du fichier AVANT d'effectuer des transferts, plutôt que d'utiliser l'horodatage pour voir s'il a changé, ce qui signifie lire le fichier entier deux fois. Si l'horodatage n'est pas modifié (il le devrait), vous pouvez simplement touchle fichier avant d'exécuter rsync.

Si ce n'est pas scripté, vous pouvez l'ajouter --progresspour voir comment il fonctionne pendant son exécution.


Ouais, je connais 'grand fichier == longue manipulation'. Mais je sens que je manque quelque chose ici, voir le commentaire ci-dessus. Si Dropbox peut le faire, nous aussi! =) Je n'ai pas dit, mais j'ai aussi essayé sans -c, toujours lent.
Johan Allgoth

2
--inplaceimplique également--partial

2

Bien que ce ne soit pas rsync, selon ce que vous essayez de faire, cela peut mieux fonctionner. Je faisais une tâche de sauvegarde similaire et c'était certainement plus rapide.

Utilisez netcat pour créer un tuyau de goudron d'une machine à l'autre.

Sur votre machine source:

tar -cpv --atime-preserve=system . | nc -q 10 -l -p 45454

Vous créez une archive tar qui préserve les autorisations et le temps, puis la redirigez vers netcat sur le port 45454

Sur votre machine de sauvegarde

nc -w 10 X.X.X.X 45454 | tar -xpv

X.X.X.X = adresse IP locale de votre machine source.

Pour moi, cela a bien fonctionné. Il fonctionnait à 25-30 Mo / s sur un réseau local câblé, contre 2-3 Mo / s avec rsync. L'inconvénient est qu'il ne se synchronise pas, il fait juste une copie de ce qui se trouve sur votre source. Pour une sauvegarde comme celle que vous décrivez - un fichier de 500 Go - cela pourrait très bien fonctionner.

Vous devrez peut-être le faire en tant que root pour éviter les problèmes d'autorisations, ou vous aurez peut-être de la chance.

FWIW, j'ai d'abord appris cela à ce sujet ici: http://www.screenage.de/blog/2007/12/30/using-netcat-and-tar-for-network-file-transfer/


1
tarest mieux que rsynclorsque vous avez beaucoup de petits fichiers à transférer. L'utilisation ncaméliore également le taux de transfert lors d'une connexion rapide, car vous n'avez pas la surcharge de cryptage SSH (dont je n'ai pas besoin sur une connexion peer-to-peer)
jornane

0

Pour éviter la surcharge du réseau, utilisez simplement le protocole rsync et non SSH. Par défaut, rsync utilise SSH lors de la spécification d'une URL comme hostname: / path. Utilisez plutôt rsync: // hostname / path pour utiliser le protocole rsync plus rapide. Aucune astuce avec tar / netcat n'est nécessaire de cette façon. L'algorithme delta rsync devrait être beaucoup plus rapide.

Voir également https://gergap.wordpress.com/tag/rsync/ pour plus d'informations.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.