Linux find: Como excluir o diretório “.snapshot” dos resultados do find?

1

Eu escrevi um script rsync que usa o comando find para encontrar todos os arquivos com mais de 10 minutos e copia-os para um servidor remoto.

A parte relevante do código é:

print_log "------ Starting $0 -------"
find $filedir -name \*.gz -mmin +10 >> $varfile
for line in $(awk -F"/" '{print $4}' $varfile); do
  rsync -raPv --ignore-existing --remove-source-files --chmod=u+rwx $filedir/$line rsync://[email protected]/hpfiles/ --password-file /etc/rsync.passwd  
done

O problema que tenho está relacionado ao comando find, quando eu executo o script, recebo a seguinte resposta enquanto ela fica parada e não continuo:

[appadmin@srv01 ~]$ /nfs/hadooper/rsync_hpfiles-lock.sh >> /var/log/rsync_hpfiles.log
find: File system loop detected; '/mass1/hpfiles_staging/.snapshot' is part of the same file system loop as '/mass1/hpfiles_staging'.
find: File system loop detected; '/mass1/hpfiles_staging/.snapshot' is part of the same file system loop as '/mass1/hpfiles_staging'.
^C^Z

Eu tentei as seguintes coisas, mas sem sucesso:

find $filedir -name \*.gz -a ! -name ".snapshot" -mmin +10 >> $varfile
find $filedir -name \*.gz -a ! -type d -name ".snapshot" -mmin +10 >> $varfile
find $filedir -name -a ! -path "*/.snapshot/*" \*.gz -mmin +10 >> $varfile

Como meu comando deve procurar para poder excluir o diretório .snapshot da saída do comando find?

    
por Itai Ganot 21.09.2015 / 09:47

1 resposta

3

find $filedir -name .snapshot -prune -o -name \*.gz -mmin +10 -print deve fazê-lo.

    
por 21.09.2015 / 09:54