当前位置:   article > 正文

基于CuteHttpFileServer/chfs搭建文件定时同步_cutefileserver

cutefileserver

概要

公司内网两台服务器,没有开22端口,只开通了443的端口。所以我就基于使用HTTP协议chfs的文件服务搭建两台服务器之间的文件同步的定时任务。

CuteHttpFileServer/chfs是一个免费的、HTTP协议的文件共享服务器,使用浏览器可以快速访问。

整体架构流程

B服务器需从A服务器上定时同步文件,在A服务器上搭建chfs服务。在B服务器设置crontab定时任务,定时执行wget或curl下载A服务器上的文件。

技术细节

1.下载chfs

1)方法一:直接下载后上传至服务:

下载地址:​​​​​

百度网盘分流下载:https://pan.baidu.com/s/1QDhTWb-CRUQaHkITSSrF1w 提取码:chfs

2)方法二:通互联网的,wget直接下载

wget http://iscute.cn/tar/chfs/3.1/chfs-linux-arm-3.1.zip

我这边的服务器是CentOS 7,我下载的是 chfs-linux-386-3.1.zip。

2.安装chfs

1)下载完压缩包,解压并删除zip压缩包。我这里是在 /usr/local/chfs 目录下执行的。

unzip chfs-linux-386-3.1.zip && rm -rf chfs-linux-386-3.1.zip

2)编辑配置文件,官网配置文件模板下载地址:http://iscute.cn/asset/chfs.ini

vim chfs.ini

 配置文件模板,根据需要做修改,以下是我的配置。

  1. #---------------------------------------
  2. # 请注意:
  3. # 1,如果不存在键或对应值为空,则不影响对应的配置
  4. # 2,配置项的值,语法如同其对应的命令行参数
  5. #---------------------------------------
  6. # 监听端口
  7. port= 443
  8. # 共享根目录,通过字符'|'进行分割
  9. # 注意:
  10. # 1,带空格的目录须用引号包住,如 path="c:\a uply name\folder"
  11. # 2,可配置多个path,分别对应不同的目录
  12. path=/usr/local/nginx
  13. # IP地址过滤
  14. allow=
  15. # 用户操作日志存放目录,默认为空
  16. # 如果赋值为空,表示禁用日志
  17. log=/usr/local/chfs/logs
  18. # 网页标题
  19. html.title=文件服务器
  20. # 网页顶部的公告板。可以是文字,也可以是HTML标签,此时,需要适用一对``(反单引号,通过键盘左上角的ESC键下面的那个键输出)来包住所有HTML标签。几个例子:
  21. # 1,html.notice=内部资料,请勿传播
  22. # 2,html.notice=`<img src="https://mat1.gtimg.com/pingjs/ext2020/qqindex2018/dist/img/qq_logo_2x.png" width="100%"/>`
  23. # 3,html.notice=`<div style="background:black;color:white"><p>目录说明:</p><ul>一期工程:一期工程资料目录</ul><ul>二期工程:二期工程资料目录</ul></div>`
  24. html.notice=内部资料,请勿传播
  25. # 是否启用图片预览(网页中显示图片文件的缩略图),true表示开启,false为关闭。默认关闭
  26. image.preview=true
  27. # 下载目录策略。disable:禁用; leaf:仅限叶子目录的下载; enable或其他值:不进行限制。
  28. # 默认值为 enable
  29. folder.download=
  30. #-------------- 设置生效后启用HTTPS,注意监听端口设置为443-------------
  31. # 指定certificate文件
  32. ssl.cert=
  33. # 指定private key文件
  34. ssl.key=
  35. # 设置会话的生命周期,单位:分钟,默认为30分钟
  36. session.timeout=
  37. # 文件/目录删除模式:
  38. # 1: 安全删除:移动到系统回收站 [不是所有操作系统都支持,建议使用前进行测试。默认模式]
  39. # 2: 安全删除:移动到chfs的专属回收站: ~/.chfs_trashbin, 程序会删除存储超过1个月的文件
  40. # 3: 真正删除
  41. file.remove=1
  42. #----------------- ------------------------
  43. # 注意: 账户配置区域放置到配置文件的后面
  44. #------------------------------------------
  45. #----------------- 账户及控制规则 -------------------
  46. # [xxx] xxx即为账户名, 访客的用户名为guest
  47. # password 账户密码
  48. # rule.default 账户对所有的目录和文件的访问权限,但可以针对任意子目录进行重新设定访问权限,以覆盖默认的权限
  49. # rule.none 表示对哪些子目录设置为不可访问的权限,多个目录使用字符'|'分割,也可以分为多行。注意:该子目录本身也不可访问!
  50. # rule.r 表示对哪些子目录设置为读权限,多个目录使用字符'|'分割,也可以分为多行。注意: 该子目录本身不受影响,影响的只是它所包含的目录和文件!
  51. # rule.w 表示对哪些子目录设置为写权限,多个目录使用字符'|'分割,也可以分为多行。注意: 该子目录本身不受影响,影响的只是它所包含的目录和文件!
  52. # rule.d 表示对哪些子目录设置为最高访问权限,多个目录使用字符'|'分割,也可以分为多行。注意: 该子目录本身不受影响,影响的只是它所包含的目录和文件!
  53. #
  54. # 示例:
  55. # [foo]
  56. # password=bar
  57. # rule.default=r
  58. # rule.none=d:\公司制度|d:\财务票据
  59. # rule.r=d:\施工项目\2021年
  60. # rule.r=d:\施工项目\2022年
  61. # rule.d=d:\个人目录\foo
  62. #
  63. # 该账户名为foo,密码为bar,默认访问权限是读权限,但账户没有“d:\公司制度”和“d:\财务票据”的访问权限,且
  64. # 对“d:\施工项目\2021年”和“d:\施工项目\2021年”只有读权限,对“d:\个人目录\foo”有最高访问权限。
  65. #
  66. #账户xxx,访客的用户名为guest
  67. [guest]
  68. password=guestPassword
  69. rule.default=
  70. rule.none=
  71. rule.r=
  72. rule.w=
  73. rule.d=
3.启动chfs服务
/usr/local/chfs/chfs --file=/usr/local/chfs/chfs.ini
 4.访问网页

访问 http://localhost:443/ ,能打开,搭建成功。

5. 定时任务,下载同步文件

在B服务器上设置定时任务,定期从 CuteHttpFileServer 服务器下载更新的文件。

crontab -e

 添加一行来计划定时同步下载任务,例如,每5分钟运行一次 wget 或 curl 命令。”/desired/sync/directory/“ 替换为B服务器想要同步的文件夹,”http://source-server-ip:port/chfs/shared/”替换为A服务器的文件夹地址。

*/5 * * * * /usr/bin/wget -r -P /desired/sync/directory/ http://source-server-ip:port/chfs/shared/

至此,单项文件同步任务搭建完成。

--  2024年5月16日补充

后来想了下,用Nginx代理文件夹,再用定时任务同步文件也很方便。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/774502
推荐阅读
  

闽ICP备14008679号