2人のLinuxユーザー(rootではない)のログインとパスワードを持っています。たとえば、user1とuser2です。
1つのシェルスクリプトを使用して/ home/user1/folder1から/ home/user2/folder2にファイルをコピーする方法(ユーザーを手動で切り替えることなく、1つのスクリプトを起動します) 。
Sudoコマンドを使用する必要があると思いますが、正確にはわかりませんでした。
Sudo cp -a/home/user1/folder1/home/user2/folder2
Sudo chown -R user2:user2/home/user2/folder2
cp-aアーカイブ
chown-Rは再帰的に動作します
ファイルをコピーしてから、user2にアクセス許可を与えます。
ドットファイルを含むすべてのファイル、すべてのサブディレクトリをコピーし、コマンドの前にディレクトリ/ home/user2/folder2が存在する必要はありません。
これだけ:
cp -r /home/user1/folder1/ /home/user2/folder2
-p
(つまりcp -pr
)を追加すると、ファイルの属性(モード、所有権、タイムスタンプ)が保持されます。
隠しファイルをコピーするには、-r
も必要です。詳細については、 cpを使用してコピーし、隠しファイルと隠しディレクトリとその内容を含める方法は? を参照してください。
(shopt -s dotglob; cp -a /home/user1/folder1/* /home/user2/folder2/)
標準のcp
を使用して、すべてのファイル(ドットで始まるファイルを含む)をコピーします。 /folder2/
が存在する必要があります。存在しないと、結果が厄介になる可能性があります。
多くの場合、tar
のようなパッキングツールを使用することも役立ちます。
cd /home/user1/folder1
tar cf - . | (cd /home/user2/folder2; tar xf -)
このコマンドを使用する必要があると思います
Sudo -u username /path1/file1 /path2/file2
このコマンドを使用すると、任意のファイルパスから特定のユーザーとしてコンテンツをコピーできます。
PS:親ディレクトリは、少なくともそこからファイルをコピーするために、リスト可能である必要があります。