Lors de la copie de fichiers clairsemés à l'aide de io.Copy(), ils gonflent souvent considérablement en taille à la destination.
io.Copy() transfère les fichiers bruts octets, qui masquent la présence de trous dans un fichier clairsemé – les espaces où aucune donnée ne réside réellement. Ces informations ne sont pas accessibles via des appels système standard comme read(2). En tant que tel, io.Copy() est incapable de préserver la rareté des fichiers.
Pour résoudre ce problème, nous devons approfondir l'utilisation du package syscall et de la gestion manuelle. Les appels système Lseek(2), avec des valeurs spéciales SEEK_HOLE et SEEK_DATA, peuvent être utilisés pour manipuler des trous dans les fichiers.
Si vous souhaitez conserver la parcimonie d'un fichier pendant le transfert, la situation est plus complexe. Fallocate(2) peut être utilisé pour tenter de créer des trous sur les systèmes de fichiers pris en charge. Cependant, certains systèmes de fichiers ne prennent pas en charge les trous, comme la famille FAT.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3