これはSingularityだけでなく、Linux全体の複製に関する質問です。リモートディレクトリからローカルディレクトリに再帰的にコピーしようとしています。私の定義ファイルには次のものがあります。
scp -r $USER@$HOST_MACHINE:/a/b/c ${SINGULARITY_ROOTFS}/a/b
問題は、アクセスabc
にグループが必要であることです。グループがありますが、リモートシステムのアクティブグループにはありません。いくつかのバリエーションを試しましたが、すべて失敗しました。たとえば、/a/b/c
$USER@$HOST_MACHINE
sg
sg abc scp -r $USER@$HOST_MACHINE:/a/b/c ${SINGULARITY_ROOTFS}/a/b
ローカルではなくローカルabc
しかないので失敗します。$HOST_MACHINE
を使用してみましssh
たが、リモートディレクトリではなくローカルディレクトリにコピーする必要があります。
rsync と scp のドキュメントを見ていますが、コピーする前にリモート コンピュータのアクティブ グループにグループを追加する方法が見つかりません。基本的に私は次の方法を探しています。
scp -active_group abc -r $USER@$HOST_MACHINE:/a/b/c ${SINGULARITY_ROOTFS}/a/b
特別なグループを使用してリモートからローカルにファイルをコピーする方法は?
既定では、次の手順を実行できます。
- リモートコンピュータにSSHで接続します。
- コマンドをクリーンアップまたは使用します
sg
。 - リモートからローカルにコピーします。
- リモートシステムをシャットダウンします。
ただし、スクリプトは自動的に実行する必要があるため中断されます。私もこれを行う方法があると思いますが、私はそれを逃しています。
答え1
ローカルUID / GID名がリモートUID / GID名と一致するという保証はありません。
ただし、UID / GID値はマシン間転送に重要です。保証される唯一のUID値はルート(UID = 0)です。
ワンタイムコピーの場合、リモートシステムにグループを作成するにはrootアクセス権が必要です。だからあなたはできます -注意して- 新しいグループを作成するには、rootでスクリプトを実行します。
両方のシステムでGIDが一致するグループを作成する必要があります。 [グループ名はユーザーが選択]。おそらく両方のシステムが同じUIDセットを持つ必要があります。 [ユーザー名はユーザーが選択]。
理想的には、「単純化のために」グループ名とユーザー名は両方のコンピューターで同じでなければなりません。
/etc/group
'groupname':'x':GID:user1,user2,... をリストする区切りファイルです。
/etc/passwd
よく知られているユーザー名、UIDへの相互参照を提供します。
しかし、これは非常に危険度の高いプロセスのようです。体験版モードで実行し、結果を再確認しても同様です。
答え2
set GID bit
可能であれば、リモートシステムでこれを設定できます。
$chmod g+s abc -R /a/b/c
(または/a
必要に応じて - で始まります)。これはワンタイム構成の変更です。
したがって、リモートシステムで実行されるすべての操作はabc
デフォルトグループに設定され、scp
そのまま正常に動作します。