Według tej strony dodanie „/” na końcu miejsca docelowego rsync daje inny wynik niż brak dodawania.
Próbowałem to przetestować, ale nie mogę tego zweryfikować:
$ mkdir dir{1..3}
$ touch dir1/file
$ rsync -r dir1/ dir2
$ rsync -r dir1/ dir3/
$ ls dir*
dir1:
file
dir2:
file
dir3:
file
Czy dodanie znaku „/” do miejsca docelowego ma czasem zastosowanie?
A trailing slash on the source changes this behavior to avoid creating an additional directory level at the destination.
? Jeśli tak, zwróć uwagę, że twoje polecenie wcale nie jest podobne do tego z przykładu podanego na stronie man.rsync -r dir1/subdir1 dir2/
będzie skopiować zawartośćsubdir1
dodir2
ale jeśli niersync -r dir1/subdir1/ dir2/
będzie skopiowanie całego katalogu (wraz z zawartością)subdir1
wdir2
tak trzeba./dir2/subdir1/
Odpowiedzi:
To robi różnicę, gdy źródłem jest plik, a katalog docelowy nie istnieje. Na przykład weź plik o nazwie
file
jako źródło:$ rsync file dest/
utworzy kopięfile
wewnątrz katalogudest
, natomiast$ rsync file dest
utworzy kopię pliku ofile
nazwiedest
Aby dodać (z komentarzy); jeśli katalog
dest
już istnieje, kopiafile
zostanie utworzonadest
w obu powyższych przypadkach.Podstawowy przykład:
źródło
dest
już istnieje, nie ma potrzeby używania ukośnika końcowego?dest
istnieje katalog , kopiafile
zostanie utworzona w obu przypadkach.