rsync宛先の後に末尾のスラッシュを追加するのはなぜですか?


13

この Webページによれば、rsync宛先の最後に「/」を追加すると、追加しない場合とは異なる結果が生成されます。

これをテストしようとしましたが、検証できません。

$ mkdir dir{1..3}
$ touch dir1/file
$ rsync -r dir1/ dir2
$ rsync -r dir1/ dir3/
$ ls dir*
dir1:
file

dir2:
file

dir3:
file

宛先に「/」を追加すると、実際に時々使用できますか?


マニュアルページのこの部分を参照していますA trailing slash on the source changes this behavior to avoid creating an additional directory level at the destination.か?その場合、コマンドがmanページにある例のコマンドとまったく似ていないことに注意してください。
jesse_b

@Jesse_bあなたのコメントは私を驚かせます...「宛先の最後に「/」を使用すると、rsyncは最後のフォルダー内にデータを貼り付けます。宛先の最後に「/」を使用しないと、rsyncは最後の宛先フォルダ名を入力し、そのフォルダ内にデータを貼り付けます。」
ハウケレイジング

@HaukeLaging私は混乱していますが、驚くべきことは何ですか?この特定のセクションは、ソースにある末尾のスラッシュも参照します。あなたはなかったのであればrsync -r dir1/subdir1 dir2/、それはの内容をコピーしますsubdir1dir2しかし、あなたはしなかった場合rsync -r dir1/subdir1/ dir2/、それは(内容を含む)全体のディレクトリをコピーしますsubdir1dir2あなたが持っているだろうので、./dir2/subdir1/
jesse_bを

@Jesse_b最初のコメントで「男」に気付きませんでした。OPは明らかにmanページではなく、彼がリンクしたページを参照しています。
ホークレイジング

@HaukeLagingああ、それさえ見ませんでした。私は速すぎてスキミングし、「manページによると」と読みました。
jesse_b

回答:


28

ソースがファイルで、宛先ディレクトリが存在しない場合、違いが生じます。たとえばfile、ソースと呼ばれるファイルを使用します。

  • $ rsync file dest/fileディレクトリ内のコピーを作成しますがdest
  • $ rsync file destファイルのコピーになりますfileと呼ばれるがdest

追加するには(コメントから); ディレクトリがdest既に存在する場合、上記の両方の場合にコピーfileが作成されdestます。

基本的な例:

~/test > touch file
~/test > mkdir dest1
mkdir: created directory 'dest1'
~/test > tree
.
├── dest1
└── file

1 directory, 1 file
~/test > rsync file dest1
~/test > rsync file dest2
~/test > rsync file dest3/
~/test > tree
.
├── dest1
│   └── file
├── dest2
├── dest3
│   └── file
└── file

2 directories, 4 files
~/test >

1
ありがとうございました。ディレクトリがdest既に存在する場合、末尾のスラッシュは不要ですか?
エマV

丁度。上記の例にディレクトリdestが存在するfile場合、両方の場合に内部にコピーが作成されます。
resc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.