为了获得更好的性能,我将 WSL2 与 Linux 文件系统中的所有项目文件一起使用。
但是,我想将该文件夹连续备份到我的 Windows 中,以防虚拟机出现问题或者我只是想通过 Windows 直接访问该文件夹。
我尝试过使用rsync
,但每次运行时它都会遍历每个项目和目录,每次需要大约 20 - 30 分钟。项目目录有 2GB 大。
我是不是忽略了什么?如果我cp
用 cronjob 来做这件事会怎么样?
答案1
在 Windows 上尝试使用 rsync 而不是 rsync robocopy
。增量同步的速度要快得多,大约每秒 10k 个文件。示例大小约为 200MB。我估计你可以在 20 秒内完成
$logfile="$HOME\backup-wsl.log.txt"
$src="\\wsl.localhost\Debian\home\${env:Username}\sotion"
$dest=$(Join-Path ${env:OneDrive} "Documents\Sotion")
robocopy $src $dest /W:1 /R:0 /E /xd node_modules /NFL /NDL /LOG+:$logfile
您可以将其作为计划任务运行
$time = New-ScheduledTaskTrigger -Daily -At 2pm
$user = (whoami)
$action = New-ScheduledTaskAction -Execute "${env:ProgramFiles}\PowerShell\7\pwsh.exe" -Argument "-noninteractive -nologo -noprofile $HOME\scripts\backup-wsl\backup-wsl.ps1"
Register-ScheduledTask -TaskName "Backup-WSL" -Trigger $Time -User $User -Action $action
答案2
答案3
好吧,与 wsl1 相比,wsl2 的一大缺点是它的跨操作系统文件系统性能。因此,仍然有一些指南告诉你应该使用 wsl2 进行跨操作系统文件系统的工作。这就是为什么他们建议将使用 wsl2 所做的一切都保留在其文件系统中。我针对 Windows 文件系统执行的文件搜索命令测试,使用 powershell 和 git bash 花了 4 秒,从 wsl2 运行它花了 64 秒。
也许可以使用 wsl2 内部的 rsync 或 borg 作为备份解决方案(意外删除的文件等),然后执行完整的 wsl2 备份wsl --export DISTRO-NAME PATH\FILE-NAME.tar
以获得完整的映像备份