Syncthing是一款用于在不同设备之间进行文件同步的工具。它通过在多台设备之间建立点对点的连接,实现文件的自动同步。每个设备都可以选择要同步的文件夹,但是不能在同一台设备上指定文件夹进行同步。如果您想要在同一台设备上实现文件夹的同步,利用docker安装syncthing来实现,下面以我操作
项目给出的拉取镜像安装是
$ docker pull syncthing/syncthing $ docker run -p 8384:8384 -p 22000:22000/tcp -p 22000:22000/udp -p 21027:21027/udp \ -v /wherever/st-sync:/var/syncthing \ --hostname=my-syncthing \ syncthing/syncthing:latest
上面-v /wherever/st-sync:/var/syncthing \就是说明冒号前面是本地的挂载路径,后面是syncthing目录,这样挂载后宿主机目录/wherever/st-sync下面有配置目录config和默认同步目录Sync,但是这样在syncthing选择或创建只能在/wherever/st-sync下面,还是不能选择宿主机其他目录,想实现的是能从宿主机根目录任意选择
我用了两种方案来实现,可以任选其一,都是修改挂载目录来实现
1, 把/var/syncthing挂载到系统根目录
$ docker pull syncthing/syncthing $ docker run -p 8385:8384 -p 22001:22000/tcp -p 22001:22000/udp -p 21028:21027/udp \ -v /:/var/syncthing \ --hostname=my-syncthing \ syncthing/syncthing:latest
上面映射的端口,因为系统本身已经有这个,避免冲突,换了
上面-v /:/var/syncthing \就是挂载到系统根目录,但是有个不好看的就是,配置目录config和默认同步目录Sync也在根目录,如果没有其他影响这个也可以
2,把上面如Sync目录挂到系统根目录
之所以想这样,是因为系统挂载了网络云储存,本地有挂载目录,想选择宿主机目录里一些重要的配置文件,让他自动备份到云存储,所以这样可以任意选择文件,然后同步到云存储中进行备份
docker run -p 8385:8384 -p 22001:22000/tcp -p 22001:22000/udp -p 21028:21027/udp \ --name syncthing\ -v /wherever/st-sync:/var/syncthing \ # 这个正常挂载随便了,主要是下面这个 -v /:/var/syncthing/Sync \ # 把内置syncthing/Sync目录挂载到系统根目录 --hostname=docker-syncthing \ syncthing/syncthing:latest
这个配置文件还在/wherever/st-sync下面,这样系统根目录不会有config和Sync两个文件夹
进入syncthing页面,把默认的文件夹Default Folder移除
注意:从根目录开始选择的话,syncthing设置文件夹路径就是/var/syncthing/Sync,比如我设置添加/var/syncthing/Sync/5555
这样就会在根目录创建5555文件夹,因为没有这个文件夹,所以会自动创建,如果想选择其它已经存在的文件夹,就是/var/syncthing/Sync/后面这里带上从根目录开始的具体文件夹路径,比如想选择www目录,那就是/var/syncthing/Sync/www,想选择www下666文件夹,那么就是/var/syncthing/Sync/www/666,以此类推
利用上面这样就可以使用syncthing在同一台设备上不同的文件夹之间来实现文件夹的同步,因为主安装的syncthing和Docker安装的syncthing就是两个设备了