🔄

rsyncでローカルPCのディレクトリをVPSサーバにコピーする

2024/06/19に公開

rsyncを利用すれば、2つのコンピュータやリモートサーバとの間で、前回の同期から追加、変更された部分のみを効率よく複製することができます。[1]

今回はローカルPCのディレクトリをVPSサーバにssh接続で複製する方法を紹介します。
(複製時間も短く、すごく使い勝手がいいです!個人開発でおすすめかも)

環境・構成

言語習得のために発音を反復練習するアプリを作成しました。

フロントエンド:Sveltekit
バックエンド:Django, Django Rest Framework
データベース:PostgreSQL

サーバー:さくらのVPS Debian Linux 12 amd64

開発したレポジトリの内容をVPSサーバーに移したいので、rsyncを利用してssh接続で複製します。

rsyncをインストール

送る側・受け取る側両方のPCまたはサーバで、rsyncをインストールしてください。

$ sudo apt install rsync

VPSサーバにssh接続

USER_NAME: ssh接続先ログインユーザー名
HOST: ssh接続先ホスト

$ ssh -l {USER_NAME} {HOST}

今回は/srv配下にディレクトリを配置します。
rsyncでディレクトリごとローカルから移すために、VPSのログインユーザーに/srv配下のファイル編集の権限を与えます=オーナーにする(権限つけるだけでもいいかもしれないですが、今回はオーナーにしています)参考

移植先のディレクトリ"/srv"の権限を確認

~$ ls -l /srv

rootユーザー・グループのみ権限がある状態の場合、以下のように表示される。(日付部分は変わるよ)

~$ drwxr-xr-x   3 root root  4096 Jun  4 14:43 srv

移植先のディレクトリ"/srv"で、オーナーを変更する

~$ sudo chown -R {USER_NAME} /srv

確認する

~$ ls -l /srv
drwxr-xr-x   3 {USER_NAME} root  4096 Jun  4 14:43 srv

rsyncでローカルPCのディレクトリをVPSにコピーする

サーバ側の設定が完了した後、ローカルPCからrsyncコマンドを叩く。
以下ローカルPCのターミナルで入力。オプション等の参考

  • --archive: 再帰的に同期して、ユーザーとグループの所有権、権限、シンボリックリンク(symlinks)、タイムスタンプを保持する
  • --delete: 古いファイルを破棄する
  • PATH_TO_DIRECTORY: 例 /Users/username/django-app
  • USER_NAME: ssh接続先ログインユーザー名
  • HOST: ssh接続先ホスト
  • DEST: ssh接続先サーバのコピー先ディレクトリのパス
$ rsync --archive --delete {PATH_TO_DIRECTORY} {USER_NAME}@{HOST}:{DEST}

対象のディレクトリが移せていたら成功!

脚注
  1. https://e-words.jp/w/rsync.html ↩︎

Discussion