我有一个文件夹a /和一个远程文件夹A /.我现在在Makefile上运行这样的东西:
get-music:
rsync -avzru server:/media/10001/music/ /media/Incoming/music/
put-music:
rsync -avzru /media/Incoming/music/ server:/media/10001/music/
sync-music: get-music put-music
Run Code Online (Sandbox Code Playgroud)
当我制作同步音乐时,它首先获取从服务器到本地的所有差异然后相反,将所有差异从本地发送到服务器.
只有在将来只有更新或新文件时,这才能很好地工作.如果有删除,它什么都不做.
在rsync中有--delete和--delete-after选项来帮助实现我想要的东西但事情是,它不适用于双向同步.
如果我想删除syn上的服务器文件,当本地文件被删除时,它可以工作,但如果由于某种原因(后面解释)我有一些不在服务器但在本地存在并且被删除的文件,我想在本地删除它们而不是服务器复制(当它发生).
事情是我在上下文中有3台机器:
因此,有时,服务器将具有使用笔记本同步删除的文件,例如然后,当我与我的桌面运行同步时(删除的服务器文件仍然存在)我希望删除这些文件而不是再次复制到服务器.
我想这只能用于数据库和操作跟踪:P
更简单的解决方案?谢谢.
我想了解程序,如vim
或man
在外壳做工.他们如何让用户滚动,刷新显示器等?
它们似乎与某些控制台库交互,因此操纵我们看到的内容.真的发生了什么?
我有通过网络套接字发送的服务器消息.该消息是一个json(验证)字符串.当它到达浏览器时,我检查它是一个字符串,typeof(data)
它告诉我它实际上是一个字符串.我最后这样做var some_obj = eval( '(' + data + ')' );
会给我一个Uncaught SyntaxError: Unexpected token ILLEGAL
错误.
此外,在使用之前eval()
,我console.log(data)
和它显示正确,虽然alert(data)
在对话框中不会显示任何内容.
我无法理解发生了什么.
我也试过var myJson = '{ "x": "Hello, World!", "y": [1, 2, 3] }';
,然后var myObj = eval( '(' + myJson + ')' );
它工作,所以我真的不明白为什么我的无法评估(解析).
通过web-socket接收的字符串是这样的:
received 37 bytes » { "cmd": "setname", "params": "ok" }
Run Code Online (Sandbox Code Playgroud)
where data = { "cmd": "setname", "params": "ok" }
(我猜的typeof(data)
是引号,因为是= string).
有小费吗?谢谢
edit1»使用web-socket,你必须添加一个空字符(0 ascii)并将一个转义字符(255 …