🔄
rsyncでローカルPCのディレクトリをVPSサーバにコピーする
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}
対象のディレクトリが移せていたら成功!
Discussion