O backup baseado em Rsync e Cygwin no Windows permite erros de permissão negada

3

Plano de fundo

Eu uso o rsync / cygwin no Windows 10 para fazer backup de todos os meus arquivos locais (origem) em um disco rígido externo (destino). Eu usei este guia link como um tutorial sobre como usar o rsync / cygwin para fazer backup. Nota: Meu disco rígido externo está formatado em NTFS.

No primeiro backup, copiei / colei manualmente as pastas desejadas para o destino. Todos os backups subseqüentes são feitos usando o rsync, conforme descrito abaixo.

Meu método de backup usando o rsync / cygwin

No Windows, criei um arquivo backup.bat com meus comandos rsync para que eu possa conectar rapidamente minha unidade externa e iniciar o backup. Abaixo está um exemplo do meu arquivo backup.bat, onde C é a minha unidade local, e E é a minha unidade externa.

pause
rsync -avhP --delete --log-file="/cygdrive/C/Users/MyUsername/rsync-backup-log.txt" "/cygdrive/C/Users/MyUsername/Folder A" "/cygdrive/E/Backup/"
rsync -avhP --delete --log-file="/cygdrive/C/Users/MyUsername/rsync-backup-log.txt" "/cygdrive/C/Users/MyUsername/Folder B" "/cygdrive/E/Backup/"
rsync -avhP --delete --log-file="/cygdrive/C/Users/MyUsername/rsync-backup-log.txt" "/cygdrive/C/Users/MyUsername/Folder C" "/cygdrive/E/Backup/"
pause

Para garantir que eu não tenha problemas de permissão, editei meu arquivo C: \ cygwin64 \ etc \ fstab abaixo:

none /cygdrive cygdrive binary,posix=0,user,noacl 0 0

Problema / problema

O problema que estou tendo é que muitas vezes vejo erros de "Permissão negada (13)". Abaixo está um extrato do log do rsync. Observe como alguns arquivos / pastas são copiados sem erros. No entanto, existem alguns arquivos / pastas que dão erros de permissão.

...
2016/12/17 15:57:04 [2968] >f+++++++++ Documents/Subfolder A/IMG_5678.JPG
2016/12/17 15:57:04 [2968] >f+++++++++ Documents/Subfolder A/IMG_5679.JPG
2016/12/17 15:57:04 [2968] >f+++++++++ Documents/Subfolder A/IMG_5680.JPG
2016/12/17 15:57:04 [2968] >f+++++++++ Documents/Subfolder A/IMG_5681.JPG
2016/12/17 15:57:04 [2968] >f+++++++++ Documents/Subfolder A/IMG_5682.JPG
2016/12/17 15:57:04 [2968] >f+++++++++ Documents/Subfolder A/IMG_5996.JPG
...
2016/12/17 15:58:03 [6052] >f+++++++++ Folder B/Subfolder C/FileD.docx
2016/12/17 15:58:03 [6052] cd+++++++++ Folder B/Subfolder C/Subfolder E/
2016/12/17 15:58:04 [6052] >f+++++++++ Folder B/Subfolder F/FileG.docx
2016/12/17 15:58:04 [6052] rsync: mkstemp "/cygdrive/E/Backup/Folder B/Subfolder C/.FileD.docx.dBBzQZ" failed: Permission denied (13)
2016/12/17 15:58:07 [6052] rsync: mkstemp "/cygdrive/E/Backup/Folder B/Subfolder F/.FileG.docx.8DkCUR" failed: Permission denied (13)
2016/12/17 15:58:07 [6052] rsync: recv_generator: mkdir "/cygdrive/E/Backup/Folder B/Subfolder H/Subfolder J" failed: Permission denied (13)
2016/12/17 15:58:07 [6052] *** Skipping any contents from this failed directory ***
2016/12/17 15:58:07 [6052] >f+++++++++ Folder B/Subfolder H/FileK.xlsx
2016/12/17 15:58:07 [6052] cd+++++++++ Folder B/Subfolder H/Subfolder J/
2016/12/17 15:58:07 [6052] rsync: mkstemp "/cygdrive/E/Backup/Folder B/Subfolder H/.FileK.xlsx.WQa396" failed: Permission denied (13)
2016/12/17 15:58:07 [6052] sent 91.52M bytes  received 1.79K bytes  9.63M bytes/sec
...

Solução de problemas

Para solucionar problemas, naveguei para uma das pastas com o erro de permissão no Windows Explorer (no disco rígido externo). Abaixo está uma captura de tela da notificação de diálogo que recebo. Quando clico em Continuar para obter permissão, a pasta é aberta, mas está vazia. Quando eu executo novamente o comando rsync (backup.bat), os arquivos nessa pasta são armazenados em backup corretamente sem erros.

Screenshot:

    
por Zythyr 21.12.2016 / 10:16

2 respostas

2

Consegui encontrar uma solução que atualmente funciona para mim. Não tenho certeza se essa é uma abordagem correta garantida.

Para evitar problemas de permissão, eu preciso adicionar o seguinte ao meu comando rsync: --no-p --chmod=ugo=rwX . Assim, meu comando rsync backup deve se parecer com o seguinte:

rsync -avhP --no-p --chmod=ugo=rwX --delete --log-file="/cygdrive/C/Users/MyUsername/rsync-backup-log.txt" "/cygdrive/C/Users/MyUsername/Folder A" "/cygdrive/E/Backup/"

O crédito para esta solução vai para a seguinte resposta em um post semelhante: link

    
por 02.03.2017 / 08:36
2

Como você já indicou, --no-p com --chmod=ugo=rwX definirá todos os bits de permissão.

No entanto, se você quiser mais controle sobre as permissões para o novo diretório, você pode usar outros argumentos para --chmod=

O guia que você vinculou realmente tem um exemplo disso (pode ter sido adicionado depois que você o usou): --chmod=Du=rwx,Dgo=rx,Fu=rw

man rsync contém muitas informações sobre essa opção.

    
por 17.05.2018 / 21:00