Movatterモバイル変換


[0]ホーム

URL:


hydroculのメモ >コマンドの使い方(Linux) >rsync コマンド

rsync コマンド2014/10/25

リモートホストとの間でファイルのコピー(アップロード/ダウンロード)をするコマンド。リモートホストとはSSHで通信できることが前提。

基本的な使い方2013/10/23

## リモートホストからローカルにダウンロードする$ rsync «リモートユーザ名»@«リモートホスト名»:/«絶対パス» «ローカルパス»## リモートホストからローカルにダウンロードする## リモートでのパスはリモートのホームディレクトリからの相対パスでもよい$ rsync «リモートユーザ名»@«リモートホスト名»:«相対パス» «ローカルパス»## ポート番号が22以外の場合$ rsync -e "ssh -p «ポート番号»" «リモートユーザ名»@«リモートホスト名»:/«絶対パス» «ローカルパス»## 秘密鍵のファイルを指定する場合$ rsync -e "ssh -i «秘密鍵ファイル名»" «リモートユーザ名»@«リモートホスト名»:/«絶対パス» «ローカルパス»

リモートからローカルへのダウンロード、またはローカルからリモートへのアップロードが可能だが、リモートから別のリモートへの転送はできない。

ディレクトリの指定方法2015/03/16

コピー元としてディレクトリを指定する場合、最後に/ を付けるかどうかで動作が異なってくる。

ローカルにfoo/bar/hello.txt というファイルがあった場合、

rsync -r foo/bar remote:dst

と書くと、foo/barディレクトリ自体がコピーされる、というイメージになるので、remoteホストにはdst/bar というディレクトリが作られ、dst/bar/hello.txt というパスにファイルがコピーされる。

rsync -r foo/bar/ remote:dst

と書くと、foo/barディレクトリの中身がコピーされる、というイメージになり、remoteホストにはdst/hello.txt というパスにファイルがコピーされる。

オプション2016/03/07

-a
-rlptgoD と同じ
--bwlimit
ネットワーク帯域を制限して転送する。->ゆっくり転送するには
--copy-links
シンボリックリンクはリンク先の中身を転送
-g
グループもコピー
-l,--links
シンボリックリンクをシンボリックリンクとして転送
-o
ファイルオーナーもコピー (root権限でのみ可)
-p
パーミッションも保存。タイムスタンプも保存するには-t が必要。cpコマンドでは-p でタイムスタンプも保存してくれるが。
--progress
コピーの進捗を表示
-r
ディレクトリの場合はその中を再帰的にコピー
-t
タイムスタンプも保存
-u
タイムスタンプが新しいファイルのみをコピー
-v
コピーするファイル名を、進捗に合わせて表示
-z
ネットワーク上を転送する前後に圧縮と解凍の処理を入れて、ネットワークを節約する。たぶん代わりにCPU使用率があがる。

HOWTO

ローカルにあるファイルをディレクトリ名も含めてリモートにアップロードするには2013/10/14

rsync -R abc/def/ghi.dat remote:/home/who/

この場合、リモートには/home/who/ghi.dat ではなく/home/who/abc/def/ghi.dat という名前でアップロードされる。リモートにディレクトリが存在しない場合は自動で作成される。

cp での同じ役割をはたすのは--parents

ポートが22以外のSSHサーバにrsyncで接続するには2014/08/26

リモートからダウンロードする場合

$ rsync -e "ssh -p <port>" <ID>@<IP>:<remote_path> <local_path>

リモートにアップロードする場合

$ rsync -e "ssh -p <port>" <local_path> <ID>@<IP>:<remote_path>

->ポートが22以外のSSHサーバに接続するには

進捗を表示するには2013/12/05

転送の進捗をリアルタイムに表示させるには、--progress オプションを使う。プログレスバーのようなビジュアルでの表示ではなく、単に数値で表示するのはちょっと残念。

リモートのファイルをローカルに保存するのではなく、標準出力させて別のコマンドにパイプでつなぐには2014/01/29

rsync で標準出力させる方法が見つからなかったが、ssh で以下のようにすればよい。

ssh remote "cat abc.txt" | less

ネットワークの帯域を絞ってゆっくり転送するには2014/08/26

時間がかかってもよいからネットワークの負荷をかけずにゆっくりダウンロードまたはアップロードするには--bwlimitオプションを使う。このオプションで指定する数字の単位はKBps(キロバイト毎秒であってキロビット毎秒ではない)。

# 毎秒100KBに制限してダウンロードrsync --bwlimit=100 remote:foo.txt ./
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク

[8]ページ先頭

©2009-2025 Movatter.jp