我编写了一个rsync脚本,它使用find命令查找所有超过10分钟的文件并将其复制到远程服务器。
代码的相关部分是:
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目录?
find $filedir -name .snapshot -prune -o -name \*.gz -mmin +10 -print应该这样做。