Como dizer ao rsync para não excluir algumas pastas no destino?

3

Então eu uso o pelican para escrever meu blog e eu carrego a coisa toda usando o rsync. OK.

Mas eu também uso o Let's Encrypt e por isso preciso do repositório. bem conhecido preservado na raiz do meu site.

Existe uma maneira de dizer "rsync ... --do-não-delete .bem conhecido ..."

Atualmente, esses representantes são protegidos por permissões, mas o rsync não gosta disso.

Aqui está o comando rsync atual (instalado pelo próprio Pelican, eu não o escrevi):

rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) --cvs-exclude

BTW: se você também tem alguma sugestão para melhorar a eficiência do rsync, eu aceito (sim, é fora do tópico).

    
por 22decembre 23.04.2016 / 12:22

2 respostas

5

De man rsync

--delete This tells rsync to delete extraneous files from the receiving side (ones that aren’t on the sending side), but only for the directories that are being synchronized. You must have asked rsync to send the whole directory (e.g. "dir" or "dir/") without using a wildcard for the directory’s contents (e.g. "dir/*") since the wildcard is expanded by the shell and rsync thus gets a request to transfer individual files, not the files’ parent directory. Files that are excluded from the transfer are also excluded from being deleted unless you use the --delete-excluded option or mark the rules as only matching on the sending side (see the include/exclude modifiers in the FILTER RULES section).

Então eu acho que deveria ser

rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --delete \ $(OUTPUTDIR)/ \ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) \ --cvs-exclude --exclude=/.well-known

(assumindo que .well-known está na raiz de $(SSH_TARGET_DIR)/ )

    
por 23.04.2016 / 16:15
3

Você deve usar a opção --exclude para tornar rsync ignorar esse diretório. A menos que você também use --delete-excluded (que você não deveria, neste caso), ele irá deixá-lo em paz.

    
por 23.04.2016 / 14:21

Tags