Como evitar duplicatas ao copiar arquivos que foram renomeados no destino

1

Eu tenho que tirar fotos de uma pasta - com subpastas que são atualizadas automaticamente - com suas extensões.

Estes arquivos têm que ser copiados em uma pasta onde um site baseado em PHP irá editá-los (renomeando e criando um arquivo XML) para serem baixados e integrados em um feed XML.

Por causa da função renomear o script, quando eu executo o ganho da cópia, todos os arquivos são duplicados , porque o script já renomeou os originais.

Eu tentei algumas coisas com rsync , mas estou procurando algo mais poderoso porque não posso copiar arquivos com um "histórico" externo.

#!/bin/bash
find  '/home/name/picture' -name '*.jpg' | while read FILE ; do rsync --backup  --backup-dir=incremental --suffix=.old  "$FILE" /var/www/media ; done
wget --spider 'http://myscript.php' ; 
#exit 0

PS: Como uma pequena adição, gostaria de substituir '.' com um 'espaço' logo após a cópia *.jpeg . Meu script PHP tem algum problema para definir arquivos com vírgula por causa da extensão. Estou falando de um comando com find - como fiz antes - com uma função sed ? É uma boa ideia?

    
por Benoitt 14.11.2011 / 17:05

1 resposta

0

Você pode usar o seguinte:

#!/bin/ksh
DEST_DIR=/destination
HIST_DIR=/images_bck
SOURCE_DIR=/images

find ${SOURCE_DIR} -name "*.jpg" >${HIST_DIR}/tmp.file
exec 3<${HIST_DIR}/tmp.file

while read file <&3;do
  file_name=$(basename "${file}")
  if [ ! -f "${HIST_DIR}/${file_name}.old" ];then
    cp -p "${file}" "${HIST_DIR}/${file_name}.old"
    cp "${file}" "${DEST_DIR}"
  fi
done
exec 3<&-
[ -f ${HIST_DIR}/tmp.file ] && rm -f ${HIST_DIR}/tmp.file

Para novos usuários;

sudo apt-get install ksh

é um kornshell, depois de alterar DEST_DIR, HIST_DIR, SOURCE_DIR e fazer

ksh -v ./MySuperScript.ksh

    
por 28.11.2011 / 22:53