Tag: rsync
関連ページ†
参考情報†
基本的な使い方†
考え方の基本†
- SRC/*をDESTディレクトリにコピーする場合以下のコマンドを使用する。
rsync -avz SRC/ DEST
- SRCディレクトリの末尾のスラッシュの有無が重要。DESTの末尾は関係ない。
- 末尾スラッシュつきのSRC/の場合SRC/*と考えると分かりやすい。DESTの内部にディレクトリが作られない。
- 末尾スラッシュなしの場合、DESTの内部にフォルダが作られる。
- ただしリモートがシンボリックリンクで実態をコピーしたい場合"SRC/"でやらないとシンボリックリンクが作成されてしまう。
- 安全のためには空のDESTディレクトリを作成してテストするのが良い。こせきの技術日記によるとSRCの末尾に常にスラッシュを追加するのが推奨されてる。
- 基本オプションは"-av"。"-z"を追加すると圧縮される。
- "--delete"でDESTに存在しないファイルが削除される。
- "--exclude='vendor/bunlde'"のような指定でフォルダを無視できる。複数のパターンを指定したい場合"--exclude='log/*' --exclude='tmp/*'のように指定できる
コピー元からコピー先へ同期†
※コピー先ディレクトリがなければ作られる。
コピー元からコピー先へ同期(削除もする)†
実用基本形†
Tips†
コピー元のスラッシュの取り扱い†
- 例えば以下のような構造のフォルダがある場合を考える。
.
├── a
│ └── a.txt
├── b
│ └── b.txt
└── c
- aフォルダをスラッシュ付きで、bフォルダをスラッシュなしでコピー
rsync -av a/ c
rsync -av b c
- すると次のようになる。転送元フォルダの最後にスラッシュがあるとそのフォルダ自体はコピー先に作られない。
.
├── a
│ └── a.txt
├── b
│ └── b.txt
└── c
├── a.txt
└── b
└── b.txt
シェルスクリプトの変数にオプションを入れて使いたい†
サーバー負荷を軽減したい†
トラブルシューティング†
rsync error: error in rsync protocol data stream (code 12)†
- いかにもsshのポートなどプロトコル関係のように思えるが実際は転送先のパスが存在しないだけだった。
- コピー元、コピー先のパスを確認すること。
Last-modified: 2022-04-11 (月) 15:28:21