本地ftp同步文件,linux下本地文件与远端ftp同步的脚本实现

语言: CN / TW / HK

FTP作为一种简单便捷的文件共享技术,在许多企业内部得到使用。若启用FTP的验证控制,管理员更可对不同的用户设置不同的访问权限,控制用户对特定内容的访问。

IIS7服务器管理工具可以批量管理、定时上传下载、同步操作、数据备份、到期提醒、自动更新。IIS7服务器管理工具适用于Windows操作系统和liunx操作系统;支持Ftp客户端批量操作。

下载地址:IIS7服务器管理工具

本地ftp同步文件,linux下本地文件与远端ftp同步的脚本实现

目的:
1.希望当本地硬盘的某些特定目录中生成了新的特定格式的文件,且该文件的大小已经一段时间没有变化,
则上传到某FTP上的某目录。希望同时同步这样几个目录,不是仅同步一个目录。
文件一般是视频格式


2.同样,当另外某FTP上特定目录中生成了新的特定格式的文件,且该文件的大小已经一段时间没有变化,则下载到本地某目录。

FTP1》》》》本地》》》》》FTP2

也就是本地和FTP2都与FTP1同步

但FTP1和FTP2之间可以考虑用FXP也就是

FTP1》》》》本地

FTP1---------本地------------FTP2
》》》》》》》》》》》》》》》

但上面两者会发生冲突因为该FTP可能只允许单线程,FTP1发生变化时,应当先同步本地,再同步FTP2

解决方案

最近参考了一些网络上的脚本,初步编写了一个简单的从本地文件上传同步的SHELL脚本(本人水平有限见笑了),也就是该同步只使用上传命令,

复制内容到剪贴板
代码:
#timestamp=".timestamp"
tempfile="/tmp/ftpsyncup.$$"


user="username"
server="serverip"
RDB="/TEST/ANIME/"
RD[1]="[Darker than BLACK][黑色契约者]"
RD[2]="POLYPHONICA_神曲奏界"
RD[3]="CLAYMORE_大剑"
LDB="/var/ftp/comic/TV动画/连载中动画/"
LD[1]="[Darker than BLACK][黑色契约者]"
LD[2]="POLYPHONICA_神曲奏界"
LD[3]="Claymore_大剑"
count=0
timeouter=0










trap "/bin/rm -f $tempfile" 0 1 15 # zap tempfile on exit &sigs

  cd "$LDB"                                #change to local home directory

echo "open $server" > $tempfile
echo "user $user password" >> $tempfile
echo "cd $RDB" >> $tempfile

for ((i=1;i<=1;i++));do

   lcd ${LD[i]}

"cd ${RD[i]}" >>$tempfile

   for filename in  *.rmvb
   do
    if [ -f "$filename" ] ; then
     echo "put -c  \"$filename\"" >> $tempfile
     count=$(( $count + 1 ))
    fi
   done

done

echo "quit" >> $tempfile

echo "Synchronizing: Found $count files in local folder to upload."

if lftp < $tempfile ; then
echo "Done. All files synchronized up with $server"
fi

exit 0

分享到: