96415


rsyncでコピー元のディレクトリ構成をそのままコピー先にコピーするオプションを調べた際、例として、以下のコマンドを実行しました。

[code]

    rsync -rhvt /var/log/wtmp test@example.com:/home/test/
    
[/code]

上記のようなコマンドでコピーすると、「/home/test/」の下に wtmp のみがコピーされます。

そのため色々調べて `-r` を `-R` に変えると以下のようにコピー元のディレクトリ構成をそのままコピーすることができました。

[code]

    /home/test/var/log/wtmp
    
[/code]

しかしここで1点疑問なのですが、`-r`
オプションは「再帰的にコピーする」オプションなので、指定したコピー元のディレクト構造がそのままコピー先にコピーされると思いました。  
また、`-R` のオプションも「相対パス名を使用する」と書かれていてイマイチオプションの意味がわかりません。

`-r` と `-R` のそれぞれの意味、違いを教えていただけると幸いです。  
以上、よろしくお願いいたします。


CC BY-SA 4.0
2023-10-03T12:32:41.533
96413
2023-10-04T09:01:34.937
2023-10-04T09:01:34.937
4236
49430
question
rsync
rsyncの -r と -R オプションの違いがわかりません


[`--recursive`, `-r`](https://download.samba.org/pub/rsync/rsync.1#opt--
recursive)は指定されたパスがディレクトリの場合に再帰的にコピーします。`/var/log/wtmp`はファイルなので再帰的には動作せず１ファイルのコピーとなります。

[`--relative`, `-R`](https://download.samba.org/pub/rsync/rsync.1#opt--
relative)は指定されたパスを相対ディレクトリとして扱います。

[code]

    rsync -R /var/log/wtmp ...
    
[/code]

と指定した場合、

[code]

    (cd /; rsync -R var/log/wtmp ...)
    
[/code]

と解釈され、`var/log/wtmp`としてコピーされます。

なお

[code]

    rsync -R /var/./log/wtmp ...
    
[/code]

と`./`を挟んだ場合、

[code]

    (cd /var; rsync -R log/wtmp ...)
    
[/code]

と解釈され、`./`以降、つまり`log/wtmp`としてコピーされます。


CC BY-SA 4.0
2023-10-03T22:21:52.407
96415
2023-10-03T22:21:52.407
4236
96413
answer