📁

rsync で末尾の / とコピー先の有無による挙動まとめ

2020/10/01に公開

rsync のファイル・ディレクトリ指定の / の有無、コピー先にファイル・ディレクトリがある場合の挙動について調べた。macOS Catalina の rsync 2.6.9 で確認。

結構パターンがあるがポイントをまとめると...

  • コピー元の末尾に / があれば "ディレクトリの中身すべて" の意味になる (ファイルならエラー)
  • コピー先の末尾に / があれば、ディレクトリであることを強制できる
  • コピー先の有無による変化は、複数回実行しても同じ結果になるようになってる

という感じ。

コピー元 コピー元の末尾 / コピー先 コピー先の末尾 / 結果
ディレクトリ あり ファイル あり rsync -av src/ dest.txt/ エラー (ERROR: cannot stat des...
ディレクトリ あり ファイル なし rsync -av src/ dest.txt エラー (ERROR: destination mus...
ディレクトリ あり ディレクトリ あり rsync -av src/ dest/ コピー元ディレクトリの中身がコピー先ディレクトリの中にコピー
ディレクトリ あり ディレクトリ なし rsync -av src/ dest コピー元ディレクトリの中身がコピー先ディレクトリの中にコピー
ディレクトリ あり なし あり rsync -av src/ new/ コピー先にディレクトリが作られ、コピー元ディレクトリの...
ディレクトリ あり なし なし rsync -av src/ new コピー先にディレクトリが作られ、コピー元ディレクトリの...
ディレクトリ なし ファイル あり rsync -av src dest.txt/ エラー (ERROR: cannot stat des...
ディレクトリ なし ファイル なし rsync -av src dest.txt エラー (ERROR: destination mus...
ディレクトリ なし ディレクトリ あり rsync -av src dest/ コピー元と同名のディレクトリがコピー先に作られその中にコピー
ディレクトリ なし ディレクトリ なし rsync -av src dest コピー元と同名のディレクトリがコピー先に作られその中にコピー
ディレクトリ なし なし あり rsync -av src new/ コピー先にディレクトリが作られ、その中にコピー元と同名...
ディレクトリ なし なし なし rsync -av src new コピー先にディレクトリが作られ、その中にコピー元と同名...
ファイル あり ファイル あり rsync -av src.txt/ dest.txt/ エラー (Not a directory (20))
ファイル あり ファイル なし rsync -av src.txt/ dest.txt エラー (Not a directory (20))
ファイル あり ディレクトリ あり rsync -av src.txt/ dest/ エラー (Not a directory (20))
ファイル あり ディレクトリ なし rsync -av src.txt/ dest エラー (Not a directory (20))
ファイル あり なし あり rsync -av src.txt/ new/ コピー先にディレクトリが作られるが、エラー (Not ...
ファイル あり なし なし rsync -av src.txt/ new エラー (Not a directory (20))
ファイル なし ファイル あり rsync -av src.txt dest.txt/ エラー (ERROR: cannot stat des...
ファイル なし ファイル なし rsync -av src.txt dest.txt コピー元のファイルで置き換えられる
ファイル なし ディレクトリ あり rsync -av src.txt dest/ コピー元のファイルがコピー先ディレクトリの中にコピー
ファイル なし ディレクトリ なし rsync -av src.txt dest コピー元のファイルがコピー先ディレクトリの中にコピー
ファイル なし なし あり rsync -av src.txt new/ コピー元のファイルがコピー先ディレクトリの中にコピー
ファイル なし なし なし rsync -av src.txt new コピー先にコピー元と同じ内容のファイルが作られる

Discussion