41 lines
575 B
Bash
41 lines
575 B
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
target_host=$1
|
||
|
shift
|
||
|
|
||
|
paths=$(nix-store -q --requisites "$@")
|
||
|
needed=""
|
||
|
|
||
|
coproc remote {
|
||
|
ssh -C ${target_host}
|
||
|
}
|
||
|
|
||
|
exec 10>&${remote[1]}
|
||
|
|
||
|
for p in $paths; do
|
||
|
echo "test -e $p && echo skip || echo $p" >&10
|
||
|
read n <&${remote[0]}
|
||
|
case $n in
|
||
|
skip)
|
||
|
:
|
||
|
;;
|
||
|
*)
|
||
|
needed="${needed} $n"
|
||
|
echo Will copy $n
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
if test -z "$needed" ; then
|
||
|
echo Nothing to copy
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
echo "cd / && cpio -v -i >/dev/console" >&10
|
||
|
|
||
|
find $needed | cpio -H newc -o >&10
|
||
|
|
||
|
echo "date" >&10
|
||
|
read n <&${remote[0]}
|
||
|
echo $n
|