web-dev-qa-db-ja.com

Linuxのあるユーザーホームディレクトリから別のユーザーホームディレクトリにファイルをコピーする

2人のLinuxユーザー(rootではない)のログインとパスワードを持っています。たとえば、user1とuser2です。

1つのシェルスクリプトを使用して/ home/user1/folder1から/ home/user2/folder2にファイルをコピーする方法(ユーザーを手動で切り替えることなく、1つのスクリプトを起動します) 。

Sudoコマンドを使用する必要があると思いますが、正確にはわかりませんでした。

8
kirpi4

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が存在する必要はありません。

4
Rolf of Saxony

これだけ:

cp -r /home/user1/folder1/ /home/user2/folder2

-p(つまりcp -pr)を追加すると、ファイルの属性(モード、所有権、タイムスタンプ)が保持されます。

隠しファイルをコピーするには、-rも必要です。詳細については、 cpを使用してコピーし、隠しファイルと隠しディレクトリとその内容を含める方法は? を参照してください。

3
fedorqui
(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 -)
1
Alfe

このコマンドを使用する必要があると思います

Sudo -u username /path1/file1 /path2/file2

このコマンドを使用すると、任意のファイルパスから特定のユーザーとしてコンテンツをコピーできます。

PS:親ディレクトリは、少なくともそこからファイルをコピーするために、リスト可能である必要があります。

0
CR7