通过网络将完整的 /nix/store 从一台 nixos 机器复制到另一台机器的最佳方法

Dav*_*rak 8 nixos nix

目前我使用:

find /nix/store/* -maxdepth 1 | xargs -L <N> nix-copy-closure --sign --gzip --use-substitutes --to <remote machine>

哪里N有一些合理的数字,不会使xargs.

在两台跑步机上执行此操作是否有更惯用的方法?

编辑:

上述方法的优点:

  • 不复制两端存在的闭包。这也意味着您可以停止传输并从中断的地方继续进行,然后进行一些哈希检查开销
  • --use-substitues这将使远程机器首先从二进制缓存下载,然后再发送机器。这在将文件从我的笔记本电脑发送到删除服务器的常见情况下非常有用,与我的笔记本电脑相比,远程服务器的带宽通常是 nix 二进制缓存的 100 倍
  • nix-copy-closure 通过 ssh 复制,以便对传输进行加密。
  • nix-copy-closure,据我所知,不应干扰 nix 存储上发生的任何其他操作。

在线手册页 nix-copy-closure

Rok*_*bas 8

我更喜欢用来nix-serve在笔记本电脑之间共享包

% nix-env -i nix-serve
% nix-serve -p 8080
Run Code Online (Sandbox Code Playgroud)

更多选项如何在nix 手册中描述的机器之间共享 nix 包


krt*_*krt 2

我更喜欢使用scp. 以下命令会将所有内容递归复制到远程计算机:

scp -r /nix/store/* your_user@host_name:/path/to/store/copy
Run Code Online (Sandbox Code Playgroud)

如果要保留原始文件的修改时间、访问时间和模式,请使用该-p标志。

要优化 scp 性能并提高速度,请使用河豚作为切片机并启用压缩,如下所示:

scp -c blowfish -r -C /nix/store/* your_user@host_name:/path/to/store/copy
Run Code Online (Sandbox Code Playgroud)