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?
Réponses:
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>
.-c
signifie 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 simplementtouch
le fichier avant d'exécuter rsync.Si ce n'est pas scripté, vous pouvez l'ajouter
--progress
pour voir comment il fonctionne pendant son exécution.la source
--inplace
implique également--partial
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/
la source
tar
est mieux quersync
lorsque vous avez beaucoup de petits fichiers à transférer. L'utilisationnc
amé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)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.
la source