Bonjour,
Lâinstallation ou lâutilisation de Nextcloud nĂ©cessite souvent de transfĂ©rer de grandes quantitĂ©s de donnĂ©es. Personnellement je suis amenĂ© Ă gĂ©rer des donnĂ©es scientifiques et ce sont des centaines de milliers de fichiers et des To de donnĂ©es Ă balader dâun disque Ă un autre ou dâun serveur Ă un autre.
Travaillant sous Linux mon outil favori pour le transfert des donnĂ©es est ârsyncâ qui est installĂ© par dĂ©faut dans la plupart des distributions Linux.
Les utilisateurs de Windows 10 (il y en aâŠ) peuvent aussi dĂ©sormais lâutiliser puisquâil est possible dâutiliser bash sous Windows 10. Ils peuvent ainsi disposer dâun outil autre que le copier/coller de Windows⊠et open source.
Mais mĂȘme avec rsync, transfĂ©rer des grandes quantitĂ©s de donnĂ©es peut sâavĂ©rer trĂšs loooooong.
Une maniĂšre dâaccĂ©lerer les transferts est donc de parallĂ©liser rsync, câest Ă dire de lancer plusieurs processus rsync en mĂȘme temps.
Câest lĂ quâintervient fpsync, un outil qui fait partie du logiciel fpart dĂ©veloppĂ© par Ganael Laplanche, quâil soit ici remerciĂ© pour les heures de transferts Ă©pargnĂ©esâŠ
Comment ça marche ?
Avec mes mots à moi je dirai que fpart découpe les données à envoyer en morceaux puis fpsync envoi les morceaux en parrallÚle vers la destination.
Comment on lâinstalle ?
Câest trĂšs simple, il faut dâabord installer fpart. Par exemple sous Ubuntu on fait
sudo apt install fpart
Je vous conseillerais tout de mĂȘme dâinstaller le logiciel depuis les sources pour avoir la derniĂšre version avec toutes les fonctionnalitĂ©s. Câest pas compliquĂ© et tout est expliquĂ© sur la page Github de fpart.
Comment on sâen sert ?
VoilĂ un exemple simple :
-
La commande rsync âclassiqueâ (les options inplace, size-only et vrWO sont utilisĂ©es car je synchronise vers un montage s3fs, mais câest une autre histoire)
rsync --inplace --size-only -vrWO /source/ /mnt/destination/
-
La commande fpsync pour lancer 4 processus rsync simultanés
fpsync -n 4 -o "--inplace --size-only -vrWO" /source/ /mnt/destination/
On peut vĂ©rifier que ça envoi du lourdâŠ
grep '/bin/sh -c /usr/bin/rsync'
root 4216 0.0 0.0 4340 760 ? S 08:20 0:00 /bin/sh -c /usr/bin/rsync --inplace --size-only -vrWO -r --files-from="/tmp/fpsync/parts/1548702468-5506/part.1263" --from0 "/source/ " "/mnt/destination //"
root 4272 0.0 0.0 4340 728 ? S 08:20 0:00 /bin/sh -c /usr/bin/rsync --inplace --size-only -vrWO -r --files-from="/tmp/fpsync/parts/1548702468-5506/part.1264" --from0 "/source/ " "/mnt/destination //"
root 7694 0.0 0.0 4340 760 ? S 08:22 0:00 /bin/sh -c /usr/bin/rsync --inplace --size-only -vrWO -r --files-from="/tmp/fpsync/parts/1548702468-5506/part.1265" --from0 "/source/ " "/mnt/destination //"
root 14019 0.0 0.0 4340 772 ? S 08:25 0:00 /bin/sh -c /usr/bin/rsync --inplace --size-only -vrWO -r --files-from="/tmp/fpsync/parts/1548702468-5506/part.1266" --from0 "/source/ " "/mnt/destination //"
Bonus
Pour envoyer la commande et faire en sorte quâelle continue Ă sâexĂ©cuter quand on ferme le terminal :
nohup fpsync -n 4 -o "--inplace --size-only -vrWO" /source/ /mnt/destination/ &
Conclusion
Je nâai pas tout testĂ© et je nâai pas encore tout compris dans les options mais câest clairement un gain de temps Ă©norme pour les transferts avec rsync.
Il y a dâautres outils mais je ne me suis pas encore penchĂ© sur la question, si vous avez des retours je suis preneurâŠ
https://github.com/jbd/msrsync --> moins complet mais ne requiert que rsync et python
http://moo.nac.uci.edu/~hjm/parsync/ --> LĂ câest pour des trĂšs gros volumes avec une Ă©norme bande passante (cluster de calcul)
https://github.com/pftool/pftool --> lĂ encore on est plutĂŽt dans le monde HPC