我用的是Bestsync,就是觉得 *** 作简单,容易上手,也不占用太多系统内存,我用了很久了,感觉还不错了
举个例子,比如:
1 你本地装上软件以后,在主菜单里面 编辑-->追加任务
文件夹1选择 驱动盘中要备份的文件夹位置
文件夹2选择 选择FTP(填写FTP地址等相关参数)
同步方向为 文件夹2 --》文件夹1
在 FTP设定 下面填写服务器地址,账户名,密码等信息)
然后选择 完成 按钮
2 在主界面下,双击你刚建立的任务,会d出属性对话框
3 选择“日程”属性页,勾选最后一个复选框“按指定日程启动任务”,然后在下面选择你想同步的具体时间点就Ok了~~嘿嘿
首先去下载个 FTPExau3
给段源码你研究吧
#include <FTPExau3>
#include <Arrayau3>
Local $path
$server = '19216811' ;服务器
$name = 'admin' ;用户名
$pass = 'admin' ;密码
$Port = '21' ;端口
$path = "c:\a1乡村\" ;远程路径,FTP的路径。
$RemoteDir = $path ;远程根路径转换,不用管它。
$LocalDir = "D:\存储软件\au3\进行中\FTP同步\实验室1\同步路径\" ;本地路径,你想让文件下载到哪里?
$LocalDir = flocalDir($RemoteDir, $LocalDir);转换首目录,不用管
;~ MsgBox(0, "$LocalDir", $LocalDir)
ftp($server, $name, $pass, $Port, $path, $RemoteDir)
Func ftp($server, $name, $pass, $Port, $path, $RemoteDir)
;说明:主要函数,搜索,下载
$Open = _FTP_Open('MyFTP') ;打开一个FTP会话
$Conn = _FTP_Connect($Open, $server, $name, $pass, 0, $Port) ;连接到ftp服务器
_FTP_DirSetCurrent($Conn, $path)
$aFile = _FTP_ListToArrayEx($Conn, 0, 0) ;列目录(0=文件和目录,1=目录,2=文件)(格式0=mm/dd/yyyy,1=yyyy/mm/dd)
;~ _ArrayDisplay($aFile)
;~ MsgBox(0,"显示","共(" & $aFile[0][0] & ")个")
;~ MsgBox(0,"$aFile[$i][0个]文件名",$aFile[0][0])
For $i = 1 To $aFile[0][0]
If $aFile[$i][2] = 16 And $aFile[$i][0] <> "" And $aFile[$i][0] <> "" Then
;~ $path=$path&$aFile[$i][0]&"\"
;~ MsgBox(0, "$path", $path & $aFile[$i][0] & "\", $RemoteDir)
ftp($server, $name, $pass, $Port, $path & $aFile[$i][0] & "\", $RemoteDir)
EndIf
If $aFile[$i][0] <> "" And $aFile[$i][0] <> "" And $aFile[$i][2] <> 16 Then
;检验
;~ MsgBox(0,"",$aFile[$i][0])
$fname = $aFile[$i][0];文件名
$sync = ftpsync($LocalDir, $RemoteDir, $path, $fname)
;~ MsgBox(0,"是否存在文件返回信息",$sync)
;~ If $fname = "PiViewmdb" Then
;~ MsgBox(0, "$sync", $sync[0]&@LF&$sync[1])
;~ EndIf
Select
Case $sync[0] = 1;未发现文件
$ftp_download = _FTP_FileGet($Conn, $path & $fname, $sync[1], False) ;下载文件(True=覆盖 False=不覆盖(默认))
;~ MsgBox(0, $path & $fname, $sync[1])
Case $sync[0] = 2;发现有同名文件
$ftpsize = _FTP_FileGetSize($Conn, $path & $aFile[$i][0])
$localsize = FileGetSize($sync)
;~ MsgBox(0, "大小对比", $ftpsize & "-" & $localsize)
If $ftpsize <> $localsize Then
;~ MsgBox(0, "大小对比不成功", $ftpsize & "-" & $localsize)
;~ MsgBox(0, "大小对比不成功", $path & $aFile[$i][0]& "-" & $sync)
$ftp_download = _FTP_FileGet($Conn, $path & $fname, $sync[1], False)
;~ MsgBox(0,"$ftp_download",$ftp_download)
EndIf
Case Else
MsgBox(0, "意外错误", "搜索失败")
EndSelect
;~ MsgBox(0,"次数",$aFile[$i][0])
EndIf
;~ MsgBox(0,"显示","名 = " & $aFile[$i][0] & @CRLF & $aFile[$i][1] & @CRLF & $aFile[$i][2] & @CRLF & $aFile[$i][3] & @CRLF & $aFile[$i][4] & @CRLF & $aFile[$i][5])
Next
;$aFile[$i][0个]文件名
;$aFile[$i][1]文件大小
;$aFile[$i][2]文件属性
;$aFile[$i][3]文件修改日期-时间
;$aFile[$i][4]文件创作日期-时间
;$aFile[$i][5]文件通入日期-时间
$Ftpc = _FTP_Close($Open) ;关闭 _FTP_Open 打开的回话
EndFunc ;==>ftp
;~ Func Download
;~ 用途:下载一个FTP上的文件
;~ $ftp_download = _FTP_FileGet($Conn, "111\test222txt", "e:\au3_ftp\test222txt", False) ;下载文件(True=覆盖 False=不覆盖(默认))
;~ EndFunc ;==>ftp
Func ftpsync($LocalDir, $RemoteDir, $path, $fname);本地路径,远程根路径路径,变化中的远程路径,要下载的文件名。
Local $loc12
$loc12 = _ArrayCreate("0", "0")
;~ 说明:位置错误返回0,失败返回1,成功返回路径。主要用来判断是否有相同的文件。
If FileExists($LocalDir) Then;看看本地是否存在,要是不存在就创建一个。
Else
DirCreate($LocalDir)
EndIf
Local $len = StringLen($RemoteDir)
Local $len1 = StringLen($path)
$New = StringRight($path, $len1 - $len)
;~ MsgBox(0, "$New", $New)
;~ MsgBox(0, "$fname", $fname)
If FileExists($LocalDir & $New) Then
Else
;创建目录
DirCreate($LocalDir & $New)
EndIf
;~ MsgBox(0,"需要判断是否存在的文件",$LocalDir & $New & $fname)
If FileExists($LocalDir & $New & $fname) Then
;判断文件大小
$loc12[0] = 2
$loc12[1] = $LocalDir & $New & $fname
;~ Return $LocalDir & $New & $fname
;~ MsgBox(0,"文件是否存在判定-是存在",$LocalDir & $New & $fname)
Else
;创建目录下载文件
;~ Return 1
$loc12[0] = 1
$loc12[1] = $LocalDir & $New & $fname
EndIf
Return $loc12
EndFunc ;==>ftpsync
Func flocalDir($RemoteDir, $LocalDir)
;~ 说明:创建首目录
$LOG = StringSplit($RemoteDir, "\")
If $LOG[0] <= 1 Then;如果呢~ 只有根目录盘那就是C盘根目录
Local $result = StringLeft($RemoteDir, 1)
$LocalDir = $LocalDir & $result & "盘根目录\"
Return $LocalDir
Else;如果不是那远程目录的最后一个文件夹,便是根目录的最后一个文件夹了。
$Loc1 = $LOG[$LOG[0] - 1]
$LocalDir = $LocalDir & $Loc1 & "\"
Return $LocalDir
EndIf
EndFunc ;==>flocalDir如果你还没用上传使用的程序。可以使用下面的代码生产一个FTP上传所需的可执行程序。如果有了直接看2
FtpClient fc=new FtpClient("ftp://17216202","用户名","密码");
fcUpload(new FileInfo(@"要上传文件路径名","上传后该文件以什么名字在ftp服务器上显示");
consoleWriteLine("ok");
以上是一段c#写的ftp上传文件的代码。FtpClient是一个第三方帮助文件,要引用到程序中
在vs中编译运行后得到可执行文件(exe)
2然后打开控制面板->任务计划->添加任务计划(双击)->任务计划向导(点击下一步)->浏览->选择已有的FTP上传程序(或者选中刚刚生产的可执行文件)
接着就按个人需要点击就可以了。rem -----------脚本开始---------------
@echo on
set ftpfile=putfilesftp
set logfile=putfileslog
echo open (IP地址) (端口) > "%ftpfile%"
rem 把下面行中的 username和password改为你的用户名和密码
echo user (username) (password) >> "%ftpfile%"
rem ------------------------------
echo bin >> "%ftpfile%"
rem 进入FTP server 中的"X"目录
echo cd (ftp目录) >> "%ftpfile%"
rem ------------------------------
rem 进入本地C盘根目录
echo lcd d:\ >> "%ftpfile%"
rem ------------------------------
echo put 1TXT >> "%ftpfile%"
echo quit >> "%ftpfile%"
echo -------------------------------- >> "%logfile%"
date /t >> "%logfile%"
time /t >> "%logfile%"
echo -------------------------------- >> "%logfile%"
ftp -n < "%ftpfile%" >> "%logfile%"
del "%ftpfile%"
@echo on
rem -----------脚本结束---------------
该类的软件有很多,NcFTP,8Uftp,IIS7服务器管理软件都可以同步。
1IIS7服务器管理软件能够批量管理FTP,定时上传和下载,自动更新的功能。
此外,它不仅可以管理ftp,同时也是vnc的客户端iis7服务器管理工具,是服务器批量管理集成器windows与linux都可以集成管理,可谓是非常方便 NcFTP
2NcFTP是在UNIX上的FTP程序,世界各地都在使用它。相比其他软件,它更可靠,更安全。它广泛运行在Windows、Mac OS X和Linux等大型平台上。它的免费工具经由艺术协议授权。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)