透明地分割文件 | 硬链接到文件部分

透明地分割文件 | 硬链接到文件部分

我有一个非常大的文件(TrueCrypt 容器),我想将其保存在某个云中,但它对文件大小有限制,限制为 2 GB,而且它有一些同步目录的工具。这个想法是创建指向某个目录中文件部分的硬链接,这些部分将被同步。

例如:我们有文件A文件大小为 4 Kb;指向第一个 1Kb 部分A, 文件C指向第二个 1Kb 部分A, 文件指向第三个 1Kb 部分A, 文件指向最后 1Kb 部分A

因此问题是:

  1. 是否可以?
  2. 有哪些可能的替代方案?
  3. 如果完全不可能,那么我需要一个 TrueCrypt 模拟程序,允许拆分容器并实现全部TrueCrypt 的功能。

限制:

  • 操作系统:Gentoo Linux
  • 总尺寸增加是不允许
  • 删除原始文件是不允许
  • 文件系统:Ext4 | ReiserFS

答案1

您可以通过循环透明地访问文件的不同部分。下面是实现示例设置的脚本:

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

因此,初始文件的部分内容A可通过/dev/loopX文件访问:您写入的任何内容A都可以读取/dev/loopX,反之亦然。不过,我不确定您的云客户端是否可以使用特殊文件。

答案2

某些东西肯定可以与 ZFS 配合使用,也可能与和其他卷管理器配合lvm使用btrfs

您可以使用几个空文件(用 创建dd if=/dev/zero of=file01 bs=1M count=2000),然后使用这些文件作为卷管理器中的“硬盘”来形成 RAID0(条带化)。

对于btrfslvm,您必须将文件安装为循环设备(参见其他答案)。

然后卷管理器会将这些文件呈现为一个大硬盘。您可以将 truecrypt 容器放在这个新文件系统中。

在此处输入图片描述

对于使用 LVM,请参阅此处的教程:https://www.debian-administration.org/article/410/A_simple_introduction_to_working_with_LVM

对于 btrfs 来说,它可能是类似 mkfs.btrfs -d raid0 file1 file2 file3 这样的命令:https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices#Filesystem_creation

由于您使用的是 Gentoo,因此您必须选择使用 ZFSonLinux(内核模块,请勿使用 FUSE 实现!)。可以按如下方式完成:

# 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

我建议不要使用太多小文件,因为这会产生很大的开销。最好尝试一下如何使用 ZFS 以及云上传的运行情况。

相关内容