1. Problemas com caracteres especiais nos nomes de arquivos
Existem caracteres especiais nos nomes dos arquivos? Dependendo do sistema de arquivos no qual você está gravando esses arquivos, eles podem não permitir que você prefixe os arquivos com um ponto ( .
), por exemplo.
2. Problemas com tempos de modificação do rsync e webdav2
Me deparei com este post do blog, onde é descrito rsync
um problema com o problema de escrever / acompanhar os tempos de modificação de arquivos nos diretórios webdav2 montado em box.com.
O problema aparece assim no sistema de arquivos montado:
david@sydney:~/Pictures$ ls -l /mnt/box/bwca/08/09/IMG_3084.CR2
-rw-r--r-- 1 david david 12564061 Aug 14 16:08 /mnt/box/bwca/08/09/IMG_3084.CR2
david@sydney:~/Pictures$ ls -l 2012/08/09/IMG_3084.CR2
-rw-rw-r-- 1 david david 12564061 Aug 9 13:00 2012/08/09/IMG_3084.CR2
Esse mesmo artigo mostrou uma solução alternativa:
$ rsync -avhP --size-only --bwlimit=64 2012/08 /mnt/box/bwca/
Essa é uma boa maneira de usar rsync
, mas está apenas comparando arquivos com base no tamanho atual, não nas somas de verificação.
3. Problemas com davfs2 (WebDAV)
Me deparei com este segmento intitulado: rsync via davfs2? no fórum WebDAV (davfs) no sourceforge. Alguém estava perguntando sobre uma situação semelhante em que desejava usar o WebDAV para montar um provedor de armazenamento online e executar rsync no armazenamento montado via WebDAV. Isso é o que um dos desenvolvedores (Werner Baumann) do WebDAV disse sobre esse tópico .
trecho da resposta de Werner
O davfs2 fará upload apenas de arquivos completos. Ele não pode fazer as coisas incrementais que o rsync geralmente faz, e isso torna o rsync muito eficiente.
davfs2 usa um cache local no disco. Isso o tornará mais responsivo e seu aplicativo também deverá lucrar com isso. Mas ele precisa de espaço em disco local para isso. Você deve permitir um tamanho de cache grande, para que o rsync possa executar a maior parte de seu trabalho com o cache local, e o davfs2 fará o upload da maioria dos arquivos em segundo plano, quando o rsync já tiver terminado.
Werner continua sugerindo o seguinte
Isso pode ser uma desvantagem neste caso. Quando o rsync lê um arquivo no host remoto, ele deve ser transferido pelo davfs2 para o cache local primeiro (se ainda não estiver lá). Isso pode tornar o processo realmente desnecessário e lento. Como o rsync funciona apenas como um programa de cópia sofisticado no seu caso, pode ser melhor usar o cp. O cp tem uma opção (-u) para copiar apenas os arquivos mais novos que os do sistema de arquivos davfs2 (= smartdrive) e não precisaria ler os arquivos, mas apenas ler os metadados do arquivo como mtime.
Um comando como "diretório cp -pru / para / backup dav /" pode fazer o trabalho. Ele não deve baixar arquivos (como o rsync pode fazer, mas não tenho certeza) (consulte os manuais do cp e do rsync).
Opções?
Então, como o @Anthon sugeriu, você pode usar o cp -u
método para copiar os arquivos. Perceber que esse método considera apenas o tamanho de um arquivo como um fator em comparação, portanto, não é totalmente confiável.
Você não deve usar nada que apenas observe os tempos de modificação ao comparar arquivos cp -pru
,. Werner explica o porquê nesta discussão :
trecho em questão com tempos modernos
Quando você desmonta um sistema de arquivos davfs2 e o monta novamente mais tarde, os horários dos arquivos podem ter sido alterados de acordo com as informações de horário do servidor. Ferramentas como cp -pu e rsync não podem contar com esses horários para determinar quais arquivos foram alterados.
Portanto, considerando os vários problemas relacionados aos tempos de modificação, uma abordagem usando somas de verificação puramente parece um ajuste melhor:
$ rsync -avvz --omit-dir-times --checksum --human-readable --progress <local dir> <remote dir>
--max-size=250M --exclude '.*'
. Tenho certeza quecp
pode ser feito para fazer isso ... talvez canalizando a saída do find para cp? Mas ainda não sei como fazer isso. Se surgirmos uma solução, tentareicp -ru
. Obrigado