/home/userA/transfer と /home/userB/transfer を同期する方法は?

/home/userA/transfer と /home/userB/transfer を同期する方法は?

/home/userA/transfer と /home/userB/transfer を同期する方法は?

シンボリックリンクを作成しようとしています。 ln -s /home/userA/transfe /home/userB/transfer

シンボリックリンクが機能しません。

lrwxrwxrwx   1 centos  centos   40 Feb 12 19:55 transfer -> /home/userB/transfer

ベストアンサー1

ユーザーのホームディレクトリは、他のユーザーのアクセスには難しいです。ホームディレクトリの下のすべてのエントリは、そのホームディレクトリのユーザーが所有する必要があります。権限の問題に直面する可能性があるため、シンボリックリンクは間違いなく間違った方法です。リアルタイム同期を必要とせず、たまに同期する必要がある場合は、両方のディレクトリにアクセスできる必要があり、最も可能性の高いオプションはスーパーユーザーになることです。その後、同期を実行して自然所有権を復元できます。取ることができるパスは次のとおりです。

id userB  # figure out the group of the userB, suppos the output is groupB
sudo -i   # become a superuser
rsync  -aP /home/userA/transfer/ /home/userB/transfer/ #sync using rsync
chown -R userB.groupB /home/userB/transfer # restore ownership

これがうまくいけば、それを非対話型の1行コマンドで最適化できます。

sudo bash -c "rsync -a /home/userA/transfer/ /home/userB/transfer/ && chown -R userB.$(id -gn userB) /home/userB/transfer/"

修正する一例:

→ sudo ls -al /home/joker/trans/
total 8
drwxrwxr-x. 2 joker joker 4096 Feb 12 20:44 .
drwx------. 9 joker joker 4096 Feb 12 20:33 ..
-rw-rw-r--. 1 joker joker    0 Feb 12 20:33 file1
-rw-rw-r--. 1 joker joker    0 Feb 12 20:33 file2

→ sudo ls -al /home/vagrant/trans/
total 8
drwxrwxr-x. 2 vagrant vagrant 4096 Feb 12 20:33 .
drwx------. 4 vagrant vagrant 4096 Feb 12 20:34 ..
-rw-rw-r--. 1 vagrant vagrant    0 Feb 12 20:33 file1

→ sudo bash -c "rsync -aP /home/joker/trans/ /home/vagrant/trans/ && chown -R vagrant.$(id -gn vagrant) /home/vagrant/trans"
sending incremental file list
./
file2
              0 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/3)

ここでは、ユーザーjokerのtransサブディレクトリがユーザーvagrantと同期しています。ユーザーと一緒に再現し、違いを確認してください。 (ジョーカーはsudo権限を持っています)

(*) rsync コマンドの末尾のスラッシュは重要です。

おすすめ記事