标签归档:OpenWRT

SyncY多任务多线程版发布(v2.0.0)

SyncY v2版正式发布了,相比v1版本变化很大,可以支持多任务、多线程,同时可以设定限速时间段。多线程大家都很了解,pc上的下载程序都支持,不多说,让大家赶快来体验能在路由上运行的多任务多线程同步软件。

V2版程序新增3个配置项(speedlimitperiod、tasknumber、threadnumber):

speedlimitperiod:限速时间段,在此时间内按照设定设置的最大上传或下载速度限速,设置格式与运行时间段相同,默认值为0-0,表示不限速;
tasknumber:同时同步的任务数,即同时上传或下载的文件个数,默认值为2,最小值为1;
threadnumber:每个任务的线程数,该设置值表示每个任务的最大线程数,默认值为2,最小值为1.

v2版内存耗用比v1版大很多,根据我观察看,每增加一个线程需要耗用2M左右的内存,默认情况下(2任务2线程)有2个下载任务在运行时,内存耗用在20M左右(同步文件数量大且开启同步信息缓存时内存耗用还会增加),32M内存的路由跑起来压力很大,64M及以上的应该没什么问题。

下载地址:http://www.syncy.cn/index.php/download/

配置文件说明:http://www.syncy.cn/index.php/syncyconfighelp/

SyncY更新(Python 1.0.16)

修改内容:

1、修复了秒传文件失败后不能上传文件的bug(此bug只在1.0.15版本中出现,本是想解决百度偶发的误报没权限访问文件的问题,却不料导致秒传文件失败后不能正常上传文件)。
2、修复了一个在较低概率情况下匹配文件列表失败,导致程序崩溃的bug。

luci版升级的,如不想重新绑定及设置同步目录,请先备份/etc/config/syncy文件,安装完之后恢复此文件。非luci版的,直接替换syncy.py文件

进入下载页面

SyncY更新(Python 1.0.15)

​修改内容:

1、完善了对部分发行版系统luci的支持。
​2、新增分片下载模式,解决在某些特殊情况下下载下来的文件大小与云端大小不一致。

luci版升级的,如不想重新绑定及设置同步目录,请先备份/etc/config/syncy文件,安装完之后恢复此文件。
非luci版的,直接替换syncy.py文件,另外新增如下配置项:

    option slicedownload ‘on’  #是否开启分片下载文件,on-开启,off-关闭。

详细配置文件设置请浏览配置文件说明

说明:

slicedownload设置为on后,软件将按照blocksize设置的大小来分片下载文件,只有当相应的分片一次下载成功后才会合并大原始文件中,否则将重新下载整个文件,这有效了解决当经常发生curl(18)错误后,下载下来的文件大小与云端大小不一致,同时也实现了断点下载。开启后下载大文件的整体平均下载速度可能比关闭后有所降低,但可靠性要高些。

slicedownload设置为off时,超过blocksize设定值的文件下载也有断点下载,只是断点下载有curl来控制,这样在少数情况下下载下来的文件与云端大小不一致,syncy将删除下载的文件,如果文件特别大,将浪费很多时间,并有可能多次下载完后都发现文件不一致。

之前有网友提出,下载下来的文件能否检查md5来确定是否正确下载,通过对百度接口的再次检查,发现此功能是实现不了的,只要是分片上传的文件,百度返回的md5码不是文件的真实md5码,因此没法比对。同时该网友提出刚下载的文件不能秒传上传,这种情况是存在的,经过我的测试,分片上传的文件,在上传完成后再次上传是没有秒传,说文件不存在,而第二天则可以秒传,因此百度后台有些工作也不是实时进行的,可能有单独的服务器来延时完成相应工作,这就有个时间差。

SyncY-Python-Luci 1.0.10版发布(适用于OpenWrt)

luci的界面总算弄出来了,openwrt系统可以在界面上进行绑定操作、修改配置文件、查看错误日志了。其他类型系统还只能通过ssh终端来操作。新版本与之前版本的配置文件不通用。

同时授权网址更改为:https://syncyhome.duapp.com/syserver

下载地址:http://www.syncy.cn/index.php/download/
(openwrt系统只需要下载SyncY-Pyton-v1.0.10文件夹中的ipk文件)

SyncY安装配置方法

Perl v1.0.5版下载

SyncY配置文件说明

Perl 1.0.7和Python 1.0.13版及之后版本,配置文件说明如下:
已添加V2多线程版新增的配置项说明

config syncy

option syncyerrlog ”  #错误日志文件名(必须包含完整路径名),为空时则不记录。(V2.2.0版取消了此配置项,)
option syncylog ”    #日志文件名(必须包含完整路径名),为空时则不记录。
option blocksize ’10’  #分片上传或下载大小,单位M。
option ondup ‘rename’  #重名文件处理方式,rename:重命名,overwrite:覆盖。
option datacache ‘on’    #是否开启同步信息缓存,on:开启,off:关闭。
option slicedownload ‘on’    #是否开启分片下载,on:开启,off:关闭(python 1.0.15版新增)。(v2多线程版删除了此配置项,多线程必须分片下载)
option excludefiles ‘*/Thumbs.db’  #排除文件设置,支持通配符*,多个排除选项用分号(;)隔开。
option listnumber ‘100’  #每次获取云端文件列表数量。
option retrytimes ‘3’   #发生错误后的重试次数。
option retrydelay ‘3’   #发生错误后的重试延时。
option maxsendspeed ‘0’   #最大上传速度,单位 byte/s,0表示不限速。
option maxrecvspeed ‘0’   #最大下载速度,单位 byte/s,0表示不限速。
option syncperiod ‘0-24’   #同步程序运行时间段。
option syncinterval ‘3600’   #每次同步完成后到下次同步间隔时间。
option speedlimitperiod ‘0-0’   #限速时间段 (v2多线程版新增)
option tasknumber ‘2’        #同时同步的任务数(v2多线程版新增)
option threadnumber ‘2’     #每个任务的线程数(v2多线程版新增)

config syncpath

option localpath ‘/mnt/example’  #本地同步目录
option remotepath ‘/example’     #云端目录(与/我的应用程序/SyncY的相对目录)
option enable ‘1’                #1-启用,0-停用
option synctype ‘upload’         #同步类型,支持的类型有:upload,upload+,download,download+,sync
option encryption ‘0’     #是否启用加密,0-不启用 ,1-启用、采用ARC4加密算法,2-启用、采用Blowfish加密算法,3-启用、采用AES加密算法   (v2.5.0版新增)
option encryptkey ‘this is encrypt key’     #加密密钥,必须为8-32位字符   (v2.5.0版新增)

旧版本配置文件说明如下(新版配置文件相应项与旧版相同,可参照旧版说明):

以下说明适合Python和Perl版,OpenWrt系统上安装的luci版,请对照说明设置相应的值即可。

syncpath=”
#  同步目录设置
#Perl 1.0.7和Python 1.0.13版取消了此配置项。

#  把本地指定的目录同步至服务器端指定的目录,有多个目录需要同步时以分号(;)隔开
#  例:’/mnt/sda1/Backup:/Backup:0;/mnt/sda1/album:/album:sync’
#  格式为:本地目录:服务器端目录:同步类型(localdir:remotedir:synctype),服务端目录是相对于“/我的应用程序/SyncY”目录的相对目录
#  文件名或路径中不能有以下字符:\\?|”<>:*  ,根目录中还不能有单引号(‘)
#  文件名或路径名开头结尾不能是“.”或空白字符,空白字符包括:\r,\n,\t,空格,\0,\x0B
#  synctype:[0-4]
#    [0,upload]:只检查本地文件并上传修改过的文件,忽略远端的所有修改或删除,远端删除的也不再上传
#    [1,upload+]:远端是本地的完全镜像,忽略远端的修改,远端删除的文件在下一次同步时将上传,远端新增的文件如果本地不存在,将不做任何变化
#    [2,download]:只检查远端文件是否修改,如有修改下载到本地,忽略本地的修改;如本地文件被删除,将不再下载
#    [3,download+]:检查远端和本地文件,如远端有修改,下载到本地,忽略本地的修改;如本地有文件被删除,将重新下载
#    [4,sync]:同时检查远端和本地文件,如只有远端被修改,则下载到本地;如只有本地修改,则上传到远端;如本地和远端都被修改,则以冲突设置方式为准。
#    0-3模式下,目的端自主新增的文件不会被删除
#   4模式下,当远端目录更改后,请删除本地同步根目录下的.syncy.info.db文件,否则在下次同步时将会删除本地的所有文件(系统会认为远程文件不需要被用户删除,也会删除本地的相应文件)

syncyerrlog=”
#  错误日志文件(包含路径名),为空时将输出至错误输出(默认屏幕)
# 设置值必须是指向文件,文件可以不存在(不存在时程序自动创建),父目录必须存在,不能指向已存在的目录
# 例:/mnt/sda1/log/syncyerr.log

syncylog=”
#  运行日志文件(包含路径名),为空时将输出至标准输出(默认屏幕)
# 设置值必须是指向文件,文件可以不存在(不存在时程序自动创建),父目录必须存在,不能指向已存在的目录
# 例:/mnt/sda1/log/syncy.log

blocksize=’10’
# 分片上传块大小
#  默认值为 10 (10M)
#  单位 M,此大小决定了能上传的最大文件大小(文件最大大小 = blocksize * 1024)
#  分片大小必须大于等于1(1M)

ondup=’rename’
# 重名处理方式
#  默认值为 ‘rename’
#  [rename or overwrite]
#  存在重名文件时是覆盖同名文件,还是重命名文件
#  当同步模式为0,重命名新文件,命名规则为“文件名_日期.后缀”
#  同步模式为1和2时,将重命名旧文件,命名规则为“文件名_old_日期.后缀”
#  同步模式为3时,则ondup只能为overwrite,设置成rename将不生效

datacache=’on’
# 是否开启缓存
# 默认值为 ‘on’
# 同步信息数据缓存,启用有助于提高同步速度
# 请根据你路由内存的大小来决定是否开启

excludefiles=’*/Thumbs.db’
# 排除文件或文件夹,将会同时应用于本地和远端,请合理设置此值,过多的排除选项将会降低系统的处理速度
# 有多个排除项时用分号(;)隔开
# 例:’*/Thumbs.db;*/excludefilename.*’
# 默认排除以“.tmp.syy”结尾的文件,此类型文件用于记录分片上传或断点下载信息,上传或下载完成后将自动删除,如原文件被手动修改,建议同时删除此文件
# 只支持通配符*? (*代表零个或更多个任意字符,?代表零个或一个字符)

listnumber=’100′
# 每次检查获取远程的文件数
# 默认值为 100
# 同步时每次获取的远端文件列表数量,数量过大时返回的字符串长度很大,将占用更多的内存
# 路径长度较长时也应适当缩小此值

retrytimes=’3′
#失败重试次数(发生错误时的重试次数)
# 默认值 3 次

retrydelay=’3′
# 重试延时时间(秒)
# 默认值为 3 秒

maxsendspeed=’0′
# 最大上传速度(字节/秒)
# 默认值为 0(不限速)

maxrecvspeed=’0′
# 最大下载速度(字节/秒)
# 默认值为 0(不限速)

syncperiod=’0-24′
# 运行时间段
# 默认值为 ‘0-24′
# 运行时间段(小时)
# 判断规则为[0,24)即包含设定的开始时间截止于设定的结束时间
# 如想从零点至6点之间才允许运行,应设置为’0-6’,如24小时都运行,则设置为’0-24’
# 如果当前时间不在设定范围内,将每5分钟检查一次,如果设为空,则只运行一次后退出

syncinterval=’3600′
# 同步间隔时间
# 默认值为 3600(1小时)
# 每次同步完成之后与下一次开始同步的间隔时间
# 单位:秒

SyncY同步软件Python版发布,Bash和Perl版同时更新至1.0.4

        Python版的SyncY经过几天的改写完成了,现在可以支持2G及4G以上的大文件了,只是安装包有点大,要4M左右的空间,Perl的1.0.4版是个需求包精简之后的版本,只需要1M左右的空间,但是同样不能支持2G以上的大文件,这个是openwrt上Perl语言环境的问题,无法解决呀,我在centos上试过是可以支持2G以上大文件的。Bash版只是做了bug修复,Perl版和Python版数据格式和配置文件都相同,bash版数据格式和配置文件与Perl和Python版不同,如果之前用过bash版,之后换成Python或Perl版请按照配置文件里说明的方法转换下同步数据信息
详细的绑定步骤与之前的版本一样,这里就不在说了,不清楚的参见帖子http://hi.baidu.com/wishinlife/item/d08217555d235105e6c4a5c1。
1、软件下载地址:http://pan.baidu.com/s/1o6nZBOA
2、Python版的安装:
在openwrt12.09系统必须安装如下包:
Python
python-mini
python-curl
kmod-nls-utf8和openssl应该也是需要的(没有卸载试过是不是一定要)
安装以上包需要4M左右的空闲空间,如空间空间不足,只有通过u盘来扩展了,这个是没法精简了,除非有能人自己编译把不需要的删除了。
如是其它版本系统,请对应的安装相应的包。
3、Perl v1.0.4版的安装:
1.0.4 Perl版是精简过后的,安装包少了不少,安装空间占用在1M左右,安装包如下:
perl
perlbase-essential
perlbase-digest
perl-www-curl
perlbase-xsloader
perlbase-dynaloader
perlbase-config
perlbase-autoloader
perlbase-utf8
如是其它系统,请对应的安装相应的包,在cpan.org网站上可通过perlbase-后面的名称来搜索相应的包并下载源码,各个包还可能依赖别的包,如运行报错,提示缺少包,请根据提示安装相应的包。
4、Bash版只是修复了一些bug,安装方法跟之前版本相同,详细安装方法见帖子:http://hi.baidu.com/wishinlife/item/b6241c023a8eb2ffa0103458。
5、设置自动启动(只适用于Perl和Python版):
Openwrt实现方法是在/etc/init.d目录下创建个syncy文件并授予可执行权限,文件内容如下:
#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2011 OpenWrt.org

START=99
STOP=10

start() {
syncy.py & #Perl版请改成syncy.pl,如果程序文件不是放在/usr/bin或是其他PATH路径中,请写完整路径。
}

stop() {
sypid=$(cat /var/run/syncy.pid) #如修改了程序文件中的__PIDFILE__变量,此处也需要修改。
kill $sypid
}
保存后运行命令 /etc/init.d/syncy enable
这样就可以自动启动了,但现在还没有运行,可运行命令/etc/init.d/syncy start 来启动程序,也可以通过命令/etc/init.d/syncy stop来停止程序,有管理界面的也可以在启动项里来启动或停止同步程序。
其他类型的系统,请参照此方法来写,不会的百度搜索下。