¿Por qué agregar una barra inclinada final después de un destino rsync?

13

Según esta página web, agregar '/' al final de un destino rsync produce un resultado diferente de no agregarlo.

He intentado probar esto, pero no puedo verificarlo:

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

dir2:
file

dir3:
file

¿Agregar un '/' al destino realmente tiene algún uso?

EmmaV
fuente
¿Te refieres a esta parte de la página del manual A trailing slash on the source changes this behavior to avoid creating an additional directory level at the destination.:? Si es así, tenga en cuenta que su comando no es en absoluto similar al del ejemplo dado en la página del manual.
jesse_b
@Jesse_b Su comentario me sorprende ... "Cuando use" / "al final del destino, rsync pegará los datos dentro de la última carpeta. Cuando no use" / "al final del destino, rsync creará una carpeta con el último nombre de la carpeta de destino y pegue los datos dentro de esa carpeta ".
Hauke ​​Laging
@HaukeLaging Estoy confundido, ¿qué es sorprendente? Esta sección en particular también se refiere a la barra diagonal que se encuentra en la fuente. Así que si usted hizo rsync -r dir1/subdir1 dir2/que se copie el contenido de subdir1dentro dir2, pero si lo hiciera rsync -r dir1/subdir1/ dir2/se copia todo el directorio (incluyendo contenidos) subdir1en dir2lo que tendría./dir2/subdir1/
jesse_b
@Jesse_b No noté el "hombre" en tu primer comentario. Obviamente, el OP no se refiere a la página de manual, sino a la página que ha vinculado.
Hauke ​​Laging el
@HaukeLaging Oh, duh, ni siquiera vi eso. Creo que estaba rozando demasiado rápido y lo leí como "Según la página de manual".
jesse_b

Respuestas:

28

Realmente hace una diferencia cuando el origen es un archivo y el directorio de destino no existe. Por ejemplo, tome un archivo llamado filecomo fuente:

  • $ rsync file dest/creará una copia filedentro de un directorio dest, mientras que
  • $ rsync file desthará una copia del archivo filellamadodest

Para agregar (de los comentarios); si destya existe un directorio , se filecreará una copia desten los dos casos anteriores.

Ejemplo básico:

~/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 >
resc
fuente
1
Gracias. Entonces, si el directorio destya existe, ¿no hay necesidad de la barra diagonal final?
EmmaV
Exactamente. Si en el ejemplo anterior destexiste un directorio , se filecreará una copia en ambos casos.
Resc