1. Problemas com caracteres especiais em nomes de arquivos
Existem caracteres especiais nos nomes dos arquivos? Dependendo do sistema de arquivos para o qual você está escrevendo esses arquivos, eles podem não permitir o prefixo de arquivos com um ponto ( .
), por exemplo.
2. Problemas com tempos de modificação do rsync e webdav2
Me deparei com essa postagem no blog , onde um problema é descrito com rsync
tendo um problema ao gravar / controlar os tempos de modificação de arquivos nos diretórios webdav2 mounted 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/
Esta é uma maneira legal de usar rsync
, mas é apenas comparar arquivos com base no tamanho deles agora, não em suas somas de verificação.
3. Problemas com o davfs2 (WebDAV)
Me deparei com este tópico intitulado: rsync via davfs2? no WebDAV (davfs) fórum sobre no sourceforge. Alguém estava perguntando sobre uma situação semelhante em que eles queriam usar o WebDAV para montar um provedor de armazenamento online e executar rsync para o armazenamento montado via WebDAV. Isto é o que um dos desenvolvedores (Werner Baumann) do WebDAV tinha a dizer sobre este tópico .
trecho da resposta da Werner
davfs2 will only upload complete files. It can not do the incremental stuff rsync usually does, and that makes rsync very
efficient.
davfs2 uses a local cache on disk. This will make it more responsive and your application should profit from this too. But it needs local
disk space for this. You should allow for a large cache size, so rsync
can do most of its work with the local cache, and davfs2 will upload
most of the files in the background, when rsync has already finished.
Werner continua sugerindo o seguinte
This could be a disadvantage in this case. When rsync reads a file on
the remote host, it must be transfered by davfs2 into the local cache
first (if it is not already there). This could make the process really
and unnecessary slow. As rsync only works as a sophisticated
copy-program in your case, it might be better to use cp instead. cp
has an options (-u) to copy only files that are newer than the ones in
the davfs2 file system (= smartdrive) and it would not need to read
the files, but only reads file meta data like mtime.
A command like "cp -pru directory/to/backup dav/" might do the job. It
shold not download files (like rsync might do, but I am not sure)
(please look at the manuals of cp and rsync).
Opções?
Assim como o @Anthon sugeriu, você pode usar o método cp -u
para copiar os arquivos. Percebendo que esse método considera apenas o tamanho de um arquivo como um fator de comparação, por isso não é totalmente confiável.
Você não deve usar nada que apenas observe os horários de modificação ao comparar arquivos, cp -pru
. Werner explica por que neste tópico :
trecho sobre problema com tempos de modificação
When you unmount a davfs2 file system and mount it again at some later
time, file times may have changed according to the time information
from the server. Tools like cp -pu and rsync can not rely on these
times to determine what files have changed.
Então, considerando as várias questões que envolvem os tempos de modificação, uma abordagem que usa apenas checksums parece ser mais adequada:
$ rsync -avvz --omit-dir-times --checksum --human-readable --progress <local dir> <remote dir>