rsync da origem do webdav desmontado

1

Eu tenho um CCTV com marca branca e sem marca câmera que expõe todas as suas gravações através de um servidor webdav. Durante o mês passado, andei montando a unidade com davfs2 , mas não é uma solução particularmente elegante:

  • A lista de arquivos precisa ser regenerada para cada comando ( cp ou tar ), o que leva um tempo
  • cp parece diminuir um pouco após cada transferência sucessiva de arquivos
  • rsync --progress parece medir apenas a velocidade de transferência local do arquivo temporário para o destino final

Eu vi algumas pessoas usando rsync para fazer backup em vários tipos de servidores em nuvem baseados em webdav, mas quando tento:

rsync -a admin@http://192.168.0.22/webdav/ /media/martin/internal-large/CCTV-TWO/

tudo que eu recebo é o erro:

ssh: Could not resolve hostname http: Name or service not known

Existe uma maneira de fazer a transferência desta maneira?

Editar a partir do comentário: Eu suspeito que minha pergunta foi muito mal formulada para ser entendida. Em primeiro lugar, o webdav é a fonte. Em segundo lugar, se você acabou de usar um endereço IP, então o rsync assume que você quer uma transferência baseada em SSH.

Se eu emitir o comando: rsync --progress -a [email protected]:/webdav /media/martin/internal-large/CCTV-TWO/

Eu recebo os seguintes erros:

ssh: connect to host 192.168.0.24 port 22: Connection refused 
rsync: connection unexpectedly closed (0 bytes received so far)
[Receiver] rsync error: unexplained error (code 255) at io.c(226)
    
por Martin KS 11.03.2017 / 22:57

1 resposta

1

Como alternativa ao rsync, uma maneira de realizar essa tarefa é usar wget com a opção -m (--mirror), que aplica -r (recursão), -N (data e hora correspondentes ao arquivo remoto ) uma profundidade de nível infinito que você pode ou não querer restringir usando a opção -l, e também aplica a opção --no-remove-listing (uma opção de transferência de FTP que eu não acho importante ao transferir via HTTP)

Também precisaremos direcionar o diretório para armazenamento explicitamente para evitar despejar tudo no diretório no qual o wget foi lançado (comportamento padrão, como eu lembro)

Podemos fazer isso com a opção -P como em -P target ou --directory-prefix = target

Você provavelmente também evitará subir acima do diretório de origem que está segmentando com a opção -np (--no-parent), que se aplica:

Do not ever ascend to the parent directory when retrieving recursively.
This is a useful option, since it guarantees that only the files below 
a certain hierarchy will be downloaded.

Você pode especificar as credenciais da seguinte forma:

--user=user
--password=password

 Specifies the username user and password password for both FTP and HTTP file retrieval.  These parameters can be overridden using the --ftp-user and
           --ftp-password options for FTP connections and the --http-user and --http-password options for HTTP connections.

Colocando tudo isso junto, acabo com um comando que se parece com isso.

wget -m 192.168.0.22/webdav/ -np -P ./media/martin/internal-large/CCTV-TWO/

No seu caso, você pode ou não ter que adicionar as opções --user = admin e --password = whateveritis.

Pode haver outros switches úteis para seu caso de uso específico. Há uma página manual detalhada disponível com o comando man wget Um em particular, você pode querer revisar é --no-clobber Eu incluí um trecho da página man abaixo:

--no-clobber
           If a file is downloaded more than once in the same directory,
           Wget's behavior depends on a few options, including -nc.  In
           certain cases, the local file will be clobbered, or overwritten,
           upon repeated download.  In other cases it will be preserved.

           When running Wget without -N, -nc, -r, or -p, downloading the same
           file in the same directory will result in the original copy of file
           being preserved and the second copy being named file.1.  If that
           file is downloaded yet again, the third copy will be named file.2,
--
           Therefore, ""no-clobber"" is actually a misnomer in this
           mode---it's not clobbering that's prevented (as the numeric
           suffixes were already preventing clobbering), but rather the
           multiple version saving that's prevented.

           When running Wget with -r or -p, but without -N, -nd, or -nc, re-
           downloading a file will result in the new copy simply overwriting
           the old.  Adding -nc will prevent this behavior, instead causing
           the original version to be preserved and any newer copies on the
           server to be ignored.

Fontes:

man wget

link

link

    
por Elder Geek 13.03.2017 / 19:38