XFile

关于XFile XFile设置 利用XFile打造家用文件服务系统 移动端应用 开发历史 下    载 授    权 联系我们

XFile服务器数据同步和备份恢复操作

 

1 家用文件服务器的用途

2 家庭装修时网络结构的布局

3 家用文件服务器硬件采购和组装

4 Windows平台优化部署

5 Linux平台的安装部署

5 服务器端XFile软件的 参数设置

6 手机 平板客户端软件的安装和设置

7 电脑端客户端的使用

8 常见问题和解决方法

 

本工具采用Python 3 编写和实现,为了使用这个工具,您必须在您的电脑上安装Python 3 (目前主流的linux ubuntu 18.04 20.04等 一般默认都预装了python 3.x 因此不需要重复安装了) , 官方网站:  https://www.python.org

本软件的使用和授权协议: 同服务器软件 免费,开放源代码,但是不提供任何保证

请注意:由于新版本的XFileC客户端已经完整的支持了远程备份和同步备份功能,因此实际上这个工具已经没有什么必要了,除非你的操作系统上不支持XFileC客户端或者您想自己定制一些功能,否则就没有必要使用它了.

 

 

  从2021.07.01[2.75]版本开始,我们提供了基于Python 3.x语言开发的针对XFile服务器软件专用的同步和备份恢复客户端,该客户端是开源的,可以根据自己需要进行修改. 由于XFile服务器软件支持多个系统,包括windows linux ,以及x64,arm等各种指令集,支持的文件系统基本包含了几乎所有常见的类型,有太多的差异,因此无法象商用nas那样,针对某几种特定的文件系统进行特性支持,因此在编写这个同步和备份软件的时候,只好取大部分文件系统的共性,至于那么特殊的,比如某些古董文件系统没有文件最后修改时间等,就可能出现重复备份同步等.

  python 3.x默认带的ftplib库,存在一些bug和性能问题,我已经在代码中备注并尽量采用可行的方式缓解或者避免这些坑,但是有些坑除非重写否则是无法彻底解决的,比较典型的有两个大坑,一是如果启用SSL加密上传,那么ftplib里的传输结束不主动关闭SSL的bug会被激活,导致长时间卡死最后失败并出现内部混乱,这个bug在stackoverflow等站点早就被反复提及,他们的解决办法居然是中断后重新连接或者干脆hack进去修改ftplib库[疯了......],但是python官方始终没有解决,另一个bug是默认采用的连接是阻塞模式而不是非阻塞或者异步或者消息驱动,导致如果在150消息达到时如果无法立即完成连接,会出现长时间无操作等待,也就是这个ftplib就是提供了一个基本的实现,但是你要高性能,对不起,自己优化吧,所以我们也只能将就着用这个基本的实现做了一个基本的备份同步和恢复工具,但是这和c/c++实现的性能以及兼容性差距不是一点半点,比java都要差.

  我们定义的备份和恢复操作: 例如

  客户端 需要备份的目录 c:\doc\ 存在

    c:\doc\abc1.dat 大小 100字节 最后修改时间 2021-01-01 12:12:12

    c:\doc\abc2.dat 大小 200字节 最后修改时间 2021-01-01 12:12:12

    c:\doc\abc3.dat 大小 300字节 最后修改时间 2021-02-01 15:15:15

    c:\doc\subdoc\ 子目录

  远程XFile服务器目录备份 /pcback/ 

  该目录下存在  

             abc1.dat 大小 100字节 最后修改时间 2021-01-01 12:12:12

             abc3.dat 大小 300字节 最后修改时间 2021-01-01 12:12:12

             abc4.dat 大小 400字节 最后修改时间 2021-01-01 12:12:12

             subdata 子目录

  ======================================

  在非同步备份模式下(sync.py)  

           abc1.dat : 因为服务器备份目录下存在大小和最后修改时间相同的文件,将自动跳过上传操作

           abc2.dat : 因为服务器备份目录下不存在同名文件,将自动上传到远程目录

           abc3.dat : 虽然服务器存在相同大小的文件 但是因为最后修改时间不同 该文件将被上传并覆盖服务器上的同名文件

           subdoc : 因为服务器备份目录下不存在同名目录,将创建该子目录

  在同步备份模式下(sync.py)

           除了上面备份模式下的相同操作,还将

           因为服务器备份目录下的abc4.dat文件,在客户端不存在,将被删除

           subdata 子目录,因为客户端不存在,该子目录将被删除[警告,所有该子目录下的文件和目录都将被删除]

  在非同步恢复模式下(restore.py)

           abc1.dat : 因为本地同目录下存在的文件大小和修改时间都和服务器相同,将被保留并跳过下载

           abc2.dat : 因为服务器不存在,将不执行任何操作

           abc3.dat : 因为服务器上的存在同名同长度但是修改时间不同,将被下载被覆盖本地文件

           abc4.dat : 因为本地不存在而服务器存在,该文件将被下载

           subdata子目录 : 因为服务器存在该子目录而本地不存在,该子目录将被创建

  在同步恢复模式下(restore.py)

           abc1.dat : 因为本地同目录下存在的文件大小和修改时间都和服务器相同,将被保留并跳过下载

           abc2.dat : 因为服务器不存在,本地文件将被删除

           abc3.dat : 因为服务器上的存在同名同长度但是修改时间不同,将被下载并覆盖本地文件

           abc4.dat : 因为本地不存在而服务器存在,该文件将被下载

           subdata 子目录 : 因为服务器存在该子目录而本地不存在,该子目录将被创建

           subdoc 子目录 : 因为服务器不存在改子目录而本地存在,该子目录将被整个删除

 

    请注意,由于支持的文件系统操作系统太多,目前我们提供的工具程序,文件属性仅保留最后修改时间,其他文件系统特有的类似 系统 隐藏 只读 创建时间 最后存取时间 可执行位(linux) 组属性(linux) 等会被丢弃,比较适合文档类这种没有特殊属性的文件备份和恢复

          

  ======================================

  首先请到下载页面,根据您的电脑的操作系统,下载适合您的操作系统的备份和恢复工具程序包,

  例如windows下载下来的是 toolwin64.zip,解压后将得到类似下面的内容:

 

  xfile.py 是工具程序的核心,源代码文件,可以根据自己需要直接修改,不可以直接执行

  restore.py 是恢复程序,源代码文件,可以根据自己的需要直接修改,从服务器的备份目录恢复到本地目录

  sync.py 是备份程序,源代码文件,可以根据自己的需要直接修改,从本地目录远程备份到服务器目录

  Readme.txt 是简短的使用说明

  Progset.ini 是xfiledns.exe 命令行email ipv6地址解析程序的核心配置参数文件,utf-8编码格式,可以在windows下用记事本直接打开

  xdnsfile.txt 这是默认的xfiledns.exe的推荐输出结果文件

  xfilecfg.ini 这是restore.py sync.py 备份同步和恢复程序的参数配置文件,utf-8编码格式,可以在windows下用记事本直接打开

  xfiledns.exe 这是命令行email ipv6地址解析程序, 适合 win7 X64以上系统,注意第一次运行可能会弹出防火墙警告,询问是否允许该程序连接网络,请务必点允许,否则将失败

 

  而Linux环境,下载的内容如下:

 

   里面的文件和windows版唯一区别是 命令行email ipv6解析命令行程序是 xfiledns (无扩展名) , 请注意,在linux下,xfiledns必须具备可执行属性,如果你发现不可执行,可以通过命令行: chmod +x ./xfiledns 来赋予可执行属性,否则调用将失败.

   特别提醒,Linux平台是大小写敏感的!!!

 

  在windows系统下,使用方法,在使用前,您必须预先配置好最核心的参数文件 xfilecfg.ini , 内容如下:

 

  server_addr = 服务器地址
  server_port = 服务端口 一般是21 2121
  server_username = 用户名 + .BACK, 例如用户名是admin , 那么这里就填写admin.BACK , 这样进入的是备份模式
  server_password = 口令
  server_shakecode= 握手码 如果为0 则不检测 默认是0
  server_ssl = 0 是否启用TLS/SSL 0为不启用 1为启用 由于python ftplib 的ssl存在问题以及影响性能 默认不启用
  server_sha256 = 0 这个没什么用 只是保持兼容
  server_enablednsfile=1 是否启用从外部获取服务器ipv6地址 为0不启用则采用server_addr为服务器地址 ,为1则启用, 从xfiledns.exe程序动态执行获取或者从外部文件读取
  server_dnsfile= 如果server_enablednsfile非0, 这里为空,则程序直接执行xfiledns获取服务器地址,否则将从这个制定的文件名中读取结果 一般保持为空 直接从命令行执行解析读
  server_respcode=服务器反向验证码 这是个非常强大的反蜜罐服务器功能 如果服务器账户设置了反向验证码,一般建议这里填写该验证码 为空则不执行检查
  sync_mode= 0
是否同步模式,默认为0备份模式(不删除),这样安全,如果为1 则启用, 千万注意,在您能熟练掌握同步和非同步区别前,不要启用它,容易发生误删除,没有后悔药的
  server_bkdir=/testhp/sub7 第一个服务器端的备份目录,如果是备份模式(sync.py),那么该目录不需要事前存在,程序会创建它,否则(restore.py),则该目录必须事先存在
  local_bkdir=e:/backtest/restore11 第一个本地对应目录,这个目录必须事先已经存在
  server_bkdir2=/testhp/sub8 第二个服务器端的备份目录,如果是备份模式(sync.py),那么该目录不需要事前存在,程序会创建它,否则(restore.py),则该目录必须事先存在,为空则不执行
  local_bkdir2=e:/backtest/restore12 第二个本地对应目录,这个目录必须事先已经存在 为空则不执行第二个操作

  ==================================================

  xfiledns.exe(linux下是xfiledns)是个命令行程序,从当前目录下Progset.ini读取配置参数,执行email ipv6地址解析,成功返回 200 服务器ipv6地址, 失败则返回5xx 失败原因. 上面的sync.py备份同步程序和restore.py恢复程序,如果上面的设置server_enablednsfile=1 并且 server_dnsfile=为空,会自动调用这个命令行程序,解析出服务器ipv6地址并执行,不需要手动操作.

  Progset.ini , 如果你想直接操作,可以在windows版本的 XFhome.exe 客户端程序, 按 ctrl-alt-d 键,会打开配置文件目录,直接拷贝里面的Progset.ini文件并覆盖这个文件就可以了,linux和windows平台的配置参数是相同的.

  

   

  [XFProgram_set]
  Main_Key=1

  [XFProg_mail]
  Server_encrypt=加密密码
  Server_subject=邮件标题
  Server_address=pop3s服务器地址
  Server_password=邮箱登录口令
  Server_username=邮箱登录用户名
  Server_autodel=1是否自动删除旧邮件
  Server_enabletls=1是否启用TLS ,现在的邮件服务器一般都需要,因为为1
  Server_enableipv6=0 默认为0 如果邮件服务器同时有ipv4 ipv6服务器,是否首先选择ipv6,目前基本ipv4为主,保持默认0就可以
  Server_enableddns=1 保持为1就可以
  Server_maxmails=45 最多检测邮件数 30-60都可以 一般够了
  Server_port=995 默认的服务器端口 一般都是995

  配置参数和XFhome.exe配置是相同的

  ==================================================

  在windows平台, 在安装python 3.x环境后,参数设置完成后,

  要执行备份同步,直接双击里面的sync.py就可以直接执行

  要执行恢复操作,直接双击里面的restore.py就可以直接执行

  在命令行中输入类似 c:\xxx\xfiledns.exe 可以直接获取服务器ipv6地址,但是请注意,这个程序第一次运行,windows可能会弹出防火墙警告,该程序使用网络,问你是否允许,请务必点允许,否则将执行失败.但是一般不需要直接执行,因为 sync.py 和 restore.py代码中已经集成了这个自动调用自动分析.

  但是这样很容易导致看不到执行以及结果,因此建议打开命令行,然后切换到程序所在目录

  

   python3如果没有定义,可以尝试python代替,请根据实际情况调整,如果是要执行恢复操作,上面的sync.py请改成restore.py

  

  在Linux平台,则需要在该目录下打开终端,备份同步操作类似下面 python3 ./sync.py

 

   Linux下可以直接用./来指定当前目录,这个图是调用xfiledns尝试直接从电子邮件获取服务器ipv6地址后,自动连接远程服务器执行备份操作,如果是单纯想要获取远程服务器ipv6地址,可以通过输入 ./xfiledns 来执行命令行email解析服务器ipv6地址,

 

  执行结束后,会提示All done ,要求你按回车键,结束 ,这个设计主要是为了防止太快退出,用户看不到结果而设计,你不按直接关终端也是可以的.

  如果要执行恢复操作,则是python3 ./restore.py 替换图中的命令行

 

   ==================================================

  .py是python程序的源代码,xfile.py是核心部分,也欢迎各位根据自己的需要进行修改和增加功能,XFile服务器支持的一些特殊指令会逐渐提供,我们也会不定期提供基于xfile.py开发的其他小工具,例如我自己家里在用的基于proxy代理账户功能的linux平台的远程家庭监控.

  核心代码xfile.py的登录流程图如下:

 

 

  ==================================================

  重要提醒: python 3.x ftplib库的SSL连接存在bug,到2021.07.01发布时依然没有修复,问题是storBinary调用,在SSL连接模式下,漏掉了主动关闭SSL操作,会导致死等待进而引发主连接数据乱套,因此在明确该bug被修复前,不要启用SSL模式文件传输,否则将导致无法预测的结果.该python库的bug在stackoverflow等网站有非正式解决办法(注入ssl关闭操作后重新编译),但是不建议.

  如果您懂python开发,可以直接修改.py文件源代码来优化操作,如果您不懂,那么建议您不要修改程序代码,只需要配置好参数就可以,

  windows下需要安装python 3.x包, 3.7 3.8 3.9都可以 ,然后您可以双击sync.py执行,也可以在命令行下[或者powershell]输入: python c:\xxx\sync.py 来执行(python c:\xxx\restore.py)  c:\xxx\为文件实际目录 因为win7不支持./ 但是powershell可以支持,这里统一用全目录代替.

  linux , 特别是ubuntu 20.04lts下,因为python3已经预装(如果没有python3,则需要安装),因此可以直接在终端[命令行]输入: python3 ./sync.py 来执行(python3 ./restore.py)

  其他系统,例如苹果等,请参考linux平台,但是不保证能执行,因为我们没有苹果的设备.

         

          

 

 

 

 

 

 

 

 

 

 

 
(c) 2016-2023 phoenixp2p.com