国内的各家云盘,对用户像父亲对儿子一样耳提面命地亲切,个人隐私说看就看,内容说删就删,网盘说关就关,就这还要收费,让你不得不叫他们爸爸;
国外的云盘速度又慢,存储空间又贵,放大文件很容易满,每年买ICloud的钱够几个VPS了。
自己搭建的NAS太折腾了,浪费时间,维护起来是个大坑,搬家也很麻烦。
自己搭建的云盘比较提心吊胆,xss,sql注入,说不定哪天就发生了,功能越复杂,维护起来越麻烦,多个服务器同时同步备份麻烦。
所以我就想自己搭建一个功能简洁的同步盘
我对我的同步保存的云盘有以下几个要求:
搭建和维护像FTP服务器那样简单,可以直接用系统的包管理器维护升级
稳定安全,像FTP服务器那样安全,不需要担心xss注入,sql注入等乱七八糟的问题,
跨平台,起码跨 Linux 和 OSX 双向同步,我是希望本地删除后,多个服务器也同步删除。如果有版本控制功能,可以关掉。
功能简单,可以用脚本扩展管理占用服务器资源小
我想着这些要求并不高吧,linux 下的备份工具那么多,一定可以找到一款我心仪的。通过比较和实践之后,最终我找上了syncthing,事实证明,它已经超出了我想象地好。如果你不想再折腾了,但还是想控制个人数据,多端稳定同步备份,那么我推荐syncthing。
安装Syncthing
cd /home wget https://github.com/syncthing/syncthing/releases/download/v1.7.0/syncthing-linux-amd64-v1.3.3.tar.gz #解压 tar -zxvf syncthing-linux-amd64-v1.7.0.tar.gz #进入解压目录将syncthing程序复制到/usr/local/bin目录 cd syncthing-linux-amd64-v1.7.0 cp syncthing /usr/local/bin/
运行
运行一次syncting让它自动生成一个配置文件,然后ctrl+c结束程序
#启动syncthing命令 syncthing -no-browser
修改配置文件
vi ~/.config/syncthing/config.xml
将127.0.0.1:8384
修改为0.0.0.0:8384
这样外网就能访问了
非root账号设置方式
这里以www
用户为例
拷贝配置文件
将/root/.config/syncthing文件夹拷贝至/home/www/.config/syncthing
mkdir -p /home/www/.config/syncthing cp -r /root/.config/syncthing/* /home/www/.config/syncthing
赋予配置目录权限
chown -R www:www /home/www/.config/
设置后台启动
从源包内复制 cp /home/syncthing-linux-amd64-v1.7.0/etc/linux-systemd/system/syncthing@.service /usr/lib/systemd/system #修改文件名(如果不是用root账户启动,需要将root改为你的用户名) mv /usr/lib/systemd/system/syncthing@.service /usr/lib/systemd/system/syncthing@root.service #修改syncthing@root.service文件中的syncthing路径 vi /usr/lib/systemd/system/syncthing@root.service #将ExecStart=/usr/bin/syncthing改为:ExecStart=/usr/local/bin/syncthing #添加开机启动 systemctl enable syncthing@root.service #启动syncthing服务 systemctl start syncthing@root.service
启动后,检查syncthing服务状态:
systemctl status syncthing@root.service
设置防火墙
#开启8384,22000,21027端口,其中21027是udp类型 firewall-cmd --zone=public --add-port=8384/tcp --add-port=22000/tcp --add-port=21027/udp --permanent #重启防火墙 firewall-cmd --reload #如果是阿里云、腾讯云等服务器上操作,还需要在安全组中添加 #更多Firewall防火墙操作看 https://www.5yun.org/10074.html
排除不需要同步的文件夹
例如共享文件夹下有一个cache目录,这个目录不需要同步,那么只需要在忽略模式中输入:/cache
即可
单向同步
syncthing设置好后,默认是双向同步的,即一方服务器的共享文件夹发生变动后,其他的共享文件夹也会跟着发生改变。如果只需要单向同步,可以在共享文件夹的高级选项中,设置文件夹类型为仅接收
。
例如A服务器和B服务器进行同步,我们只需要A发生的改动同步到B,而不希望B发生的改动同步到A,那么只需要设置B的件夹类型为仅接收
。
设置同步间隔时间
syncthing设置好后,默认是10秒同步一次,即当一台服务器新增文件后,至少需要10秒以上的时间才能同步到其他的设备。如果你希望减少这个时间间隔,可以在操作
->高级
中设置。
在高级配置中,选择要设置的共享文件夹,设置Fs Watcher Delay (seconds)
这个值即可。
忽略删除
如果A和B两台服务器建立了同步关系,如果希望A删除文件后,B服务器不删除该文件,那么可以在B服务器的高级设置中,找到文件夹选项,勾选Ignore Delete
即可
查看日志
默认是在/var/log/syncthing.log
常见错误
failed to setup inotify handler
解决办法:https://docs.syncthing.net/users/faq.html#inotify-limits
echo "fs.inotify.max_user_watches=204800" | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
广东 佛山 2F
登录回复
bin etc games include lib lib64 libexec sbin share src
[root@localhost local]# cd bin
[root@localhost bin]# ls
syncthing
[root@localhost bin]# syncthing -no-browser
-bash: /usr/local/bin/syncthing: 无法执行二进制文件
[root@localhost bin]#
香港 B1
登录回复
@ 472672505@qq.com 权限设置755
香港 B2
登录回复
@ 不忘初心 好的谢谢
湖北 荆州 1F
登录回复
这个下载网址是失效了吗,还是我操作不对
香港 B1
登录回复
@ wpdzdx 可能被墙