È descritto nel rsync(1)
manpage:
Una barra finale sull'origine modifica questo comportamento per evitare di creare un ulteriore livello di directory nella destinazione. Puoi pensare a un
/
in coda su una sorgente con il significato di "copia il contenuto di questa directory" invece di "copia la directory per nome", ma in entrambi i casi gli attributi della directory contenente vengono trasferiti alla directory contenente sulla destinazione. In altre parole, ognuno dei seguenti comandi copia i file nello stesso modo, inclusa la loro impostazione degli attributi di/dest/foo
:rsync -av /src/foo /dest rsync -av /src/foo/ /dest/foo
Per quanto riguarda la destinazione, non credo che abbia grosse conseguenze. C'è una differenza se l'origine è un file e la destinazione non esiste — questo creerà una copia di SRC
chiamato DEST
:
rsync SRC DEST
, mentre questo creerà la directory DEST
e copia il SRC
file in esso:
rsync SRC DEST/
L'ho testato con rsync 3.1.3 su Arch Linux, i risultati sono qui sotto:
1. rsync -avPzu test [email protected]:/home/login/test "test" directory is copied inside of existing "test" on remote (structure is then test/test/...)
2. rsync -avPzu test [email protected]:/home/login/test/ same as above
3. rsync -avPzu test/ [email protected]:/home/login/test content of "test" directory is synchronized with the remote "test" directory
4. rsync -avPzu test/ [email protected]:/home/login/test/ same as above
5. rsync -avPzu test [email protected]:/home/login/ same as above
6. rsync -avPzu test [email protected]:/home/login same as above
I metodi 3-6 sono quelli corretti in questo caso, contrariamente alla risposta accettata.