データ移行に伴う所有ユーザ、グループの移行

近頃コンテンツ移行の案件を担当することが多く、その中で所有ユーザ、グループ移行を
簡単に行う方法を発見したので共有したいと思います。

コンテンツを移行すると移行したファイルの
所有ユーザ、グループも移動先のサーバであわせる必要があると思います。

移行前、移行先でユーザのUIDやGIDが重複している場合は
対象のデータを移動してその後、所有ユーザ、グループの作成
移行前の権限にあわせるよう、chownコマンドで調整していましたが
以下の方法をとることで簡単に移行できることが分かりました。

▼結論
事前に移行前のユーザ、グループを移行先のサーバに作成しておくことで
UID、GIDが異なっていてもくユーザ名、グループ名が優先して適応される

▼検証内容
サーバA → サーバBへデータ移行
移行先サーバにファイルの所有ユーザ、グループが存在している状態と
存在していない状態でデータ移行を実施

▼作業内容

検証1 ユーザが重複して移行先に移行元のユーザが存在しない場合

アカウント作成

・サーバAにてユーザを作成
ID:A_3000
UID:3000
GID:3000

# groupadd -g 3000 A_3000
# useradd -u 3000 -g 3000 A_3000
# id A_3000
uid=3000(A_3000) gid=3000(A_3000) groups=3000(A_3000)

・サーバBにてユーザを作成
ID:B_3000
UID:3000
GID:3000

# groupadd -g 3000 B_3000
# useradd -u 3000 -g 3000 B_3000
# id B_3000
uid=3000(B_3000) gid=3000(B_3000) groups=3000(B_3000)

データ移行

・サーバA
#移行対象ファイルを準備

# ls -ld test
-rw-r--r-- 1 A_3000 A_3000 0 Jun 30 05:15 test

サーバA → サーバBへデータ移行

# rsync -avz --delete -e ssh /home/A_3000/rsync/* 10.0.10.23:/home/B_3000/rsync/

サーバBにて移行後のファイル確認

# ls -ld test
-rw-r--r-- 1 B_3000 B_3000 0 Jun 30 05:15 test

UID,GIDベースで移行が行われる。
サーバAではUID,GID3000はA_3000だったが
サーバBではUID,GID3000はB_3000なので
所有ユーザ、グループはB_3000になってしまう

しかし、事前にUID、GIDが異なっていても移行元の
ユーザを作成しておくことで所有ユーザは合わせることができる

検証2:UID,GIDは異なるが移行前と同名のユーザ、グループを作成し
再度データ移行を実施

#サーバBにてUID,GIDが異なるA_3000を作成

ID:A_3000
UID:4000
GID:4000

# groupadd -g 4000 A_3000
# useradd -u 4000 -g 4000 A_3000
# id A_3000
uid=4000(A_3000) gid=4000(A_3000) groups=4000(A_3000)

#再度データ移行を実施

rsync -avz --delete -e ssh /home/A_3000/rsync/* 10.0.10.23:/home/B_3000/rsync/

#所有者はどちらになるか確認を行う

# ls -ld test
-rw-r--r-- 1 A_3000 A_3000 0 Jun 30 05:15 test

▼まとめ
UID,GIDが異なっていても以下のように事前にユーザとグループを作成しておけば
簡単に所有ユーザ、グループをあわせることができます。

1.移行対象データの所有ユーザ、グループ確認
※treeコマンドなどが調査に便利です。

2.移行先にユーザを作成

3.該当データを移行

以上です。

投稿者プロフィール

miyaki
2014年12月入社

1月中にLPIC202とITIL Foundation取得を目標に学習中。
ハードスケジュールですが、がんばります。

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.

ABOUTこの記事をかいた人

2014年12月入社 1月中にLPIC202とITIL Foundation取得を目標に学習中。 ハードスケジュールですが、がんばります。