J'ai regardé cette question et cette question , mais ils ne semblent pas répondre aux symptômes que je vois.
J'ai un gros fichier journal (environ 600 Mo) que j'essaie de transférer sur un réseau cellulaire. Parce qu'il est un fichier journal , il est tout simplement ajouté à (bien qu'il est en fait dans une base de données SQLite avec seulement INSERT en cours d' exécution, il est donc pas tout à fait aussi simple que cela, mais à l'exception de la dernière page 4k (ou peut - être un peu) le fichier est identique à chaque fois. Il est important que seules les modifications (et quelles que soient les sommes de contrôle à transmettre) soient réellement envoyées, car la connexion de données est mesurée.
Pourtant, lorsque j'effectue un test sur une connexion illimitée (par exemple, un point d'accès Wi-Fi gratuit), je ne constate pas d'accélération ou de réduction du transfert de données observé ou signalé. Sur une connexion WiFi lente, je vois de l'ordre de 1 Mo / s ou moins, signalant que le transfert va prendre près de 20 minutes. Sur une connexion WiFi rapide, je vois une vitesse plus rapide uniforme, mais aucun rapport d'accélération, et une deuxième tentative de transfert (qui devrait maintenant être plus rapide car les deux fichiers sont identiques) ne montre désormais aucune différence.
La commande (nettoyée pour supprimer les informations sensibles) que j'utilise est la suivante:
rsync 'ssh -p 9999' --progress LogFile michael@my.host.zzz:/home/michael/logs/LogFile
La sortie que j'obtiens à la fin ressemble à ceci:
LogFile
640,856,064 100% 21.25MB/s 0:00:28 (xfr$1, to-chk=0/1)
Il n'est fait mention d'aucune sorte d'accélération.
Je soupçonne que le problème peut être l'un des suivants:
- Il me manque une option de ligne de commande. Cependant, relire la page de manuel semble suggérer que les transferts delta sont activés par défaut: je ne vois que les options pour les désactiver.
- J'utilise rsync sur ssh (sur un port non standard même) car le serveur est derrière un pare-feu qui n'autorise que ssh. Cependant, je n'ai rien vu dire explicitement que les transferts delta ne fonctionneront pas si le démon rsync n'est pas en cours d'exécution. J'ai essayé d'utiliser la notation "::" au lieu de ":" mais la page de manuel n'est pas très claire sur ce qu'est un "module", et ma commande est rejetée pour avoir spécifié un module invalide.
J'ai exclu ce qui suit:
- transferts delta non effectués sur un réseau local. Exclue parce que j'essaie d'effectuer le transfert sur Internet
- frais généraux dus au calcul de la somme de contrôle. J'ai vu ce comportement à la fois sur une connexion Wifi rapide et lente et le taux de transfert ne semble pas être lié au calcul.
rsync --stats
et également -v -v
obtenir des statistiques encore plus détaillées. Rsync vous dira combien il y avait de données appariées et non appariées.
but with the exception of the last 4k page (or maybe a few) the file is identical each time.
Avez-vous réellement vérifié cela aveccmp
? Ou mieux, avecxdelta
ou quelque chose? Si vous voulez vraiment minimiser la taille du transfert, conservez les anciennes et les nouvelles versions localement, afin de pouvoir calculer un diff binaire minimal localement (avec autre chose que rsync) et l'envoyer sans avoir à envoyer des sommes de contrôle via la connexion mesurée. Faire cela au niveau de l'enregistrement de la base de données au lieu du niveau du fichier binaire est probablement encore mieux, comme le suggère derobert.