戻る

使えると便利なコピーツール rsync

ローカルのファイルを、ローカルにコピーする

こういう使い方をすると、cpコマンドで十分じゃない? と思うかも知れませんが、cpコマンドよりも便利です。 どう便利かと言うと、コピー元のファイルとコピー先のファイルを比較し、 変更があったものだけコピーします。 巨大なサイズのファイルでも、途中までコピーしてあれば、 それを再開してコピーするということも可能(だと思います)です。 ファイルの量やサイズが大きいと便利さが実感できるはずです。

rsync <コピー元ファイル> <コピー先> の様に指定します。

例と注意

rsync /home/usamimi/file /home/nekomimi/
/home/usamimi/fileを/home/nekomimi/にfileという名前でコピーします。
rsync /home/usamimi/source_file /home/nekomimi/destination_file
/home/usamimi/source_fileを/home/nekomimi/にdestination_fileという 名前でコピーします。
rsync -avz /home/usamimi/source_directory /home/nekomimi/
ディレクトリをコピーするときは、"-avz"オプションを付けます。 すると、/home/usamimi/source_directoryを/home/nekomimi/にsource_directoryと いう名前でディレクトリごとコピーします。
rsync -avz /home/usamimi/source_directory/ /home/nekomimi/
一見すると、さっきの例と同じように見えますが、source_directoryの後に"/"が付いていることに注意して下さい。このスラッシュ一つが重要です。 この場合は/home/usamimi/source_directoryの中身を /home/nekomimi/以下にコピーします。
rsync -avz /home/usamimi/source_directory /home/nekomimi/dezik0
/home/nekomimi/の中にdezik0というディレクトリがなかった場合、 dezik0というディレクトリを作成し、その中に/home/usamimi/source_directoryを コピーします。dezik0があれば、その中にコピーします。
rsync -avz /home/usamimi/source_directory/ /home/nekomimi/dezik0
さっきと例と似ていますが、ここでもスラッシュに注意です。 /home/nekomimi/の中にdezik0というディレクトリがなかった場合、 dezik0というディレクトリを作成し、その中に/home/usamimi/source_directoryの 中身をコピーします。dezik0があれば、その中にコピーします。

ローカルホストのファイルをリモートホストにコピーする

ここでは、sshを利用してコピーします。そのため、sshで リモートホストにログインできる必要があります。 また、コピーする前にパスワードの入力を求められます。 rsyncサーバという方法もあるようですが、面倒なので私は利用していません。

rsync -e ssh <(ローカルの)コピー元ファイル> <リモートホスト名>:<コピー先>または、 rsync -e ssh <(ローカルの)コピー元ファイル> <ユーザー名>@<リモートホスト名>:<コピー先> の様に指定します。 リモートホスト名は"localhost"の様に指定したり、 IPアドレスで指定することもできます。 "<ユーザー名>@"の部分は省略できます。 省略した場合は現在ローカルホストにログインしているユーザー名が 指定されたのと同じように振舞います。

例と注意

rsync -e ssh nyo.png usada@remotehost:/home/usada/
現在のディレクトリの中にあるnyo.pngというファイルを remotehostの/home/usada/以下にコピーします。 usadaというユーザーでremotehostにログインするため、 usadaのパスワードの入力を求められます。
rsync -e ssh nyo.png remotehost:/home/usada/
rsync -e ssh -avz nyo.png remotehost:~/
rsync -e ssh -avz nyo.png remotehost:~usada/
現在のディレクトリの中にあるnyo.pngというファイルを remotehostの/home/usada/以下にコピーします。 ユーザー名を指定していないので、 現在のローカルホストにログインしているユーザー名で、 remotehostにログインしようとします。
rsync -e ssh nyo.png 192.168.0.10:/home/usada/
現在のディレクトリの中にあるnyo.pngというファイルを 192.168.0.10の/home/usada/以下にコピーします。
rsync -e ssh -avz directory remotehost:/home/usada/
directoryをremotehostの/home/usada/にコピーします。
ディレクトリを操作する場合の注意は変わりません。

リモートホストのファイルをローカルホストにコピーする

さっきの場合とあまり変わりません。

rsync -e ssh <リモートホスト名>:<コピー元ファイル名> <(ローカルの)コピー先&gr;または、 rsync -e ssh <ユーザー名>@<リモートホスト名>:<コピー元ファイル名> <コピー先&gr; の様に指定します。

注意

リモートのファイルをリモートにコピーするようなことはできません (と書いてありました、試していません)。 少なくとも、コピー先、コピー元のどちらかはローカルホストでなければなりません。

参考にしたサイト

http://www.infoscience.co.jp/technical/rsync/
戻る