Divide o arquivo de forma transparente | Hardlink para parte do arquivo

0

Eu tenho um arquivo realmente grande (contêiner TrueCrypt) e eu quero salvá-lo em alguma nuvem, mas tem restrição no tamanho do arquivo, limitando a 2 Gb, também tem alguma ferramenta para sincronizar o diretório. A ideia é criar hardlinks para partes de arquivos em algum diretório, que seria sincronizado.

Por exemplo: temos o arquivo A com tamanho de 4 Kb; o arquivo B aponta para a primeira parte de 1Kb de A , o arquivo C aponta para a segunda parte de 1Kb de A , arquivo < em> D aponta para a terceira parte de 1Kb de A , o arquivo E aponta para a última parte de 1Kb de A .

Então as perguntas são:

  1. É possível?
  2. Quais são as alternativas possíveis?
  3. Se não for possível, então preciso do TrueCrypt analógico que permita contêineres divididos e implemente todos os recursos do TrueCrypt.

Restrições:

  • SO: Gentoo Linux
  • O aumento total do tamanho é não permitido
  • A remoção do arquivo original não é permitida
  • FS: Ext4 | ReiserFS
por smt 10.04.2015 / 12:43

2 respostas

0

Você pode acessar de forma transparente as diferentes partes do arquivo através de loops. Abaixo está um script que implementa sua configuração de exemplo:

dd if=/dev/zero of=A count=8
losetup --offset 0    --sizelimit 1024 /dev/loop0 A
losetup --offset 1024 --sizelimit 1024 /dev/loop1 A
losetup --offset 2048 --sizelimit 1024 /dev/loop2 A
losetup --offset 3072 --sizelimit 1024 /dev/loop3 A

Como resultado, partes do arquivo inicial A estão acessíveis via /dev/loopX files: o que você escreve em A pode ser lido em /dev/loopX e vice-versa. Não tenho certeza se o seu cliente na nuvem funcionará com arquivos especiais.

    
por 10.04.2015 / 13:20
0

Algo que funcione com o ZFS com certeza, provavelmente também com lvm , btrfs e outros gerenciadores de volume:

Você pode usar vários arquivos vazios (criados com dd if=/dev/zero of=file01 bs=1M count=2000 ) e usar esses arquivos como "discos rígidos" no gerenciador de volume para formar um RAID0 (distribuição).

Para btrfs e lvm , você precisa montar seus arquivos como dispositivos de loop (veja outras respostas).

Em seguida, o gerenciador de volume apresentará esses arquivos como um grande disco rígido. Você poderia colocar seu container TrueCrypt dentro deste novo sistema de arquivos.

ParausaroLVM,umtutorialaqui: link

Para o btrfs, provavelmente seria um comando como %código% veja: link

Como você está usando o Gentoo, você tem que usar o ZFSonLinux (o módulo do kernel, NÃO use a implementação do FUSE!). Isso poderia ser feito da seguinte forma:

# create 10 files of 1GB each
for i in {0..9} ; do
    dd bs=1M count=1000 if=/dev/zero of=part_${i}
done

# create a zpool (sth like a virtual harddrive) from the 10 files
zpool create MyPoolName /absolute/path/to/part_*

# this will also create a new file system, that is mounted at /MyPoolName
# can be seen with
df -h

# Now, you can put your Truecrypt container in there. If you want to upload/download the files, you should "export" the zpool first.
zpool export MyPoolName

# If all the synchronization is done, you can import the pool with
zpool import MyPoolName -d /absolute/path/to/folder/that/contains/parts

Eu recomendo não usar muitos arquivos pequenos, pois haverá uma grande sobrecarga envolvida. É melhor experimentar um pouco como usar o ZFS e como tudo funciona com o upload da nuvem.

    
por 10.04.2015 / 14:06