首页 >>  正文

unless翻译

来源:baiyundou.net   日期:2024-09-22

作者:唐尸三摆手

一、前言

在使用TrueNAS之前,我一直使用的同步应用是群晖的Drive套件。但只能在群晖NAS和PC之间同步文件,手机端仅能同步相册,这就导致我微信中的文件只能通过数据线拷贝出来之后再进行整理。而Syncthing可以非常方便的在手机端指定文件夹进行同步。等有时间的时候再统一进行整理。听说Drive移动端出了新版本,不知道是否有所改进,但我已经用习惯了Syncthing,也懒得换回去。关于Syncthing的内容会比较多,我将它分成了两个篇章。

第一篇:Synchting的部署(Syncthing及其发现和中继服务器)

第二篇:同步体系规划和Synchting的使用

二、部署Syncthing

1、到hub.docker网站搜索Syncthing,可以查找到syncthing/syncthing或者linuxserver/syncthing,这两个都是官方认可的镜像,部署方式也大同小异。

这里是官方的Docker compose部署参数:

version: "3"

services:

syncthing:

image: syncthing/syncthing

container_name: syncthing

hostname: my-syncthing

environment:

- PUID=1000

- PGID=1000

volumes:

- /wherever/st-sync:/var/syncthing

ports:

- 8384:8384 # Web UI

- 22000:22000/tcp # TCP file transfers

- 22000:22000/udp # QUIC file transfers

- 21027:21027/udp # Receive local discovery broadcasts

restart: unless-stopped

先解释一下这段代码:

其实只需要关注environment、volumes、ports部分所对应的代码。

environment就是设置环境变量,Syncthing需要设置两个环境变量PUID和PGID,这两个环境变量是用来指定docker容器拥有哪个用户和用户组来的权限,默认的代码里给的变量值是1000,在旧版的TrueNAS Scale中建立的第一个用户和用户组的ID默认是1000,但在目前新版本的TrueNAS Scale中第一个用户的用户ID和用户组ID默认是3000。所以在部署的时候要注意改为3000。如果新建用户和用户组的时候手动设置了用户和用户组的ID,这里就按照手动设置的ID来填写即可。

volumes对应的是需要同步的文件夹,为了方便,我把所有需要同步的文件都放在同一个文件夹中,其实也可以设置多个映射路径,这个看个人的需要。

ports对应的是端口映射,docker实质上就是一台轻量化的虚拟机,在docker的运行机制下外部设备是没有办法直接访问docker的内部端口,因此需要把docker内部的端口映射到宿主机,也就是你的NAS的端口上(有点DDNS端口转发的意思),这时候访问NAS的ip+端口号就相当于访问docker内部的端口。

2、登录TrueNAS Scale,在左侧选择“应用”,点击右上角蓝色的“启动Docker镜像”

3、在“应用名称”中自定义一个方便自己识别的应用名称,应用名称有格式要求,如果出现提示按照要求格式修改下,这里我填写的是syncthing。在下方“Image repository”中填写镜像名称,这里我填写的是官方的镜像“syncthing/syncthing”,镜像名称必须与hub.docker网站上的名称一致,版本使用默认的“latest”

4、继续往下,来到“Container Environment Variables”,设置环境变量,点击右侧的“添加按钮”,添加两个环境变量PUID、PGID,对应的ID都是3000,需要注意的是这个用户和用户组对你要同步的文件夹要有读写权限,否则无法同步。

5、继续往下,来到“Port Forwarding”,设置端口映射,点击右侧的添加按钮,这里一共需要映射4个端口号

主机端口,容器端口,端口协议

9001,8384,TCP

22000,22000,TCP

22000,22000,UDP

21027,21027,UDP

“Container Port”中填写的是docker容器的端口号,对应的是部署代码中冒号后面的数字,这个端口号不允许随便调整,“Node Port”是NAS主机的端口号,对应的是部署代码中冒号前的数字,可以根据自己的端口使用情况进行调整,但在TrueNAS Scale中,这个端口号必须大于等于9000。这里8384所映射出的9001端口,就是日后从浏览器访问的端口。

前两个端口协议直接用默认的TCP协议即可,后面两个端口的协议要修改为UDP

6、继续往下,来到“存储”,设置文件夹映射,“Host Path”是指你在NAS中的目录,可以根据自己实际的设置情况进行选择。“Mount Path”则是docker内部的路径,我官方的代码略微进行了调整,将/var/syncthing/work映射到NAS的/mnt/pool/work上,/var/syncthing/photo映射到NAS的/mnt/pool/photo,这样后续我可以按照这样的方式添加其他数据集。

映射配置文件夹

这里还有一个重要的文件夹在代码中没有提及,那就是Synchting的配置文件夹,如果不设置这个文件夹的映射,那么在重启docker容器只有,Syncthing所有之前调整过的配置都会丢失,因此我们需要对配置文件进行映射

“Host Path”中选择NAS的/mnt/pool/docker/syncthing,“Mount Path”中填写/var/syncthing/config。

7、之后其余设置都不需要更改,直接拉到最后,选择“保存”。

这时系统应该会开始拉取镜像,并进行部署。如果拉取失败可以多尝试几次。或者使用魔法。

8、当docker应用的标签由灰色的“DEPLOYING”变为绿色的“ACTIVE”时,说明部署成功了。之前设置的NAS在局域网中的IP地址是192.168.0.10,刚才为Synchting映射的web访问端口是9001,那么我们从浏览器地址栏中输入:http://192.168.0.10:9001,就可以开始使用Syncthing了。


默认情况下Syncthing会使用公开的发现和中继服务器,这些服务器大多位于国外,在我的网络环境下,同步速度最高只有200KB/S,显然这样的同步速度远远达不到我的使用要求。按理说局域网中的机器应该能够直连,但我发现,局域网中的两台设备也经常会情不自禁的连上公开的服务器进行同步,我并不清楚其中的原因,因此我决定自己搭建,让设备尽量在局域网内直连。

三、部署发现服务器

下面是docker-compose的部署代码:

syncthing_discovery_server:

image: syncthing/discosrv

container_name: syncthing-discovery-server

command: -debug -listen=":8443"

environment:

- PUID=1000

- PGID=1000

volumes:

- ./syncthing/discosrv:/var/stdiscosrv

ports:

- 8443:8443 # Listen address (default “:8443”)

restart: always

首先需要在TrueNAS Scale中给发现服务器设置一个数据集,用于映射发现服务器的/var/stdiscosrv文件夹,这个数据集需要有相应的读写权限。相关操作可以查看之前的内容。这里我建立了一个“discosrv”数据集

1、回到应用部署界面,“应用名称中”填写一个方便识别的名称,这里我填写的是:syncthing-discovery,“Image repository”中填写镜像名称:“syncthing/discosrv”。

2、在“Container Environment Variables”中添加两个环境变量,PUID和PGID,变量值是在前文章中的用户和用户组的ID:3000。

3、在“Port Forwarding”设置端口映射,“Container Port”容器端口为8443,不要填错,“Node Port”节点端口我这里设置为9443,也可以根据自己需要修改为其他9000以上没有被占用的端口号。“协议”保持默认的TCP即可。

4、在“存储”中设置文件夹映射,“Host Path”中选择刚才我们已经建立好的“discosrv”数据集。“Mount Path”中填写docker容器内部的文件夹“/var/stdiscosrv”,这个同样不能修改。

5、其余设置均保持默认,拉到最后点击“保存”,待应用右上角的状态变为绿色的“ACTIVE”之后,部署就算完成了。

四、部署中继服务器

同样的,需要提前在TrueNAS Scale中给中继服务器准备一个数据集,用于映射中继服务器的/var/strelaysrv文件夹。

1、回到应用部署界面,“应用名称中”填写一个方便识别的名称,这里我填写的是:syncthing-relay,“Image repository”中填写镜像名称:syncthing/relaysrv,这个不能填错。

2、环境变量的设置与发现服务器一样,PUID和PGID都是3000。

3、需要映射的端口是22067,因为已经大于9000了,所以这里容器端口和节点端口我都填写了22067。协议同样用默认的TCP即可。

4、在“存储”中设置文件夹映射,“Host Path”中选择刚才我们已经建立好的“relaysrv”数据集,“Mount Path”中填写docker内部的文件夹“/var/strelaysrv”,这个同样不能修改。

5、其余设置均保持默认,拉到最后点击“保存”,待应用右上角的状态变为绿色的“ACTIVE”之后,部署就算完成了。

五、下期预告

Syncthing是一个功能相当强大的同步软件,部署只是成功的第一步,下一篇会介绍一下Syncthing的使用,以及如何使用我们自己搭建的发现服务器和中继服务器,还有如何去规划自己的数据,形成一个高效的同步体系。

阅读更多网络存储精彩内容,可前往什么值得买查看

","gnid":"98227552a24699305","img_data":[{"flag":2,"img":[{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t010aabe28c5dddd3e9.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t01acf1a5cadd712a56.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t013415756e896e2de8.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t0113c531a831977f35.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t017ce62e086b109f74.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t0182324803ed8713a6.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t018e0ef1bbea86c9ff.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t01a05a15680a861602.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t018d24f01bbee3f6b0.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t0195c9098956001525.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t0114d9c652ae3e05be.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t01fdafaa12027c9f0f.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t01c52ea5f6aa4799d1.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t019fbbe97cbe1c8ccf.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t01c264580021403501.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t0150eeb5463658f472.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t0120d870e2b8285dd1.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t013381441fa9db628a.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t014f575bc91f94be9c.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t0113ea4679750b27fa.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t01a316c56ad8e57f7a.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t0145491c9de0ea9d8f.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t014bbaf91396442eaa.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t01a42412a9c1729841.jpg","width":"1080"},{"desc":"","height":"675","title":"","url":"https://p0.ssl.img.360kuai.com/t0199f6dea454aa7cd8.jpg","width":"1080"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1693441203000,"pure":"","rawurl":"http://zm.news.so.com/c14f59da5d4e0a36b9a9dbece37cc06f","redirect":0,"rptid":"48bfd102b580f028","rss_ext":[],"s":"t","src":"什么值得买","tag":[],"title":"TrueNAS 篇三:TrueNAS Scale入坑指南No.3—— Synchting的部署(Syncthing及发现和中继服务器的部署)

胡谢琰664I did not know it - ---- - you told me. 正确答案是 until 请问为什么不能选择unless. -
白送炊15783029150 ______ 如果用unless时态不对.unless意思就等于if not,所以句子会变为I wouldn't know it unless you told me.或者I wouldn't know it if you had not told me.因为你已经告诉我了,而现在是假设没有告诉我,所以用虚拟语气

胡谢琰664I cannot leave her ()I know she is all right是unless还是if -
白送炊15783029150 ______[答案] 填 unless 翻译:除非我知道她还好,否则我不会离开她 if 是如果,这样翻译就不对了: 如果我知道她还好,我不会离开她

胡谢琰664if not 和unless有什么区别 -
白送炊15783029150 ______ 两者都可表示否定的条件,有时可换用.如: Come tomorrow unless I phone [if I don't phone]. 要是我没有打电话,明天就来. 但是在下列情况下,通常要用 if ... not 而不用 unless: 1. 当所述条件要引出一种新的想法或情况(而不是结束已存...

胡谢琰664unless=if not
白送炊15783029150 ______ 应该是:如果他也去那个派对我就不去(我认为如果这么翻译用too有问题,原句应该是:I will not go to the party unless he goes to there,too.如果他不去我也不去) eg:I will not go unless I hear from him. =I will not go if I do not hear from him. 如果他不通知我,我就不去.

胡谢琰664有关until 和 unless的问题
白送炊15783029150 ______ 楼上的还没有表述出要点来,我给你分析一下区别: unless “除非..”(有条件限制的,除了特定的情况外,就不会发生) until “直到...的时候”(一般说的是一个具体的时间或具体的时间点上) ex: The boy can't go to bed until 11 pm. 好显然,句子“除了我带他外出(条件),否则他都不会去哪”

胡谢琰664UNPASS的翻译是:什么意思 -
白送炊15783029150 ______ 没有这个单词,根据您的拼写来看,考虑应是:unless.unless 英[ənˈles] 美[ʌnˈlɛs] conj. 除非,如果不; prep. 除了,…除外; [例句]Unless you are trying to lose weight to please yourself, it's going to be tough to keep your motivation level high 除非减肥是为了悦已,否则很难保持积极性.

胡谢琰664unless=if not请举出例子I will go to the party unless he goes to there,too.翻译是“如果他也去那个派对我就不去”还是“如果他不去我也不去” -
白送炊15783029150 ______[答案] 应该是:如果他也去那个派对我就不去(我认为如果这么翻译用too有问题,原句应该是:I will not go to the party unless he goes to there,too.如果他不去我也不去)eg:I will not go unless I hear from him.=I will...

胡谢琰664关于unless与before -
白送炊15783029150 ______ before,之前,这是一个时间概念unless,除非,这是一个原因概念比如:I can't watch TV before I finish my homework. 先做作业,再看电视.Most birds don't use a nest unless they ha...

胡谢琰664UnlesstospeakUnless - tospeak,
白送炊15783029150 ______ Unless_____tospeak, tedvitinginginvitedD.havinginvited为什么选A不选C,unless也可以看作是介词,后面加动名词unless做prep.看,表示"除...外",在此意思也不通.unless做conj.时,是"除非"的意思.句子翻译就是:你应该在会议上保持沉没除非你被邀请发言.根据翻译,可判断与you是被动关系,因此排除BD.而C选项是表正在被做,翻译起来也不通.这个选项很少是正确答案,除非是强调正在,比如:Thehouseisbeingbuiltatthistime.(beingdone放在句首,也表原因.)故选A.

胡谢琰664英语问题 我们只有努力学习才能提高自己 能不能用 not~until -
白送炊15783029150 ______ 你好.不可以.not - - - until- - - 强调的是“时间”概念.你的句子强调的是“条件”概念(如果).应该用not- - - - unless- - -来表达: We can't get improved unless we work hard. ///// 或者是 Only if / when we work hard, can we get improved.

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024