喜欢用MyBase来管理自己的知识,但一直以来因为多台电脑(主要是工作用机和自己电脑)间的同步问题,没有能够很得的收集知识,因为怕电脑间的mybase文件版本不同。今天终于想到了一个较为好的办法,那就是用FTP并结合任务调度进行自动的同步。
目标:
需要自动保持公司电脑和家里电脑FileBase.nyf这个文件的同步,不需要过多的人工参与。
实现原理:
1.估计一下每天的关机时间,利用Windows的任务调度在这个时间的前几分钟将文件上传至ftp服务器。
2.同样利用Windows的任务调度,在机器启动时,自动备份本地FileBase.nyf文件,并从ftp服务器下载文件。
实现方式(以本地存放路径D:\Application Data\mybase、本地任务调度文件:D:\Application Data\schedule、文件存放在远程服务器flashlm.com的temp目录下为例):
1.文件上传
mybase-upload.bat:
echo "==================upload schedule %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%==================" >>"D:\Application Data\schedule\mybase-update.log" rem记录动作时间到日志文件mybase-update.log中
ftp -s:"D:\Application Data\schedule\mybase-upload.txt" flashlm.com >>"D:\Application Data\schedule\mybase-update.log" rem 调用mybase-upload.txt里的命令来ftp上传文件,并记录日志。
mybase-upload.txt:
flashlm rem ftp用户名
123456 rem ftp密码
cd temp rem进入目录
send "D:\Application Data\mybase\FileBase.nyf" rem上传文件
quit 退出
2.文件下载
mybase-download.bat:
echo "=================download schedule: %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%=============" >>"D:\Application Data\schedule\mybase-update.log" rem记录动作时间到日志文件mybase-update.log中
set bakname=FileBase_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.nyf rem 根据当前日期时间生成备份文件名
ren "D:\Application Data\mybase\FileBase.nyf" "%bakname%" rem 重命名(备份)
ftp -s:"D:\Application Data\schedule\mybase-download.txt" flashlm.com >>"D:\Application Data\schedule\mybase-update.log" rem 调用mybase-download.txt里的命令来ftp下载文件,并记录日志。
mybase-upload.txt:
flashlm rem ftp用户名
123456 rem ftp密码
cd temp rem 进入服务器目录
lcd "D:\Application Data\mybase" rem 切换本地目录到目标路径
get FileBase.nyf rem 下载文件
quit
3.建立任务
根据实际需要,在“我的电脑-->控制面板-->任务计划”里添加若干个计划,按时进行上传下载即可。
还可以将bat建立快捷方式,必要时手工同步。
如果大家有其它好的文件同步方法,欢迎分享。