How-To :: Convertendo Sistemas de Arquivos


Nesse artigo, descrevo um roteiro para efetuar conversões entre os sistemas de arquivos existentes no Linux.

Autor: Fábio Farias

O título deste artigo é “Convertendo Sistemas de Arquivos”. No entanto, poderia ser também “Brincando com Sistemas de Arquivos” pois foi justamente isso que fiquei fazendo após descobrir a existência de um programa chamado fstransform, cuja finalidade é converter um sistema de arquivo em outro sem a necessidade de formatação.

ALERTA

Desde já quero esclarecer que todos os passos realizados aqui foram efetuados em uma máquina virtual e que os arquivos contidos nesse HD Virtual não eram importantes. Apesar que em todos os testes os resultados foram positivos, sem nenhuma perda de dados, eu recomendo fortemente a realização de um backup de todos os arquivos e sistemas envolvidos, caso o leitor deseje efetuar essas conversões também. Recomendo ainda que, assim como fiz, efetue esses testes primeiro em um ambiente virtualizado para não colocar em risco seus arquivos e sistemas. Não me responsabilizo por qualquer perda de dado que venha a ocorrer com o uso desta ferramenta.

Introdução

A fonte de onde extraí boa parte das informações referentes a esse artigo é o link abaixo:

http://www.linux-magazine.com/Online/Features/Converting-Filesystems-with-Fstransform

A tradução é livre e acrescentei algumas informações a mais baseadas na minha experiência de uso do programa.

Em meus testes, nenhum arquivo foi perdido. Todos eles abriram normalmente. No entanto, reforço novamente. Não faça nada sem backup.

No texto original, citado no link acima, o autor informa que somente são possíveis conversões entre os sistemas de arquivos tradicionais do Linux: Ext2, Ext3, Ext4, JFS, XFS, ReiserFS. De Ext4 para NTFS por exemplo ele afirma que não é possível. Mas não foi bem isso que ocorreu nos meus testes.

Eu consegui efetuar as conversões entre os sistemas de arquivos tradicionais e até mesmo para sistemas de arquivos menos conhecidos como o F2FS e o Btrfs. E até mesmo para o NTFS e deste de volta para o EXT4. Tudo sem nenhuma corrupção de arquivos. Claro que nesses casos tive que usar a opção –force-untested-file-systems, o que não é recomendável em um ambiente de produção. Mas como estava em um ambiente virtualizado, resolvi testar. E toda a conversão foi efetuada com sucesso. Sem perda de arquivos.

Para conversões entre os sistemas de arquivos Ext (2,3 e 4) e destes para o Btrfs eu recomendo seguir os procedimentos oficiais existentes. Esses no entanto, não serão abordados aqui.

De acordo com o autor, o espaço livre mínimo necessário é 5%. 10% para o caso do XFS. Por segurança, eu recomendo 10% para todos os casos.

É necessários que os pacotes de suporte aos sistemas de arquivos com os quais pretende-se trabalhar as conversões estejam instalados. Os principais são: e2fsprogs, jfsutils, f2fs-tools, ntfs-3g, ntfsprogs, reiserfs, reiser4progs, xfsprogs, xfsdump, btrfsprogs.

Dependendo da quantidade de arquivos, a conversão pode demorar e não pode ser interrompida sob risco de perda de dados.

Eu não realizei conversões de partições raiz. Essa conversão envolveria mudanças no processo de inicialização (boot) do sistema envolvido. Eu fiquei apenas em uma partição extra.

Para efetuar as conversões siga os passos abaixo:

Instalando o fstransform

No openSUSE Leap 42.2, atual versão, eu instalei adicionando o repositório

http://download.opensuse.org/repositories/filesystems/openSUSE_Leap_42.2/

E depois instalando com o comando

# zypper in fstransform

Em outras distros eu não testei. Mas o autor do artigo citado afirma que basta fazer o download do arquivo no link

http://sourceforge.net/projects/fstransform/

E, tendo o compilador C++ instalado, basta executar os tradicionais comandos:

$ ./configure
$ make
$ sudo make install

Convertendo um sistema de arquivos

No meu primeiro exemplo eu converti uma partição Ext4 em JFS. As partições precisam estar desmontadas. Para a conversão deste exemplo execute no terminal, logado como root, o comando:

# fstransform /dev/sda3 jfs

Durante a conversão será solicitado em um determinado momento que se pressione C para continuar e depois ENTER para confirmar.

No meu exemplo, a partição a ser convertida é a /dev/sda3. Substitua essa informação  conforme o seu caso.

O resultado podemos ver nas imagens abaixo, ao estilo antes e depois. Eu usei o GParted para visualizar as conversões pois o mesmo identifica cada sistema de arquivo com uma cor. Isso destaca bem as operações de conversões.

Antes da conversão, partição /dev/sda3 em Ext41-inicio-com-ext4

Depois da conversão, partição /dev/sda3 em JFS6-conversaopara-jfs

Basta montar a partição agora e conferir a integridade dos arquivos. Aqui, todos os arquivos estavam intactos.

Outras conversões

Opções seguras

De JFS para XFS9-xfs

De XFS para Ext410-ext4

Opções inseguras

Nos testes que fiz, usei o comando abaixo para converter uma partição Ext4 em Btrfs.

# fstransform /dev/sda3 btrfs --force-untested-file-systems

O mesmo comando foi usado para converter Ext4 em NTFS e este em Ext4 novamente. Nesse caso específico, de Ext4 para Btrfs, recomendo novamente usar o método oficial de conversão destes sistemas de arquivos.

De Ext4 para Btrfs12-btrfs

Conclusão

O método mais seguro para trocar um sistema de arquivos continua sendo ainda o tradicional backup dos arquivos em outro local, formatação da partição e o posterior retorno dos arquivos no local de origem. No entanto, saber da existência de um programa como esse pode ajudar em alguns casos específicos. Basta ter um bom backup e tempo de sobra.

How-To :: Convertendo Sistemas de Arquivos

4 comentários sobre “How-To :: Convertendo Sistemas de Arquivos

  1. Excelente e interessante conteúdo meu caro! eu não sabia que era possível fazer isto, obrigado por compartilhar conosco.

    * Eu já havia lido o post por completo, não postei antes devido a falta de tempo, um abraço!

    Curtir

  2. Denis Física disse:

    Meu computador é dual boot (Windows e Linux) e depois de um tempo que eu estou navegando no Ubuntu dá um erro que a partição fica somente como leitura, e eu não consigo salvar nada. Já segui muitas instruções na internet e nada. Eu formatei o disco rígido para NTFS para instalar o Windows, enquanto que o Ubuntu é EXT4. Vou tentar mudar o sistema de arquivos do Ubuntu para NTFS para ver se resolve. Valeu

    Curtir

    1. Se você mudar o sistema de arquivos do Ubuntu para NTFS ele ficará inutilizável. Não recomendo esse procedimento no seu caso. Os testes que fiz no artigo são de partições onde não estão instalados sistemas operacionais. No seu caso, esse artigo não resolve.

      Curtir

Deixe um comentário