使用具有提交功能的差异文件系统(又名覆盖、又名联合)

使用具有提交功能的差异文件系统(又名覆盖、又名联合)

我在两台电脑上工作,并将所有文件从主电脑同步到 USB 闪存。在我的第二台电脑中,我将 USB 闪存安装到与在主电脑上相同的路径来处理文件。

现在,为了性能和闪存寿命,我需要使用任何类型的差异,又名覆盖,又名联盟,文件系统(如 unionfs 或 aufs),让我将 USB 闪存盘用作只读和写入更改到临时目录,最后允许我将更改立即写回 USB 闪存。

有什么帮助吗?有希望吗?

更新:

感谢您的所有回答和评论。我对 Linux 感兴趣,我的问题是:上述任何文件系统是否允许在需要时将写入提交到较低的文件系统?如果是,怎么办?

答案1

有一个名为“snapshot-merge”的新 dm 目标。

如果将 USB 闪存格式化为 LVM 物理卷,然后将所需的文件系统置于逻辑卷中,则可以

  1. 激活包含 USB 闪存的卷组和本地磁盘上的另一个 LVM 物理卷。
  2. 在本地磁盘上创建逻辑卷的快照。
  3. 装载快照,用它做任何你想做的事情,然后卸载它。
  4. 将快照合并回原点。

这应该接近您所要求的效果,尽管它需要临时块设备而不是临时目录。


根据需要替换 {大括号} 中包含的部分。

# USB 驱动器的初始设置。
pvcreate /dev/{USB}
vgcreate {可移动} /dev/{USB}
lvcreate -n {基础} -l 100%PVS {可移动} /dev/{USB}
mkfs -t {fs} {...} /dev/mapper/{可移动}-{基础}
# 暂存设备的初始设置。
pvcreate /dev/{SCRATCH}
# 安装设备。
vgextend {可移动} /dev/{SCRATCH}
lvcreate -s -n {snap} -l 100%ORIGIN /dev/mapper/{可移动}-{base} /dev/{SCRATCH}
mount -t {fs} -o {...} /dev/mapper/{可移动}-{snap} {安装点}
# 卸载设备。
卸载{安装点}
lvconvert --merge /dev/mapper/{可移动}-{snap}
vgreduce {可移动} /dev/{SCRATCH}
vgchange -an {可移除}

未经测试,但所有 LVM 命令都有联机帮助页,因此您应该能够从这里弄清楚问题。vgscan如果插入 USB 驱动器时未自动检测到卷组,则可能需要在某处进行调用。

答案2

这似乎是一个用例dm-用户空间+cowd:本质上,您将设置一个由 COW(写时复制)文件和与 USB 记忆棒对应的块设备组成的 DM 目标(块设备),并使用它来托管文件系统。所有更新都将写入 COW 文件;不在 COW 文件中的读取将从 USB 记忆棒中获取;卸载文件系统后,将 COW 文件中的修改合并到 USB 记忆棒中。

不幸的是,它是 Linux 特定的并且发展似乎在2007年就停止了。

如果您想要在两台(或更多)PC 之间同步文件,我可以建议您将您的主目录(或相关文件夹)置于版本控制系统下? 通常的工作循环是这样的:

  1. 插入 U 盘;
  2. 通过从 USB 记忆棒中提取最新更改来更新主目录存储库;
  3. 做你的事;
  4. 将更改提交到版本控制系统并更新 USB 记忆棒上的存储库。

这只是对 USB 记忆棒的一次写入。 (虽然我同意其他人所说的,但当你的 USB 记忆棒磨损时,你可能会购买另一个更大的。)

答案3

我建议您使用文件同步工具。文件系统级解决您的问题可能不可行。查看一致导管。据我了解,您的主计算机中已经有文件的副本。这是我使用的工作流程:

  1. 在 PC_1 上工作和更改文件。完成后将它们同步到您的 USB 记忆棒。

  2. 将 USB 记忆棒连接到您的 PC_2 并将内容同步到您的 PC_2。

  3. 在 PC_2 上工作和更改文件。完成后将它们同步到您的 USB 记忆棒。

同步会非常快,因为只有更改的文件会被重写。您还可以编写安装和卸载触发器来自动进行同步。

对于文件系统解决方案,您可以寻找一些具有 Copy On Write 属性的 FS,例如 btrfs。拍摄快照并同步它们可能会更快、更有效。但我还没有找到任何实现。此外,在文件系统级别上工作并不会让您轻松解决冲突。

答案4

我假设这是针对 Unix 风格的操作系统,但如果您对基于 Windows 的解决方案感兴趣,我使用了 Microsoft Mesh,这是一个免费工具,用于在一系列网络上同步各种文件和文件夹。电脑。另一个很酷的功能是能够通过网络界面访问这个“云”(他们的术语,不是我的术语)。当您在未同步的远程计算机上,但您想要访问/下载某些文件时,它会派上用场。

相关内容