新しいサーバーに移行していて、いくつかのWebサイトを移動する必要がありますが、古いサーバーと同じ読み取り/書き込み権限が必要です。
グループIDと所有者IDを同じにする必要はありませんが、古いサーバー上のすべてのファイルを調べて、新しいサーバーに設定するよりも、フォルダーとファイルの読み取り/書き込み権限を確認する必要がある場合は非常に困難です。
私の考えは、ファイルを新しいサーバーにコピーして解凍することですが、どういうわけか、すべてのアクセス許可をデフォルトにリセットし、644をファイルに、755をフォルダーにリセットします。古いサーバーと同じ権限でファイルやフォルダーを転送できますか?
rsync
を使用するだけです:
rsync -avz /path/to/files newserver:/path_to_files
これにより、すべてのファイルが古いサーバーの/path/to/files
から新しいサーバーの/path_to_files
に再帰的にコピーされ、権限と所有者情報が保持されます。詳細については、man rsync
を参照してください。
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 -"
違いを見ます?
Linux/unixをお持ちの場合は、ファイルのアクセス許可、所有権、ソフトリンクを効果的に保存するtar
を使用できます。
cd /var
tar zcf allmycircuits.tgz www
私の考えは、ファイルを新しいサーバーにコピーして解凍することですが、どういうわけか、すべてのアクセス許可をデフォルトにリセットし、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を修正する方法を知っていますか?