rsyncコマンドでXサーバーにローカルのファイルを同期する

rsyncコマンドで、以下のように書くと同期できました。

rsync 
  -auvz 
  -e "ssh -i Xサーバーからダウンロードした秘密鍵.key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 10022" 
  --delete
  --checksum 
  ./ 
  ユーザー名@ホスト名.xserver.jp:/home/ユーザー名/同期したいフォルダ/

(分かりやすいようにオプションや引数ごとに改行していますが、使う際は改行を取り除いてください)

 

このように書くと

  • Xサーバー上の/home/ユーザー名/同期したいフォルダ/(コピー先)
  • ローカルのカレントディレクトリの中身(./)と同期される(コピー元)

という内容になります。

解説

-auvz

まず-auvzというオプションは以下のとおりです。

よく使うオプション(-auvz)
-a, –archive # archive mode; -rlptgoDと同じ
-u, –update # 更新のあったファイルのみ同期
-v, –verbose # 詳細を表示;-vvと”v”を増やすとさらに詳細を表示
-z, –compress # データ転送時に圧縮する

archive mode (= -rlptgoD) の中身
-r, –recursive # ディレクトリの下層まで再帰的に同期
-l, –links # シンボリックをシボリックとして同期
-p, –perms # ファイルの権限(rwx)を保存して同期
-t, –times # ファイルのタイムスタンプを保存して同期
-g, –group # ファイルのグループを保存して同期
-o, –owner # ファイルのオーナーを保存して同期
-D # “–devices –specials”オプションと同じ
, –devices # デバイスファイルを保存して同期
, –specials # 特殊ファイル(.ファイルとか?)を保存して同期

その他
-n, –dry-run # お試し(実際には実行されず、結果だけ表示される)
-h, –progress # データ転送の進捗を表示する
-e, –rsh=COMMAND # リモートシェルを指定する; SSHを使うには、”-e ssh”と記述する
-H, –hard-links # ハードリンクを保存して同期
-x, –one-file-system # ファイルシステムの境界を越さずに同期

引用元:rsync [QumaWiki]

-e “ssh~~”

次に

 -e "ssh -i Xサーバーからダウンロードした秘密鍵.key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 10022"

の部分は

「rsyncコマンドを実行する前にSSH接続する」という意味です。

Xサーバーからダウンロードした秘密鍵.keyは、Xサーバーの管理画面で事前にダウンロードしておきます。

▲パスフレーズは入力せずに生成します。(パスフレーズを入力してしまうと接続のたびにパスフレーズを尋ねられます)

 

UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

の部分については以下のページを見てください。

参考UserKnownHostsFileとStrictHostKeyChecking【ssh】

–delete、–checksum

次に

--delete
--checksum

はそれぞれ以下のような意味です。

  • –delete
    コピー元にないファイルやフォルダはコピー先から削除する
  • –checksum
    ファイルの中身に差分がある場合だけ同期する
    (ファイルの中身が同じ場合は、タイムスタンプが違っていてもコピーしない)

 

rsyncは通常、

  • ファイルの中身(というかチェックサム?)
  • タイムスタンプ

の両方が変化しているかどうか、で同期するか決めているらしいです。

コピー元、コピー先

最後の引数2つは

  • コピー元のパス
  • コピー先のパス

です。

 

上の書き方だと

  • コピー元のパス:ローカル
  • コピー先のパス:リモート

になってますが

  • コピー元のパス:リモート
  • コピー先のパス:ローカル

にすることもできます。

 

そんな感じです。

それにしてもrsyncコマンドってかなりややこしいですね・・。
オプション多すぎだし、引数やオプションをミスると「ファイルが全部消えちゃった!」になる可能性もあるので絶対にミスれないという緊張感😫

 

おわり

CI/CD
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。
2019年くらいからフロントエンドエンジニアを目指している元アフィリエイターです💩

penpenをフォローする
penpenをフォローする
penpenメモ

コメント

タイトルとURLをコピーしました