web-dev-qa-db-ja.com

Linuxの検索:検索の結果から「.snapshot」ディレクトリを除外するにはどうすればよいですか?

findコマンドを使用して10分より古いすべてのファイルを検索し、それらをリモートサーバーにコピーするrsyncスクリプトを作成しました。

コードの関連部分は次のとおりです。

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

私が抱えている問題はfindコマンドに関連しています。スクリプトを実行すると、スクリプトがハングして続行しないときに次の応答が返されます。

[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

私は次のことを試しましたが、役に立ちませんでした:

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

Findコマンドの出力から.snapshotディレクトリを除外できるようにするには、コマンドはどのように表示されますか?

2
Itai Ganot

find $filedir -name .snapshot -Prune -o -name \*.gz -mmin +10 -printそれを行う必要があります。

4
Calle Dybedahl