BLOG
ブログ

パスワード変更

2019.04.04

[CentOS] サーバ間のデータ移行

旧サーバより大量のファイルを新サーバに移行しようと RSYNCコマンドを利用しました。
RSYNCは2つのサーバ間でファイルやディレクトリの同期をとるコマンドです。
 
もちろん、サーバ間ではなくローカル環境内でのファイルの同期にも利用できます。
変更があった分だけ同期する事ができるのでとても便利です。
 

(1) 基本的な使い方

コマンドの書式は以下の通りです。

気を付けたい点としては、同期元のディレクトリの最後の 「 / 」を省略した場合はディレクトリそのものを表し、「 / 」を付けた場合は、そのディレクトリの中身を同期します。
 
例えば、【 rsync -av /data/ /var/data 】と書いた場合は
/dataディレクトリの中身にあるファイルやディレクトリを 同期先の /var/dataディレクトリ内にコピーされます。

【 rsync -av /data /var/data 】と書いた場合は
同期先の /var/dataディレクトリ内に、dataディレクトリがコピーされます。
 
ちなみに、同期先の最後の「 / 」の有無は影響しません。
 

(2) オプションについて

最低限必要になるのは以下です。
-a :(-rlptgoDとオプションを付けたのと同じ)
・ディレクトリを再帰的にコピーする
・シンボリックリンクを、そのままシンボリックリンクとしてコピーする
・パーミッションをそのままコピーする
・タイムスタンプをそのままコピーする
・グループをそのままコピーする
・所有者をそのままコピーする
・デバイスファイルや特殊ファイルをそのままコピーする

-v :コピーしたファイル名や、コピーしたバイト数などの転送情報を表示
 

(3) SSHを利用する

オプションに -e を付け、そのあとに ssh と書けば、SSHで通信を行います。
書式は以下となります。

 
具体的には以下のように利用します。

これは、同期元のサーバ(192.168.128.25)の /dataディレクトリ内のファイルやディレクトリを、コマンドを実行したサーバの /var/dataディレクトリとSSHを用いてユーザ usrでログインして同期をとります。

 

(4) サーバのリソースを抑えて転送する為に

大量のファイルを転送するとサーバに負荷がかかり過ぎて他の処理がとてつもなく重くなってしまいます。

その場合に以下のように
–rsync-pathオプションを付けて以下のように記述します。

 
・ioniceはディスクIOの使用状況に応じたそのプロセスの割り当て優先度を決めるオプション
※0~3までの値があり、1が最優先。2にすればベストエフォートを示します。
また、1、2の場合は、さらに -nオプションで優先順位を指定できます。
こちらは指定できる範囲は 0~7で、0が最優先となります。
 
・niceはCPUの状況に応じたそのプロセスの割り当て優先度を決めるオプション
※-20~19の値があって、-20が最優先。19なら最低優先度の設定
 

(5) 帯域にも制限をかける

–bwlimitオプションを指定すれば、帯域制限をかける事ができます。単位は kb/sec。
 

以下のように記述します。

 

(6) 最終的な実行コマンド

結局、以下のようなコマンドを実行すれば、サーバの負荷も抑えて同期処理ができるようになります。