web-dev-qa-db-ja.com

同じ権限で1つのサーバーから別のサーバーにファイルをコピーする

新しいサーバーに移行していて、いくつかのWebサイトを移動する必要がありますが、古いサーバーと同じ読み取り/書き込み権限が必要です。

グループIDと所有者IDを同じにする必要はありませんが、古いサーバー上のすべてのファイルを調べて、新しいサーバーに設定するよりも、フォルダーとファイルの読み取り/書き込み権限を確認する必要がある場合は非常に困難です。

私の考えは、ファイルを新しいサーバーにコピーして解凍することですが、どういうわけか、すべてのアクセス許可をデフォルトにリセットし、644をファイルに、755をフォルダーにリセットします。古いサーバーと同じ権限でファイルやフォルダーを転送できますか?

rsyncを使用するだけです:

rsync -avz /path/to/files newserver:/path_to_files 

これにより、すべてのファイルが古いサーバーの/path/to/filesから新しいサーバーの/path_to_filesに再帰的にコピーされ、権限と所有者情報が保持されます。詳細については、man rsyncを参照してください。

4
Sven

rsyncが存在する前に、知っておく価値のあるトリックがあります。 rsyncのないシステムにいることに気付くことがあります。

秘訣は、ファイルのtarファイルを作成し、ファイルを新しいサーバーにコピーしてから、-pを使用してtarファイルを抽出し、ファイルのアクセス許可を保持することです。

"ちょっと待って!"あなたが尋ねる。 「その一時ファイルは巨大かもしれません!私が持っている空き領域よりも大きいです!」心配しないでください。 2つのtarをパイプで書き込み接続でき、一時ファイルもディスクスペースも必要ありません。 stdinまたはstdoutを指定するには、ファイル名-(ハイフン)を指定します。

それをすべてまとめると:

cd $SRCDIR
tar -c -v -f - . | ssh $DEST_Host "mkdir -p $DESTDIR && cd $DESTDIR && tar -x -p -f -"

例えば:

cd /home/user12
tar -c -v -f - . | ssh other.example.com "mkdir -p $DESTDIR && cd /home/user12 && tar -x -p -v f -"

&&;(セミコロン)に似ていますが、「次のコマンドが成功した場合にのみ実行する」という意味です。

ファイルowner:groupもコピーする場合は、rootとしてこれを実行する必要があることに注意してください。通常のユーザーアカウントは通常、ファイルをchownできないため、tarもできません。 sshはログインが完了するまでパイプを接続しないほど賢いので、sshがパスワードを要求しようとしてもコマンドは機能します。

注:tarは、ルートディレクトリを作成しなかったため、ルートディレクトリを除くすべてのファイルのアクセス許可を更新します。 mkdir -pで作成しました。 「。」の代わりにtarを使用してディレクトリをキャプチャすると、これを修正できます。 「user12」の権限を更新する方法で繰り返される最後の例を次に示します。

cd /home
tar -c -v -f - user12 | ssh other.example.com "mkdir -p /home && cd /home && tar -x -p -v f -"

違いを見ます?

4
TomOnTime

Linux/unixをお持ちの場合は、ファイルのアクセス許可、所有権、ソフトリンクを効果的に保存するtarを使用できます。

cd /var
tar zcf allmycircuits.tgz www
0
Kondybas

私の考えは、ファイルを新しいサーバーにコピーして解凍することですが、どういうわけか、すべてのアクセス許可をデフォルトにリセットし、644をファイルに、755をフォルダーにリセットします。

権限が644/755に設定されていることを経験したことがありますか、それともそれを恐れていますか?前者の場合:あなたは何をしましたか?

ところで:そのような問題が発生した場合:アクセス権を置き換えることは可能です:

getfacl --recursive . > acl.txt
# and then on the other system or at the other path
setfacl --restore=acl.txt

UID/GIDを修正する方法を知っていますか?

0
Hauke Laging