Estou enfrentando uma situação bastante simples, tenho que carregar, como está, uma grande árvore de arquivos em um servidor WebDAV acessível por HTTPS. Devo iniciar o upload a partir de uma caixa Linux com apenas linha de comando. Eu posso instalar programas na caixa.
Eu tentei o Cadaver, mas ele não suporta o upload de diretório recursivo.
Você conhece ferramentas / scripts simples para conseguir isso?
Ok, eu encontrei algo que fez isso.
Comecei a partir do davpush.pl
script que pode ser encontrado aqui https://github.com/ptillemans/davpush
Algumas mudanças foram necessárias:
- substitua todos "
dav://
" para "https://
" - adicione "
print POUT "open";
" antes "print POUT $script;
"
Porra, ter que hackear um script perl para simplesmente fazer upload de um diretório que é rude. Ainda estou procurando ferramentas / scripts simples.
fonte
Aqui está um shell script rapidamente hackeado que permite fazer isso usando o cadáver :
Se for nomeado
davcpy.sh
, um comando comopermite uma cópia recursiva de
em um remoto chamado
Observe que ele usa o recurso de script de
cadaver
para ainda permitir a digitação interativa de login / senhas. Eu acho que também é robusto o suficiente para lidar com nomes de arquivos e diretórios estranhos que contêm espaços, mas não testei nenhum caso como esse.fonte
Uma solução pode ser o Rclone . Este é um programa de sincronização de linha de comando unidirecional, semelhante ao rsync, que suporta WebDAV (entre outros). Pode copiar recursivamente um diretório, ignorando os arquivos existentes no destino. Ele possui algumas opções de linha de comando para controlar o comportamento da sincronização, por exemplo, se você deseja que os arquivos de destino sejam excluídos se forem retirados da fonte. Existem pacotes disponíveis para muitas distribuições, mas você também pode instalar e executar o binário comum. Na primeira vez, você precisará definir um "remoto":
Depois disso, você pode copiar ou sincronizar arquivos e diretórios:
fonte
Uma modificação da resposta de nberth que funciona no OSX:
O uso é o mesmo. Citando a resposta de nberth:
fonte
Estou no Ubuntu Linux. Com a ajuda do fusível (Sistema de arquivos no espaço do usuário) e mountdavfs (davfs2), você pode montar um subdiretório no servidor Webdav como uma pasta local.
Abra o seu terminal e proceda da seguinte forma:
Instale davfs2 se ele ainda não existir:
sudo apt-get install davfs2
Conecte-se ao servidor Webdav:
sudo mount.davfs -o user=knb,rw https://webdav.site.de/data /mnt/somedir
(O proprietário do sistema de arquivos deve ser inserido, caso contrário, nenhum direito de gravação estará presente)
Além disso, eu tive que inserir essas linhas em
/etc/dafs2/davfs2.conf
:Veja https://bugs.launchpad.net/ubuntu/+source/davfs2/+bug/466960
mount
- Comando - Resultado (Última linha de saída):https://webdav.mysite.de/icdp on /media/somedir type fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=0,allow_other,max_read=16384,uid=1000,gid=0,helper=davfs)
Verifique também se há um arquivo estranho
~/.davfs2/secrets
- pode ser necessário, para montagens permanentes que sobrevivem à reinicialização.Agora você pode emitir comandos como
cp -vr /data/myphotos /media/somedir
e os arquivos serão copiados recursivamente e enviados para o site webdav.fonte