在 WSL(Windows 10 的 Bash)上使用 rsync 进行增量备份

Kit*_*son 6 backup bash rsync windows-10 windows-subsystem-for-linux

我多年来一直是 Linux 的狂热用户,但后来切换到了 Windows。我一直错过的一件事是使用 rsync 制作增量快照以进行备份。你使用这样的命令:

rsync -aP --link-dest=PATHTO/$PREVIOUSBACKUP $SOURCE $CURRENTBACKUP
Run Code Online (Sandbox Code Playgroud)

它将创建您正在备份的文件夹当前状态的完整目录结构,使用硬链接来引用以前的备份。只有新的或更改的文件才会真正写入磁盘;所有其他的都保存为硬链接。这简直太棒了,我在 Windows 中找到的任何解决方案都无法做到这一点。(作为参考,我尝试过 Windows 文件历史记录,并为包括 Crashplan 和其他出色的Beyond Compare在内的商业软件付费。)

既然微软已经引入了 WSL,我已经尝试在 Windows 的 bash 中做到这一点。它似乎运行良好,但 Windows 错误地报告了磁盘上的大小,如下所示:

磁盘大小报告不正确

为了解释一下,snapshot-170831__07h08m48s我在一个快照中添加了一个大型视频文件,1.40 GB,复制需要几秒钟。在下一个快照中,snapshot-170831__07h09m09s文件没有花时间复制,这表明硬链接已正确创建并且我的硬盘驱动器上没有占用空间。

然而,我所有的 Windows 工具(Windows Explorer、Directory Opus、WinDirStat)都报告第二个快照文件夹在磁盘上占用了 1.40 GB。

那么第一个问题是为什么 Windows 会错误地报告这些硬链接的磁盘大小?

但更重要的问题是是否应该这样做:在 Windows 下使用 Linux 工具进行常规文件备份。我已经在 WSL 上看到,使用 Windows 工具修改 .bashrc 等文件会使文件在 WSL 中不可读。我想知道将我的备份委托给这样的工具是否风险太大,或者我是否冒着损坏文件系统和丢失重要文件的风险。

Kit*_*son 5

计算Windows中硬链接的大小

在 Windows 中很难计算硬链接文件的大小。一种允许您执行此操作的工具TreeSize Professional(不是免费的,默认情况下关闭硬链接分析)。我使用了这个工具,它正确地估计了硬链接文件的大小。

有关更深入的讨论,请参阅如何检查具有许多硬链接的 NTFS 目录中使用的实际大小?

这些文件真的有效吗?

至于问题的另一部分,在WSL上使用Windows下的Linux工具备份文件有风险吗?我决定通过将其中一个快照目录复制到单独的外部硬盘驱动器来简单地进行测试。复制文件或从外部驱动器读取文件没有问题。换句话说,硬链接的行为完全符合预期,并且文件正在运行。

长期数据稳定性

到最后一点,在 WSL 下使用 Linux 工具作为我的常规备份的一部分是否会破坏某些东西,例如损坏文件系统?我是否相信 WSL 不会严重破坏事物?任何事情都可能随时中断,因此我将确保这些快照目录定期复制到单独的驱动器。

  • 我已经使用这个系统两年了,硬链接没有问题。 (2认同)