ネットワーク経由である nixos システムから別のシステムに /nix/store 全体をコピーする最良の方法

ネットワーク経由である nixos システムから別のシステムに /nix/store 全体をコピーする最良の方法

現在私は以下を使用しています:

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

N行の長さを長くしない合理的な数字はどこにありますかxargs

2台の実行しているコンピュータでこれを行うためのより慣用的な方法はありますか?

編集する:

上記の方法の利点:

  • 両端に存在するクロージャはコピーされません。これはまた、転送を中止してハッシュチェックオーバーヘッドを実行する前に中断した部分から続行できることを意味します。
  • --use-substituesこれにより、リモートコンピュータがコンピュータを送信する前に、まずバイナリキャッシュからダウンロードされます。これは、私のラップトップからドロップサーバーにファイルを送信する一般的なシナリオで役立ちます。リモートサーバーは通常、私のラップトップと比較してnixバイナリキャッシュの帯域幅が100倍高くなります。
  • nix-copy-closureコピーはSSH経由で行われるため、転送は暗号化されます。
  • 私が知っている限り、nix-copy-closureはnixストアで発生する他の作業を妨げてはいけません。

オンラインマニュアルページnix-copy-closure

答え1

私はnix-serveラップトップ間でパッケージを共有することを好む

% nix-env -i nix-serve
% nix-serve -p 8080

マシン間でnixパッケージを共有する方法の追加オプションについては、以下を参照してください。ニックスマニュアル

答え2

私は使用することを好みますscp。次のコマンドは、すべてをリモートシステムに再帰的にコピーします。

scp -r /nix/store/* your_user@host_name:/path/to/store/copy

-p元のファイルの変更時間、アクセス時間、およびモードを維持するには、このフラグを使用します。

scpのパフォーマンスを最適化し、スピードを上げるには、フグをスライサーとして使用し、次のように圧縮を有効にします。

scp -c blowfish -r -C /nix/store/* your_user@host_name:/path/to/store/copy

関連情報