네트워크를 통해 한 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?

두 대의 실행 중인 컴퓨터에서 이 작업을 수행하는 더 관용적인 방법이 있습니까?

편집하다:

위 방법의 장점:

  • 양쪽 끝에 존재하는 클로저는 복사되지 않습니다. 이는 또한 전송을 중지하고 해시 검사 오버헤드를 수행하기 전에 중단한 부분부터 계속할 수 있음을 의미합니다.
  • --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

관련 정보