Rsync over ssh: “ERRO: o módulo é somente leitura” apareceu de repente


11

Eu usei o rsync / ssh há algum tempo para fazer backup do meu conteúdo de host compartilhado no meu Synology NAS pessoal (212j), e funcionou muito bem. Para obter informações, eu uso uma sshconexão sem senha .

Há 3 dias, atualizei meu software NAS e, desde (ou pelo menos acredito que seja desde então), o backup não funcionará mais. Eu recebo o seguinte erro no host:

rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
ERROR: module is read only 

..que eu não entendo. além disso, nada que eu saiba sobre a origem e o destino que possa ser relacionado rsyncou sshverifiquei algumas coisas e tudo parece estar bem:

  • Ainda consigo me conectar sshdo host ao meu NAS com o bom usuário, para que coisas ssh como chaves não tenham mudado.
  • Eu também tenho as permissões de arquivo correto no NAS (que verifiquei, e também tentou criar arquivos, diretórios .. com o usuário utilizado pelo rsyncmeio ssh).

Eu li aqui e ali que o erro significa que eu tenho que garantir que o meu rsyncd.conftenha o direito read only = no, mas, tanto quanto eu sei, nunca usei rsyncdtão bem como nunca configurei nada para ele e até agora funcionou como um encanto. .

Eu uso o seguinte comando para fazer o backup:

rsync -ab --recursive \
--files-from="$FILES_FROM" \
--backup-dir=backup_$SUFFIX \
--delete \
--filter='protect backup_*' \
$WDIRECTORY/ \
remote_backup:$REMOTE_BACKUP/

Então, eu estou preso e realmente não consigo descobrir o que aconteceu.


Editar:

Como sugerido nos comentários, também tentei passar comandos para o ssh (mas não de dentro de uma sessão ssh), que funcionavam conforme o esperado, e também tentei um único comando rsync, que não funcionou, falhando exatamente como o comando de backup completo.

(sharedHost):hostuser:~ > touch test.txt
(sharedHost):hostuser:~ > rsync test.txt remote_backup:backups/test.txt
ERROR: module is read only
rsync error: syntax or usage error (code 1) at main.c(1034) [Receiver=3.0.8]
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [sender=3.0.7]

e

(sharedHost):hostuser:~ > ssh remote_backup 'touch /abs_path_to_backups/backups/test2.txt && echo "ProoF" > /abs_path_to_backups/backups/test2.txt'
(sharedHost):hostuser:~ > ssh remote_backup 'cat /abs_path_to_backups/backups/test2.txt'
ProoF

Tente fazer os testes de atualização remota, mas com os comandos fornecidos ao ssh na linha de comando, e não através de uma sessão de login do ssh. Verifique também se o espaço de destino não está cheio.
— Skaperen

Obrigado por suas sugestões. Eu editei a pergunta com o resultado deles. Além disso, o espaço-alvo não é completa em todos (eu já tinha certeza, mas eu verifiquei novamente)
— user978548

Respostas:


19

Eu tive o mesmo problema depois de atualizar meu Synology NAS para o DSM 4.1. Eu também faço o rsync sobre SSH. Na minha situação, o usuário rsync root @ ip também funcionou, mas deixou os arquivos no servidor com o proprietário root, o que eu não queria.

Eu descobri na interface do usuário administrador do NAS que, por algum motivo, em ControlPanel-> Usuários-> MyRSyncUser-> Editar -> "Configuração de privilégios", não havia acesso de leitura / gravação às residências. Meu destino RSYNC está embaixo das casas.

Definir isso como privilidge funcionou para mim. Eu espero que isso ajude.


Muito obrigado ! Isso funcionou ! Da próxima vez que eu atualizar o DSM,
— checarei

8
Isso parece funcionar se eu usar nomes de caminhos completos (por exemplo, em rsync something nas:/volume2/homes/foo/bar/vez de rsync something nas:bar/).
— Jukka Suomela

o caminho completo foi o último passo para mim em um período irritante de depuração. obrigado!
— precisa saber é o seguinte

1
O problema com esta solução (não encontrei uma melhor) é que ela concede privilégios ao usuário em todas as casas de usuários, não apenas na sua.
— CryingCyclops

No meu caso (com uma versão mais nova, presumo), também tive que mudar para a sintaxe baseada em módulo (consulte superuser.com/questions/559047/… )
— sknat

6

Eu me livrei de ERRO: o módulo é somente leitura alterando o caminho remoto de / var / services / homes / rsync para / volume2 / homes / rsync

DSM 5.1


4

Encontrei o mesmo problema depois de atualizar um synology ds1010 + para dsm 4.1-2661.

Não tenho tempo para entender o que aconteceu com o rsync fornecido pela sinologia, mas não parece padrão. Então, aqui está minha solução alternativa ...

Como não queria invadir os privilégios (configuração para vários usuários), recompilei o rsync em estática no meu laptop e transferi o binário no nas de sinologia.

wget https://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
tar xzvf rsync-3.0.9.tar.gz
cd rsync-3.0.9
export CFLAGS=--static
./configure
make

scp rsync <login>@<nas_hostname>:

Você pode dizer ao rsync para usar seu novo binário em vez do padrão, com este parâmetro:

--rsync-path=<myhome>/rsync

Agora posso continuar usando a duplicidade com o rsync, adicionando o seguinte parâmetro à duplicidade:

--rsync-options="--rsync-path=<myhome>/rsync"

Foi o que fiz com o meu DS212j, exceto que usei o ipkg para instalar o novo rsync. As instruções da Synology para instalar o ipkg estão aqui .
— 9133 Jason

Não encontrei nada no ipkg para o DSM 5.2, portanto, para o meu DS215j, fiz o seguinte para compilar (eu já tinha o braço do compilador cruzado desconhecido-eabi-gcc) ./configure --host=armv7 CFLAGS=-static EXEEXT=-static --prefix=/opt CC=arm-unknown-linux-gnueabi-gcc && make && arm-unknown-linux-gnueabi-strip rsync && make DESTDIR=$PWD/../prefix install. Coloque o binário em / opt / bin / no NAS. Também tenho que dar ao meu usuário de backup um shell em / etc / passwd alterando / sbin / nologin para / bin / sh (deve haver algumas opções mais seguras).
— 218166 thomasa88

1

Eu tive o mesmo tipo de problema, mas não estava usando um usuário dedicado para o rsync.

Eu tive que corrigir privilégios no Painel de controle -> pastas compartilhadas.


0

Eu tive um problema semelhante ao me conectar ao Synology 211j pelo ssh de Putty. Eu tive que habilitar

"Painel de controle -> Backup de rede -> Ativar serviço de backup de rede".

Está funcionando agora.


-1

Eu consegui fazê-lo entrando como root em vez de administrador ou usuário comum.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.