{"id":32726,"date":"2018-01-02T01:25:23","date_gmt":"2018-01-02T01:25:23","guid":{"rendered":"http:\/\/antonini.psc.br\/?p=32726"},"modified":"2021-04-02T04:55:59","modified_gmt":"2021-04-02T04:55:59","slug":"desfragmentando-particoes-ntfs-no-linux","status":"publish","type":"post","link":"https:\/\/antonini.ddns.net\/?p=32726","title":{"rendered":"Desfragmentando parti\u00e7\u00f5es NTFS no Linux"},"content":{"rendered":"<div class=\"pull-left centro margin20\" style=\"text-align: justify;\">\n<p><a title=\"Perfil do usu\u00e1rio\" href=\"https:\/\/www.vivaolinux.com.br\/~jaysponsored\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/static.vivaolinux.com.br\/imagens\/fotos\/308479a6208ff.png\" width=\"80\" height=\"60\" border=\"0\"\/><\/a><\/p>\n<p style=\"text-align: left;\"><a title=\"Perfil do usu\u00e1rio\" href=\"https:\/\/www.vivaolinux.com.br\/~jaysponsored\">jaysponsored<\/a><\/p>\n<\/div>\n<p style=\"text-align: left;\">Neste artigo apresento o UltraDefrag, um defragmentador de parti\u00e7\u00f5es NTFS para GNU\/Linux.<\/p>\n<p class=\"pull-right fonte13\" style=\"text-align: left;\">[ Hits:&nbsp;<span class=\"counter fonte13\">1.241<\/span>&nbsp;]<\/p>\n<p style=\"text-align: left;\">Por: Eduardo Mozart de Oliveira em 10\/12\/2017 | Blog:&nbsp;<a href=\"http:\/\/www.eduardomozartdeoliveira.wordpress.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.eduardomozartdeoliveira.wordpress.com\/<\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Introdu\u00e7\u00e3o<\/strong><\/p>\n<p style=\"text-align: justify;\">Durante a manuten\u00e7\u00e3o de um notebook de cliente, ap\u00f3s realizar a manuten\u00e7\u00e3o preventiva (exclus\u00e3o de arquivos tempor\u00e1rios, atualiza\u00e7\u00e3o de programas), decidi realizar a desfragmenta\u00e7\u00e3o de disco. Apesar do Windows acompanhar um desfragmentador de disco nativo, uso o&nbsp;<em>Auslogic Disk Defrag<\/em>&nbsp;que, apesar de n\u00e3o ser Open Source, \u00e9 gratuito para uso dom\u00e9stico e comercial. Durante a desfragmenta\u00e7\u00e3o, o programa realizou uma an\u00e1lise no meu disco r\u00edgido externo (que uso para manuten\u00e7\u00e3o e backup) e constatou alta fragmenta\u00e7\u00e3o de disco. Como precisava finalizar o chamado, realizei a desfragmenta\u00e7\u00e3o apenas no disco do cliente, por\u00e9m, decidi realizar a desfragmenta\u00e7\u00e3o em meu pr\u00f3prio computador, que possui o&nbsp;<em>Deepin 15.5 Beta<\/em>&nbsp;(baseado no Debian &#8220;Sid&#8221; x86_64).&nbsp;<\/p>\n<p>Mas, afinal, o que \u00e9 fragmenta\u00e7\u00e3o? A fragmenta\u00e7\u00e3o ocorre quando um arquivo n\u00e3o \u00e9 salvo de forma cont\u00ednua no disco. &#8220;Como assim?&#8221; A imagem abaixo demonstra um disco r\u00edgido fragmentado [2]:<\/p>\n<div class=\"figura\" style=\"text-align: center;\"><a href=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/defragment-linux-fragmented.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_defragment-linux-fragmented.png\" border=\"0\"\/><\/a>Figura 1: Fragmenta\u00e7\u00e3o de arquivos (FAT)<\/div>\n<p style=\"text-align: justify;\">Fonte: Make Tech Easier, 2015.&nbsp;<\/p>\n<p>Note que, um mesmo arquivo, ocupa diversos setores do disco, n\u00e3o sendo salvos de forma cont\u00ednua. Isto \u00e9 extremamente comum no Windows, devido a forma como o sistema de arquivos aloca os arquivos. [2]&nbsp;<\/p>\n<p>O sistema de arquivos EXT aloca arquivos de uma maneira mais inteligente. Ao inv\u00e9s de salvar cada arquivo pr\u00f3ximos uns dos outros no disco, ele mant\u00e9m uma quantidade de espa\u00e7o livre entre eles. Quando um arquivo \u00e9 editado e precisa crescer, h\u00e1 espa\u00e7o para que ele cres\u00e7a. [3]<\/p>\n<div class=\"figura\" style=\"text-align: center;\"><a href=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/defragment-linux-journal.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_defragment-linux-journal.png\" border=\"0\"\/><\/a>Figura 2: Aloca\u00e7\u00e3o de arquivos (Linux)<\/div>\n<p style=\"text-align: justify;\">Fonte: Make Tech Easier, 2015.&nbsp;<\/p>\n<p>Sejamos justos: O NTFS possui uma l\u00f3gica similar (de manter uma certa quantidade de espa\u00e7o livre ap\u00f3s o arquivo) [2], por\u00e9m, se ocorrer fragmenta\u00e7\u00e3o no sistema de arquivos EXT, ele tentar\u00e1 mover os arquivos pr\u00f3ximos para reduzir a fragmenta\u00e7\u00e3o em uso normal, sem a necessidade de um utilit\u00e1rio de desfragmenta\u00e7\u00e3o. [3]&nbsp;<\/p>\n<p>A fragmenta\u00e7\u00e3o pode ocorrer no&nbsp;<a href=\"https:\/\/www.vivaolinux.com.br\/linux\/\">Linux<\/a>, principalmente em parti\u00e7\u00f5es que possuem mais de 80% de espa\u00e7o ocupado. [3] Se voc\u00ea possui problemas com fragmenta\u00e7\u00e3o no Linux, provavelmente voc\u00ea precisa obter um disco maior.&nbsp;<\/p>\n<p>Apesar de n\u00e3o acompanhar um desfragmentador nativo, \u00e9 poss\u00edvel instalar o pacote &#8221;e2fsprogs&#8221; atrav\u00e9s do apt-get (Debian), que adiciona o utilit\u00e1rio &#8221;e4defrag&#8221; ao sistema. [3]&nbsp;<\/p>\n<p>Infelizmente, para desfragmentar parti\u00e7\u00f5es NTFS no Linux, n\u00e3o h\u00e1 solu\u00e7\u00f5es prontas.&nbsp;<\/p>\n<p>H\u00e1 um truque para alcan\u00e7ar a desfragmenta\u00e7\u00e3o NTFS no Linux. Voc\u00ea precisar\u00e1 de um segundo HDD ou pelo menos 51% de espa\u00e7o (se n\u00e3o estiver usando compress\u00e3o &#8211; leia abaixo). [4]&nbsp;<\/p>\n<p>O truque \u00e9 usar ferramentas para &#8220;clonar&#8221; a parti\u00e7\u00e3o. O&nbsp;<em>fsarchive<\/em>&nbsp;&#8220;clona&#8221; uma parti\u00e7\u00e3o NTFS, mas ao restaurar, ele n\u00e3o restaura os arquivos onde eles estavam, salvando os arquivos sem fragmenta\u00e7\u00e3o. [4]&nbsp;<\/p>\n<p>Por\u00e9m, h\u00e1 um aviso importante a aqueles que pensam que o NTFS pode ser desfragmentado no Linux simplesmente copiando arquivos [4]:&nbsp;<\/p>\n<p>Alguns arquivos\/diret\u00f3rios possuem um atributo especial ativo, chamado Compress\u00e3o. [4]<\/p>\n<div class=\"figura\"><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/propriedade-de-disco.png\"\/><\/div>\n<p style=\"text-align: justify;\">Toda vez que o Linux (cp, fsarchiver etc) escreve um arquivo\/diret\u00f3rio em um sistema de arquivos NTFS, ele o escreve sem compress\u00e3o NTFS, independente da compress\u00e3o de arquivos\/diret\u00f3rios estar habilitada ou n\u00e3o. [4]&nbsp;<\/p>\n<p>Ent\u00e3o, voc\u00ea pode encontrar-se em uma situa\u00e7\u00e3o que, ao restaurar com fsarchive (ou cp etc) voc\u00ea preencher\u00e1 a parti\u00e7\u00e3o e n\u00e3o ter\u00e1 espa\u00e7o suficiente. [4]&nbsp;<\/p>\n<p>Alguns tipos de dados podem alcan\u00e7ar uma taxa de compress\u00e3o NTFS de 3, ent\u00e3o voc\u00ea pode possuir uma parti\u00e7\u00e3o de X GB e a soma destes arquivos ser cerca de 3*X em tamanho. [4]&nbsp;<\/p>\n<p>Por\u00e9m, pesquisando na Internet, pude encontrar um \/\/port\/\/ do UltraDefrag (um desfragmentador Open Source para Windows) para Linux, que usa a biblioteca NTFS-3G (dispon\u00edvel para diversos sistemas operacionais, como Linux, FreeBSD, Mac OS X, Solaris etc) para desfragmentar e otimizar parti\u00e7\u00f5es NTFS. [5] Atualmente, h\u00e1 uma vers\u00e3o de testes (Beta) apenas para console. [6]&nbsp;<\/p>\n<p>Use o UltraDefrag por sua pr\u00f3pria conta e risco. Tenha em mente que o UltraDefrag para Linux \u00e9 beta (em testes).&nbsp;<\/p>\n<p>Eu testei em meu disco r\u00edgido USB externo, e ele parece fazer um bom trabalho em sistemas de arquivos NTFS. N\u00e3o tive corrup\u00e7\u00e3o de dados at\u00e9 agora.&nbsp;<\/p>\n<p>Mas: recomendo FORTEMENTE que voc\u00ea n\u00e3o use-o em uma parti\u00e7\u00e3o Windows e em sua parti\u00e7\u00e3o de boot. Ele poder\u00e1 quebrar a inicializa\u00e7\u00e3o do Windows. N\u00e3o por corromper os arquivos, mas por que o NTFS requer que alguns arquivos estejam em determinados setores &#8211; especialmente se a parti\u00e7\u00e3o \u00e9 usada para iniciar o Windows. Desfragmentadores para Linux podem n\u00e3o se importar com arquivos de sistema, por que para o Linux s\u00e3o apenas arquivos comuns. [5]&nbsp;<\/p>\n<p>O &#8220;UltraDefrag for Linux&#8221; pode ser baixado <a href=\"http:\/\/jp-andre.pagesperso-orange.fr\/advanced-ntfs-3g.html\" target=\"_blank\" rel=\"noopener noreferrer\">aqui<\/a><\/p>\n<p>Ele \u00e9 nomeado &#8220;ultradefrag-5.0.0AB.7.zip&#8221;.&nbsp;<\/p>\n<p>Eu encontrei alguns problemas ao tentar compilar o UltraDefrag do c\u00f3digo-fonte. O arquivo README.linux (localizado no diret\u00f3rio ultradefrag-5.0.0AB.7\/src) possui algumas instru\u00e7\u00f5es para compila\u00e7\u00e3o, testes e a sintaxe de linha de comandos do UltraDefrag. H\u00e1 algumas informa\u00e7\u00f5es importantes que precisam ser lidas ANTES de iniciar a compila\u00e7\u00e3o:&nbsp;<\/p>\n<blockquote><p>&#8220;N\u00e3o h\u00e1 atualmente nenhum script &#8220;configure&#8221; para adaptar o arquivo Makefile para seu ambiente. Voc\u00ea precisar\u00e1 adapt\u00e1-lo, apesar do arquivo &#8220;Makefile&#8221; provido servir para a maioria dos casos, ap\u00f3s adaptar as localiza\u00e7\u00f5es dos arquivos de cabe\u00e7alho e objetos compartilhados da libntfs-3g.&#8221;<\/p><\/blockquote>\n<p style=\"text-align: justify;\">De acordo com a documenta\u00e7\u00e3o, pode ser necess\u00e1rio adaptar o arquivo Makefile para que ele possa encontrar as bibliotecas necess\u00e1rias do NTFS-3G no sistema e possa realizar a compila\u00e7\u00e3o do UltraDefrag. As vari\u00e1veis que o README refere-se s\u00e3o as vari\u00e1veis LIB1 e LIB2 (linha 26 e 27 do arquivo ultradefrag-5.0.0AB.7\/src\/Makefile).&nbsp;<\/p>\n<p>Ap\u00f3s editar as vari\u00e1veis, criei um diff das altera\u00e7\u00f5es, criando um arquivo de patch que altera os arquivos ultradefrag-5.0.0AB.7\/src\/Makefile e ultradefrag-5.0.0AB.7\/src\/wincalls\/ntfs-3g.c para que eles possam ser compilados no Debian &#8220;Sid&#8221;.&nbsp;<\/p>\n<p>Voc\u00ea pode encontrar o arquivo de patch no SourceForge <a href=\"https:\/\/sourceforge.net\/p\/ultradefrag\/discussion\/709673\/thread\/380cf1e6\/07fe\/attachment\/udefrag.patch\" target=\"_blank\" rel=\"noopener noreferrer\">aqui<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Caso o link direto n\u00e3o funcione, voc\u00ea pode obter o arquivo de patch <a href=\"https:\/\/sourceforge.net\/p\/ultradefrag\/discussion\/709673\/thread\/380cf1e6\/?limit=25\" target=\"_blank\" rel=\"noopener noreferrer\">aqui<\/a><\/p>\n<p style=\"text-align: left;\">Aqui est\u00e1 o procedimento completo:&nbsp;<\/p>\n<p style=\"text-align: left;\"><strong><i class=\"fa fa-usd\"><\/i>&nbsp;sudo apt-get update<br \/>\n$ sudo apt-get upgrade install ntfs-3g-dev libncurses5-dev libncursesw5-dev gcc-multilib<br \/>\n$ wget http:\/\/jp-andre.pagesperso-orange.fr\/ultradefrag-5.0.0AB.7.zip<br \/>\n$ unzip ultradefrag-5.0.0AB.7.zip<br \/>\n$ wget https:\/\/sourceforge.net\/p\/ultradefrag\/discussion\/709673\/thread\/380cf1e6\/07fe\/attachment\/udefrag.patch<br \/>\n$ patch -p 0 -i udefrag.patch<br \/>\n$ cd ultradefrag-5.0.0AB.7\/src<br \/>\n$ make<br \/>\n$ sudo cp udefrag \/usr\/local\/bin<\/strong>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Nas duas primeiras linhas, atualizamos a lista de pacotes de reposit\u00f3rios e baixamos as depend\u00eancias de compila\u00e7\u00e3o do UltraDefrag. Em um segundo momento, baixamos o c\u00f3digo-fonte do UltraDefrag e o extra\u00edmos. Depois, baixamos o arquivo de patch, adaptando o c\u00f3digo para compila\u00e7\u00e3o no Deepin (Debian &#8220;Sid&#8221;) e o aplicamos. Em seguida, compilamos o c\u00f3digo-fonte e copiamos o arquivo bin\u00e1rio &#8220;udefrag&#8221; para \/usr\/local\/bin, para que possamos execut\u00e1-lo sem informar o caminho completo do bin\u00e1rio (digitando apenas &#8220;udefrag&#8221; no Terminal).&nbsp;<\/p>\n<p style=\"text-align: justify;\">Talvez o arquivo de patch n\u00e3o seja o ideal para seu ambiente ou falhe durante a aplica\u00e7\u00e3o. N\u00e3o tem problema, podemos realizar as adapta\u00e7\u00f5es na m\u00e3o, para que o UltraDefrag possa ser compilado em qualquer sistema que possui as bibliotecas necess\u00e1rias (e n\u00e3o apenas no Debian &#8220;Sid&#8221;).&nbsp;<\/p>\n<p style=\"text-align: justify;\">Primeiro, voc\u00ea precisa se certificar que seu sistema possui todas as depend\u00eancias necess\u00e1rias. No Debian &#8220;Sid&#8221;, elas s\u00e3o instal\u00e1veis atrav\u00e9s do apt-get, por\u00e9m, o nome das depend\u00eancias necess\u00e1rias podem mudar de acordo com sua distribui\u00e7\u00e3o.&nbsp;<\/p>\n<p style=\"text-align: justify;\">Para editar o arquivo ultradefrag-5.0.0AB.7\/src\/Makefile, voc\u00ea pode usar qualquer editor de sua prefer\u00eancia (como o Nano ou vi no Terminal ou o Gedit na interface gr\u00e1fica). No Nano, pressionando &#8220;CTRL + W&#8221; \u00e9 poss\u00edvel localizar texto em arquivos. O Gedit possui funcionalidade similar ao pressionar &#8220;CTRL + F&#8221;.&nbsp;<\/p>\n<p style=\"text-align: justify;\"><strong><i class=\"fa fa-usd\"><\/i>&nbsp;nano Makefile<\/strong>&nbsp;<\/p>\n<p style=\"text-align: justify;\">A primeira coisa que voc\u00ea precisar\u00e1 alterar no arquivo ultradefrag-5.0.0AB.7\/src\/Makefile \u00e9 o caminho das bibliotecas. Aparentemente, o Makefile do &#8220;UltraDefrag for Linux&#8221; foi adaptado para ser compilado no Red Hat por possuir, na linha 18 (LIB2), o caminho &#8220;\/usr\/lib\/gcc\/x86_64-redhat-linux\/4.6.0&#8221;. Voc\u00ea precisar\u00e1 adaptar este caminho para a localiza\u00e7\u00e3o do gcc de acordo com seu sistema. Para descobrirmos o diret\u00f3rio do gcc, use os seguintes comandos:&nbsp;<\/p>\n<p style=\"text-align: justify;\"><strong><i class=\"fa fa-usd\"><\/i>&nbsp;cd \/usr\/lib\/gcc<br \/>\n$ ls<\/strong><br \/>\n<samp>aotcompile.py classfile.py i686-linux-gnu x86_64-linux-gnu<\/samp>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Note que a sa\u00edda do comando informou dois diret\u00f3rios: &#8220;i686-linux-gnu&#8221; e &#8220;x86_64-linux-gnu&#8221;. Caso tenha d\u00favida da arquitetura do seu sistema, use o comando:&nbsp;<\/p>\n<p style=\"text-align: justify;\"><strong><i class=\"fa fa-usd\"><\/i>&nbsp;uname -m<\/strong><br \/>\n<samp>x86_64<\/samp>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Agora, juntando as pe\u00e7as do quebra-cabe\u00e7a, temos o caminho: &#8220;\/usr\/lib\/gcc\/x86_64-linux-gnu&#8221;. Por\u00e9m, esta informa\u00e7\u00e3o, por si s\u00f3, n\u00e3o \u00e9 suficiente. Precisamos descobrir a vers\u00e3o do GCC dispon\u00edvel no sistema, que no arquivo Makefile original \u00e9 &#8220;4.6.0&#8221;.&nbsp;<\/p>\n<p style=\"text-align: justify;\">A comunidade Arch adaptou o Makefile para obter automaticamente a vers\u00e3o do GCC do sistema. [8] Abaixo da linha 20 (GCC), adicione a vari\u00e1vel GCC_VERSION:&nbsp;<\/p>\n<div class=\"codigo\" style=\"text-align: justify;\">GCC_VERSION=$(shell expr `$(GCC) -dumpversion`)<\/div>\n<p style=\"text-align: justify;\">Voc\u00ea pode executar o comando no Terminal para certificar-se que o comando retornar\u00e1 a sa\u00edda correta:&nbsp;<\/p>\n<p style=\"text-align: justify;\"><strong><i class=\"fa fa-usd\"><\/i>&nbsp;echo shell expr `gcc -dumpversion`<\/strong><br \/>\n<samp>shell expr 6.4.0<\/samp>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Caso o comando falhe, voc\u00ea pode realizar o mesmo procedimento utilizado anteriormente para descobrir o nome do diret\u00f3rio &#8220;\/usr\/lib\/gcc\/x86_64-linux-gnu&#8221; para descobrir a vers\u00e3o do GCC:&nbsp;<\/p>\n<p style=\"text-align: justify;\"><strong><i class=\"fa fa-usd\"><\/i>&nbsp;cd \/usr\/lib\/gcc\/x86_64-linux-gnu\/<br \/>\n$ ls<\/strong><br \/>\n<samp>4.8&nbsp;&nbsp;4.8.5&nbsp;&nbsp;4.9&nbsp;&nbsp;4.9.4&nbsp;&nbsp;5&nbsp;&nbsp;5.4.1&nbsp;&nbsp;6&nbsp;&nbsp;6.4.0&nbsp;&nbsp;7&nbsp;&nbsp;7.1.0<\/samp>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Ap\u00f3s alterar o caminho das bibliotecas, recebia a seguinte mensagem de erro:&nbsp;<\/p>\n<p style=\"text-align: justify;\"><strong><i class=\"fa fa-usd\"><\/i>&nbsp;cd wincalls; make wincalls.a<\/strong><\/p>\n<blockquote>\n<p style=\"text-align: justify;\">make[1]: Entering directory \/home\/myuser\/Desktop\/ultradefrag-5.0.0AB.7\/src\/wincalls&#8217; gcc -DLXGC=1 -O2 -I\/usr\/include\/ntfs-3g -I\/usr\/include -I..\/include -I..\/dll\/zenwinx -c ntfs-3g.c ntfs-3g.c: In function &#8216;ntfs_open&#8217;: ntfs-3g.c:147:27: error: &#8216;MS_RDONLY&#8217; undeclared (first use in this function) vol = ntfs_mount(device,MS_RDONLY); ^ ntfs-3g.c:147:27: note: each undeclared identifier is reported only once for each function it appears in make[1]: *** [ntfs-3g.o] Error 1 make[1]: Leaving directory\/home\/myuser\/Desktop\/ultradefrag-5.0.0AB.7\/src\/wincalls&#8217;<br \/>\nmake: *** [wincalls.a] Error 2<\/p>\n<\/blockquote>\n<p style=\"text-align: justify;\">Este erro ocorre devido a vari\u00e1vel &#8220;MS_RDONLY&#8221; n\u00e3o estar declarada. [8] O patch corrige este erro automaticamente. Mas podemos editar o arquivo ultradefrag-5.0.0AB.7\/src\/wincalls\/ntfs-3g.c manualmente e adicionar, na linha 34 (acima de stdio.h), a linha:&nbsp;<\/p>\n<div class=\"codigo\" style=\"text-align: justify;\">#include &lt;linux\/fs.h&gt;<\/div>\n<p>&nbsp;<\/p>\n<div class=\"figura\"><a href=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/1511391763.4.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_1511391763.4.png\" border=\"0\"\/><\/a><\/div>\n<p style=\"text-align: justify;\">Agora, ao tentar compilar o UltraDefrag, recebia as seguintes mensagens de erro:&nbsp;<\/p>\n<blockquote><p>ld: cannot find \/usr\/lib64\/crt1.o: Arquivo ou diret\u00f3rio n\u00e3o encontrado<br \/>\nld: cannot find \/usr\/lib64\/crti.o: Arquivo ou diret\u00f3rio n\u00e3o encontrado<br \/>\nld: cannot find \/usr\/lib\/gcc\/x86_64-linux-gnu\/4.9.4\/crtbegin.o: Arquivo ou diret\u00f3rio n\u00e3o encontrado<br \/>\nld: cannot find \/lib64\/libntfs-3g.so.*.0.0: Arquivo ou diret\u00f3rio n\u00e3o encontrado<br \/>\nld: cannot find -lgcc<br \/>\nMakefile:65: recipe for target &#8216;udefrag&#8217; failed<\/p><\/blockquote>\n<p style=\"text-align: justify;\">Antes de partir desesperadamente tentando encontrar a origem da mensagem de erro on-line, podemos procurar os arquivos do sistema para nos certificarmos que os arquivos, de fato, est\u00e3o ausentes em nosso sistema. Para isso, use o comando:&nbsp;<\/p>\n<p><strong><i class=\"fa fa-usd\"><\/i>&nbsp;find \/usr\/ |grep crti.o<\/strong><br \/>\n<samp>\/usr\/libx32\/crti.o<br \/>\n\/usr\/lib\/x86_64-linux-gnu\/crti.o<br \/>\n\/usr\/lib32\/crti.o<\/samp>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Para fins de performance, realizei a busca apenas em \/usr\/, mas \u00e9 poss\u00edvel realizar a busca em todo sistema, substituindo &#8220;\/usr\/&#8221; por &#8220;\/&#8221;. Note que a sa\u00edda do comando retornou 3 arquivos que possuem este nome em \/usr. Comparando os caminhos retornados com a sa\u00edda do comando &#8220;make&#8221;, notamos que o compilador est\u00e1 buscando a depend\u00eancia no local errado. Ao inv\u00e9s de procur\u00e1-la em &#8220;\/usr\/lib\/x86_64-linux-gnu\/&#8221;, ele est\u00e1 procurando-a em &#8220;\/usr\/lib64\/crti.o&#8221;.<\/p>\n<div class=\"figura\"><a href=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/1511391763.3.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_1511391763.3.png\" border=\"0\"\/><\/a><\/div>\n<p style=\"text-align: justify;\">Ao encontrar a refer\u00eancia ao arquivo &#8220;crti.o&#8221;, atualizei o caminho da depend\u00eancia de $(LIB1) para o caminho completo do arquivo (\/usr\/lib\/x86_64-linux-gnu\/). Realizei procedimento similar com as outras depend\u00eancias que n\u00e3o foram encontradas.&nbsp;<\/p>\n<p style=\"text-align: justify;\">Em rela\u00e7\u00e3o ao erro de arquivo n\u00e3o encontrado &#8220;\/lib64\/libntfs-3g.so.*.0.0&#8221;, usei o comando &#8220;find&#8221; procurando por &#8220;libntfs-3g.so&#8221;:&nbsp;<\/p>\n<p><strong><i class=\"fa fa-usd\"><\/i>&nbsp;find \/usr |grep libntfs-3g.so<\/strong><br \/>\n<samp>\/usr\/lib\/x86_64-linux-gnu\/libntfs-3g.so<\/samp>&nbsp;<\/p>\n<p style=\"text-align: justify;\">O Makefile usa a vari\u00e1vel NTFSLIB (linha 28) para referenciar a biblioteca &#8220;libntfs-3g.so&#8221;. Editei o conte\u00fado da vari\u00e1vel para corresponder a biblioteca existente no sistema (\/usr\/lib\/x86_64-linux-gnu\/libntfs-3g.so) conforme a imagem abaixo:<\/p>\n<div class=\"figura\"><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/1511391763.5.png\"\/><\/div>\n<p style=\"text-align: justify;\">Para complementar: h\u00e1 alguns anos, escrevi um artigo no Viva o Linux com instru\u00e7\u00f5es de compila\u00e7\u00e3o no CentOS (apesar do artigo referir-se ao pkg-config, \u00e9 poss\u00edvel aplicar a mesma l\u00f3gica para encontrar as depend\u00eancias), que possuem instru\u00e7\u00f5es parecidas com as disponibilizadas no artigo que voc\u00ea est\u00e1 lendo agora, por\u00e9m, com maiores detalhes e instru\u00e7\u00f5es voltadas ao CentOS:&nbsp;<a href=\"https:\/\/www.vivaolinux.com.br\/artigo\/Como-resolver-problemas-com-o-pkg-config\">Como resolver problemas com o pkg-config [Artigo]<\/a>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Agora, o UltraDefrag deve compilar normalmente, e voc\u00ea poder\u00e1 usar o comando &#8220;cp&#8221; para copiar o bin\u00e1rio &#8220;udefrag&#8221; para \/usr\/local\/bin.&nbsp;<\/p>\n<p style=\"text-align: justify;\">Voc\u00ea pode exibir a sintaxe do udefrag executando o comando sem argumentos no Terminal:<\/p>\n<div class=\"figura\"><a href=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/1511391763.6.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_1511391763.6.png\" border=\"0\"\/><\/a><\/div>\n<p style=\"text-align: justify;\">Basicamente, para iniciar a desfragmenta\u00e7\u00e3o, a parti\u00e7\u00e3o NTFS precisa estar desmontada. No Deepin, voc\u00ea pode desmontar a unidade atrav\u00e9s do explorador de arquivos ou no \u00edcone dispon\u00edvel na barra de tarefas. Voc\u00ea tamb\u00e9m pode desmontar a unidade atrav\u00e9s do Terminal:&nbsp;<\/p>\n<p><strong><i class=\"fa fa-usd\"><\/i>&nbsp;sudo fdisk -l<br \/>\n$ umount \/dev\/sdd1<\/strong>&nbsp;<\/p>\n<p>O primeiro comando lista os discos dispon\u00edveis, e o segundo comando desmonta a parti\u00e7\u00e3o.&nbsp;<\/p>\n<p>Agora, para executar o UltraDefrag, execute o comando:&nbsp;<\/p>\n<p><strong><i class=\"fa fa-usd\"><\/i>&nbsp;sudo ultradefrag \/dev\/sdd1<\/strong>&nbsp;<\/p>\n<p>Voc\u00ea pode usar o comando &#8220;sudo fdisk -l&#8221; para descobrir o nome da parti\u00e7\u00e3o (no caso, &#8220;sdd1&#8221;).<\/p>\n<div class=\"figura\"><a href=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/1511391763.8.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_1511391763.8.png\" border=\"0\"\/><\/a><\/div>\n<p style=\"text-align: justify;\">A desfragmenta\u00e7\u00e3o come\u00e7ar\u00e1. Em um HDD de 1 TB, a primeira desfragmenta\u00e7\u00e3o levou 3 horas.&nbsp;<\/p>\n<p style=\"text-align: justify;\"><strong>Conclus\u00e3o<\/strong><\/p>\n<p style=\"text-align: justify;\">Apesar da extens\u00e3o do artigo, a edi\u00e7\u00e3o manual dos arquivos \u00e9 necess\u00e1ria apenas se voc\u00ea encontrar erros durante a compila\u00e7\u00e3o e o patch n\u00e3o seja o suficiente.&nbsp;<\/p>\n<p style=\"text-align: justify;\">O UltraDefrag possui outros recursos interessantes, atuando n\u00e3o apenas como desfragmentador, mas tamb\u00e9m como otimizador.&nbsp;<\/p>\n<p style=\"text-align: justify;\">No in\u00edcio do disco r\u00edgido, as trilhas externas possuem maior taxa de transfer\u00eancias que trilhas internas. Alocar arquivos acessados frequentemente em trilhas externas aumenta a performance. [1] Al\u00e9m do UltraDefrag, o Auslogic Disk Defrag e MyDefrag para Windows tamb\u00e9m possuem esta funcionalidade. Por\u00e9m, esta otimiza\u00e7\u00e3o pode ser demorada e n\u00e3o \u00e9 realizada automaticamente, sendo necess\u00e1rio execut\u00e1-la explicitamente no UltraDefrag:&nbsp;<\/p>\n<p style=\"text-align: justify;\"><strong><i class=\"fa fa-usd\"><\/i>&nbsp;sudo udefrag -o \/dev\/sdd1<\/strong>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Outro comando que o &#8220;UltraDefrag for Linux&#8221; possui e que \u00e9, no m\u00ednimo, interessante, \u00e9 a exibi\u00e7\u00e3o de um mapa do estado dos setores, exibindo setores em uso, fragmentados etc. similar ao disponibilizado pela interface gr\u00e1fica do UltraDefrag para Windows:&nbsp;<\/p>\n<p><strong><i class=\"fa fa-usd\"><\/i>&nbsp;sudo udefrag \/dev\/sdd1 -m<\/strong>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><strong>Refer\u00eancias<\/strong><\/p>\n<p style=\"text-align: justify;\">1. The Ultimate Defragger &#8211; LaRud&#8217;s Place. Larud.net. 2012. Dispon\u00edvel em: &lt;<a href=\"http:\/\/www.larud.net\/subtext\/archive\/2007\/02\/07\/28.aspx\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">http:\/\/www.larud.net\/subtext\/archive\/2007\/02\/07\/28.aspx<\/a>&gt; Acesso em: 22 de novembro de 2017.&nbsp;<\/p>\n<p>2. How to Defragment Linux Systems. Make Tech Easier. 2015. Dispon\u00edvel em: &lt;<a href=\"https:\/\/www.maketecheasier.com\/defragment-linux\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/www.maketecheasier.com\/defragment-linux\/<\/a>&gt; Acesso em: 22 de novembro de 2017.&nbsp;<\/p>\n<p>3. Why Linux Doesn&#8217;t Need Defragmenting. How-To Geek. 2016. Dispon\u00edvel em: &lt;<a href=\"https:\/\/www.howtogeek.com\/115229\/htg-explains-why-linux-doesnt-need-defragmenting\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/www.howtogeek.com\/115229\/htg-explains-why-linux-doesnt-need-defragmenting\/<\/a>&gt; Acesso em: 22 de novembro de 2017.&nbsp;<\/p>\n<p>4. Defragging NTFS Partitions from Linux. Ask Ubuntu. Dispon\u00edvel em: &lt;<a href=\"https:\/\/askubuntu.com\/questions\/59007\/defragging-ntfs-partitions-from-linux\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/askubuntu.com\/questions\/59007\/defragging-ntfs-partitions-from-linux<\/a>&gt; Acesso em: 22 de novembro de 2017.&nbsp;<\/p>\n<p>5. Defragment a NTFS partition from LINUX. Arch Linux Forums. Dispon\u00edvel em: &lt;<a href=\"https:\/\/bbs.archlinux.org\/viewtopic.php?id=125529\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/bbs.archlinux.org\/viewtopic.php?id=125529<\/a>&gt; Acesso em: 22 de novembro de 2017.&nbsp;<\/p>\n<p>6. Advanced NTFS-3G Features. Jean-Pierre Andr\u00e9. 2017. Dispon\u00edvel em: &lt;<a href=\"http:\/\/jp-andre.pagesperso-orange.fr\/advanced-ntfs-3g.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">http:\/\/jp-andre.pagesperso-orange.fr\/advanced-ntfs-3g.html<\/a>&gt; Acesso em: 22 de novembro de 2017.&nbsp;<\/p>\n<p>7. Error compiling ultradefrag on Linux (Ubuntu). UltraDefrag (SourceForge). Dispon\u00edvel em: &lt;<a href=\"https:\/\/sourceforge.net\/p\/ultradefrag\/discussion\/709673\/thread\/380cf1e6\/?limit=25\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/sourceforge.net\/p\/ultradefrag\/discussion\/709673\/thread\/380cf1e6\/?limit=25<\/a>&gt; Acesso em: 22 de novembro de 2017.<\/p>\n<p>8. udefrag.patch. aur.git. Dispon\u00edvel em: &lt;<a href=\"https:\/\/aur.archlinux.org\/cgit\/aur.git\/tree\/udefrag.patch?h=udefrag\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/aur.archlinux.org\/cgit\/aur.git\/tree\/udefrag.patch?h=udefrag<\/a>&gt; Acesso em: 22 de novembro de 2017.<\/p>\n<p style=\"text-align: center;\">[<a href=\"javascript:history.go(-1)\">Voltar<\/a>]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>jaysponsored Neste artigo apresento o UltraDefrag, um defragmentador de parti\u00e7\u00f5es NTFS para GNU\/Linux. [ Hits:&nbsp;1.241&nbsp;] Por: Eduardo Mozart de Oliveira em 10\/12\/2017 | Blog:&nbsp;http:\/\/www.eduardomozartdeoliveira.wordpress.com\/ &nbsp; Introdu\u00e7\u00e3o Durante a manuten\u00e7\u00e3o de um notebook de cliente, ap\u00f3s realizar a manuten\u00e7\u00e3o preventiva (exclus\u00e3o de arquivos tempor\u00e1rios, atualiza\u00e7\u00e3o de programas), decidi realizar a desfragmenta\u00e7\u00e3o de disco. Apesar do Windows [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[],"class_list":["post-32726","post","type-post","status-publish","format-standard","hentry","category-informatica"],"_links":{"self":[{"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=\/wp\/v2\/posts\/32726","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=32726"}],"version-history":[{"count":7,"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=\/wp\/v2\/posts\/32726\/revisions"}],"predecessor-version":[{"id":36490,"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=\/wp\/v2\/posts\/32726\/revisions\/36490"}],"wp:attachment":[{"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=32726"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=32726"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=32726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}