rsync を使ってリモートサーバーからローカルにファイルを同期する
Published Feb 6, 2025
⋅
Updated Mar 12, 2025
rsync
は、ローカルとリモートホストとの間でファイルを transfer するコマンド。デフォルトで SSH を使う。リモートホスト間同士では移行できない。
ファイルを移行する場合は次のようにする。
rsync path/to/source path/to/destination
例えば、WordPress で uploads
ディレクトリをリモートサーバーからローカルに同期する場合は次のようにする。ここでは hostalias
というホストエイリアスが ~/.ssh/config
に設定されているとする。ファイルのパスについては適当。
rsync -ahuvz hostalias:/example.com/public_html/wp-content/uploads wp-content/uploads
こうすることで、リモートの uploads
をローカルに同期することができる。
ホストエイリアスが設定されていない場合は -e
オプションを使って、鍵の場所やポート番号を指定する。
rsync -ahuvz -e "ssh -i $HOME/.ssh/id_ed25519 -p 10022" user@hostname:/example.com/public_html/wp-content/uploads wp-content/uploads
ただ、このように毎回指定するのは面倒なので、 ~/.ssh/config
にホストエイリアスを設定しておくほうがよい。例えば次のような感じで。
Host hostalias
HostName example.server.com
Port 10022
User user
IdentityFile ~/.ssh/id_ed25519
上述の例で使用している -ahuvz
というオプションは、次のことを意味する。
-a
:--archive
アーカイブモード。-rlptgoD
と等価。再帰的に、かつ諸々の情報を保持して転送したい場合に使用する。-h
:--human-readable
読みやすいフォーマットで表示する。-u
:--update
レシーバーに新しいファイルがあった場合にスキップする。-v
:--verbose
転送中の情報を増やす。-v
でどのファイルが転送されているかと最後にようやくを表示する。-vv
でどのファイルがスキップされたかと、最後にさらに詳しい情報が表示される。このオプションがないとrsync
はデフォルトでサイレントに機能する。-z
:--compress
データを圧縮して転送する。
参考