rsync を使ってリモートサーバーからローカルにファイルを同期する
Published Feb 6, 2025
⋅
Updated Nov 4, 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データを圧縮して転送する。
参考