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.