我的服务器上有一个文件夹,它从运行在另一台服务器上的ftp进程获取文件。
我需要的是,每当新文件出现在目录中时,将这些文件互换地移动到另外两个网络位置。(以负载平衡的方式-第一个文件到Location1,下一个文件到位置2,位置1旁边同样)
我使用incrontab来运行bash脚本来完成这个任务。
这样做最合适的方法是什么?
这就是我要做的方法。这是否实现这一目标的最佳方法?
incrontab:
/myserver/monitored_folder IN_CREATE /root/scripts/move_files.sh $#movefiles.sh bash脚本(伪):
start
read var from file1
if var is odd
move $# to NetworkLocation1
else
move $# to NetworkLocation2
end if
increment var
write var to file1
end发布于 2014-07-07 08:23:27
我已经实现了。它很好用。
incrontab:
/data/source_folder/ IN_CREATE /path_to_script/file_delivery.sh $#Bash脚本:
#!/bin/bash
#log file location
logfile=/var/log/file_delivery.log
exec > $logfile 2>&1
read var < var.dat
rem=$(( $var % 2 ))
#action here
sleep 30
if [ $rem -eq 0 ]; then
scp /data/source_folder/$1 root@SERVER1:/path_on_server1/dest_folder
rm -f /data/source_folder/$1
echo "$(date +"%y-%m-%d-%H:%M:%S") - file $1 has been moved to server1"
else
scp /data/source_folder/$1 root@SERVER2:/path_on_server2/dest_folder
rm -f /data/source_folder/$1
echo "$(date +"%y-%m-%d-%H:%M:%S") - file $1 has been moved to server2"
fi
var=$((var+1))
echo $var > var.dat发布于 2014-07-04 10:09:36
你有一个相当简单的方法,这似乎很好。我建议的唯一其他方法是使用一个简单的切换(变量为0/ 1):
let toggle=0
if test "$toggle" -eq 0; then
move to NetworkLocation1
((toggle+=1))
else
move to NetworkLocation2
((toggle-=1))
fi这将确保基于每个文件的NetworkLocation1 / NetworkLocation2平衡,而不是文件中的奇数/偶数变量。好好想想。
https://stackoverflow.com/questions/24570497
复制相似问题