Recentemente tive que transferir uma grande quantidade de arquivos para um colega onde era necessário manter as permissões e proprietários destes arquivos. O dispositivo para transporte do conteúdo foi um HD externo formatado em VFAT ou NTFS (já não me lembro), compatível com o Windows, no entanto sem recursos para armazenar as informações como desejava.

A solução apresentada aqui é o uso de uma arquivo como imagem de disco, onde se pode formatá-lo em jfs, ext3, … ou qualquer outro sistema de arquivos compatível com o unix, e assim armazená-lo em um disco VFAT/NTFS sem dificuldade.

Inicialmente crie uma imagem com o comando dd, conforme a linha abaixo:

dd if=/dev/zero of=/media/dispositivo_vfat/imagem.img bs=64k count=70k

71680+0 registros de entrada
71680+0 registros de saída
4697620480 bytes (4,7 GB) copiados, 82,154 s, 57,2 MB/s

os parâmetros passados foram:

  • if=/dev/zeroinput file será o dispositivo /dev/zero. Isto fará com que a imagem seja preenchida com zeros;
  • of=/media/dispositivo_vfat/imagem.imgoutput file será o arquivo imagem.img, a imagem de disco gerada. É aconselhável que a imagem seja criada diretamente no dispositivo de armazenamento, no caso o HD externo;
  • bs=64kblock size é o tamanho dos blocos na imagem, 64×1024 Bytes. Isto define o tamanho dos blocos lidos e escritos na imagem a cada requisição de leitura e escrita;
  • count=70k – com este último parâmetro fica determinado o tamanho da imagem, definindo o número de blocos que a imagem terá, vaja abaixo.

O tamanho da imagem será definido pelo tamanho dos blocos e o número deles:

  bs x count = 64k x 70k = 4.480MB
  ou
  bs x count = 64 x 1024 x 70 x 1024 = 4.697.620.480B = 4,7G

Praticamente o tamanho de um DVD convencional. A criação da imagem deve demorar pouco mais de 1 minuto, dependendo do dispositivo de armazenamento utilizado e de seu hardware.

Em seguida formate a partição com o sistema de arquivos de seu gosto com o comando mkfs. Neste texto vou usar o jfs:

/sbin/mkfs.jfs imagem.img

/sbin/mkfs.jfs version 1.1.15, 04-Mar-2011
Warning!  All data on device imagem.img will be lost!

Continue? (Y/N) y
   -

Format completed successfully.

4587520 kilobytes total disk space.

A montagem deve ser feita com o comando mount como em qualquer outro dispositivo:

mount imagem.img /mnt/hd

A imagem montada não poderá ser escrita por outros usuários que não o root. Caso deseja que algum usuário escreva nala, você pode criar um diretório na imagem montada e lhe transferir a propriedade da pasta. Algo como:

mkdir /mnt/hd/rudson
[prompt]chown rudson:users /mnt/hd/rudson/
[prompt]ls -la /mnt/hd/
total 8
drwxr-xr-x  3 root   root   8 Dec  4 13:13 .
drwxr-xr-x 13 root   root  96 Sep 11 20:42 ..
drwxr-xr-x  2 rudson users  1 Dec  4 13:13 rudson
chower

Após isto você pode gravar o que desejar em sua imagem, preservando as permissões.