Kopia

1 Kopia

  • KopiaUI 程序所在目录新建 repositories,实现 portable更详细的描述

  • VSS

    • 先在 repository.configenableActions 改为 true,然后用命令配置全局 profile(因为 gui 目前有 bug)

      1
      2
      3
      4
      5
      # 命令的前部分从 GUI 里面复制
      XXX\kopia.exe --config-file=XXX\repositories\repository.config policy set --global --before-snapshot-root-action "powershell D:\soft\KopiaUI\before.ps1"
      XXX\kopia.exe --config-file=XXX\repositories\repository.config policy set --global --after-snapshot-root-action "powershell D:\soft\KopiaUI\after.ps1"
      # 要清空配置传空字符串 ""
      XXX\kopia.exe --config-file=XXX\repositories\repository.config policy set --global --after-snapshot-root-action ""
    • 管理员 powershell,Set-ExecutionPolicy Unrestricted

    • 修改 ps1 关联,用 powershell 运行

    • before 脚本里有调试信息,放开后可用来确认脚本执行和备份路径

    • 查看和删除 vss,防止 after 脚本没执行,vssadmin list shadowsvssadmin delete shadows

  • 常用命令(软件的路径区分大小写,尽管 Windows 不区分)

    1
    2
    3
    4
    repository status
    policy ls
    policy show D:\
    policy show --global
  • GUI 设置全局 policy,备份 10 个,其它为 0,忽略相同备份,zstd 压缩

  • .kopiaignore 文件,路径用 / 分隔,且相对路径以 / 起始,如 /pagefile.sys/Windows/Temp/

    • 系统盘排除内容可参考 dism++ 配置
    • ignore 内容少,直接保存到 global 中配置 Ignore Files 列表,不用 .kopiaignore
    • snapshot estimate D:\ 确认 ignore 生效
  • 创建 snapshot create D:\,由于只备份一个路径(D:\),所以用 global profile 即可

  • 确认备份过程是否存在错误,snapshot lsshow 前一个命令的 ID参考

  • 以后,定期确认备份文件是否正确,snap verify --verify-files-percent 1参考

  • 删除的 snapshot 对应的文件会 延迟 24h 左右删除

  • diff OLDID NEWID 显示 snap 区别

  • 可手动 snap 然后 pin,pin 的 snap 不计入 Latest Snapshots 的设置中

  • sync-to 可以暂停后恢复,而直接推送到云端,即 snap create 则不能

    • 推送到云端, repository sync-to rclone --remote-path=alist_local:/阿里云盘/d_backup --rclone-exe=D:\soft\KopiaUI\rclone-alist\rclone.exe --delete --dry-run,实际用去掉 --dry-run参考
    • 对阿里云盘,初始版本用官方客户端上传更快,sync-to 速度要慢一倍
    • 对 Onedrive,rclone + alist 的上传速度要好于只用 rclone。同样初始版本选择官方客户端,同步盘手动上传技巧
      • 设置 onedrive 同步路径为 NOBACK 文件夹里
      • mklink /J "F:\FNOBACK\OneDrive - MSFT\g_backup" "F:\g_backup" 开启上传
      • 上传后,客户端退出 Onedrive 账户,删除 OneDrive 文件夹
  • 开机同步、关机备份脚本,同步可以并行,备份不能,会出错。此外备份如果添加到组策略中,会要求输入密码

    • 为了将关机的快捷方式固定到任务栏,需要加 cmd /c,如 C:\Windows\System32\cmd.exe /C D:\shutdown_backup.bat
  • 其它

    • Kopia 类似工具不适合备份系统,因为即使用了 VSS,甚至用 SYSTEM 用户权限执行,也会出现某些文件没权限读取,比如某些文件只能当前用户可读
    • SYSTEM 用户执行 使用 PSTools,管理员 powershell,执行 .\PsExec.exe -sid powershell,获得 SYSTEM 的 shell
      • 可在任务管理器,详细信息中确认进程的用户
    • 如要用 Kopia 备份 linux,我认为可尝试 restic 相关问答

1.1 Alist Rclone

  • kopia 支持 webdav 但效果不好,所以再套一层 rclone 来上传备份
  • alist
    • alist start 启动,注意关闭命令窗口会自动退出
    • 配置文件 data\config.json 要改成高位端口,否则起不来,闪退
    • 防火墙要放行,应该自动弹出确认
    • alist 也可装到 OpenWrt 上,需要添加新的源,ipk 安装,参考
    • alist 添加 onedrive 文档
  • rclone
    • rclone.conf 放在同一文件夹,rclone 会 自动使用,也可手动指定 ·--config=CONFIG_FILE
    • rclone config 进行配置向导
    • 使用 remote path 来指定操作对象,remote 是 config 中配置的,path 是里面的路径
      • 如对于 alist 的阿里云盘备份路径为 alist_local:/阿里云盘/d_backup
      • 列出目录rclone ls remote:path # lists a remote
      • 挂载 rclone.exe --cache-dir=rc_cache --temp-dir=rc_temp mount alist_local: Y: --vfs-cache-mode full
      • 这里把 cache 和 temp 指向当前目录,用 rclone.exe config paths 确认当前设置的路径
      • 其它命令见 文档
  • OneDrive E5
    • 参考 科技lion 申请
    • docker 刷新
    • docker 开放的是不安全的 http,因此只监听在本地,用 ssh 做中转,类似 ssh -L 功能,参考

1.2 出错

  • 如果错误无法排除,从云端反向同步到本地
    • kopia 新建个临时配置连接到云端,使用 alist_local,假设为 repository-1691977414632.config
    • 同步 D:\soft\KopiaUI\resources\server\kopia.exe --config-file=D:\soft\KopiaUI\repositories\repository-1691977414632.config repository sync-to filesystem --path E:\temp --parallel=8