Tenha um script de shell:
Observe que ele faz algumas suposições, que documentamos abaixo.
#!/bin/sh
# first, upload the directory structure
# be REALLY sure that it made it intact!
while true
do
# try to upload it:
rsync $flags --filter="+ */" --filter="- *" $source $destination
# it uploaded fine? cool, break the loop (else try again):
[ "$?" -eq 0 ] && break
done
# now the files
for file in $(find $source -not -type d)
do
# again, be REALLY sure they copied okay!
while true
do
# try to upload it:
rsync $flags $file $destination/$file
# it uploaded fine? cool, break the innermost loop (else try again):
[ "$?" -eq 0 ] && break
done
# delete the local copy of the file:
rm $file
done
Este script pressupõe o seguinte:
- Que
$source
,$destination
e$flags
foram definidos como variáveis de ambiente ou substituídos no script pela origem, destino e qualquer outrarsync
flags que você deseja usar. (Não substitua$?
ou$file
.) - Esse
$source
é um caminho relativo. - Esse
rsync
sairá com um status diferente de zero se por qualquer motivo o$file
especificado não tiver sido copiado 100% com êxito. - Que você testou em dados menos importantes, porque não o fiz.
Os parâmetros rsync
--filter
foram copiados de um post no blog por um cara chamado Phil . Espero que esteja tudo bem com ele. :)