戻る
使えると便利なコピーツール 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/
戻る