事情就是这样:我有两个应用程序,用C++编写并在两台具有不同操作系统的机器上运行(一个Linux和一个Windows).其中一个过程负责更新NAS(网络附加存储)上的XML文件,而另一个过程则读取此文件.
是否可以同步这两个进程,以避免在修改文件的同时读取文件?
当用户访问NAS时,我正试图让我的NAS服务器从S3睡眠状态唤醒.我想这样做是为了延长服务器的使用寿命,并限制其功耗.我见过有人要求提供类似的建议,但我发现没有提供强大的解决方案,大多数线程都没有得到答复.
所以要快速详细说明我的问题:在我的家里,我有一个定制的,来自旧的PC,NAS服务器,运行Ubuntu服务器,主要存储媒体和文档.此服务器当前设置为在预定义的非活动时段后休眠.目前,NAS可以通过WOL魔术包带出S3状态.我想要实现的是当用户从他们的PC访问其中一个共享时,这个魔术包会自动发送到服务器.用户主要运行Windows 7.我不确定这是否完全普及,但我有一台运行DD-WRT的Linksys WRT54G作为我的家用路由器/ DHCP/DNS.
在我的研究过程中,我遇到了许多文章,这些文章只是在定时循环中自动唤醒服务器,没有真正的情报.下面给出的文章似乎做我想要的:
http://wdtvhd.com/index.php?showtopic=7908
给出了一个脚本,它尝试通过使用DD-WRT路由器在进行查询时发送wake-on-lan数据包来解决此问题.这似乎是一个很好的方法,但我无法让链接中给出的脚本正常运行.
我认为这涵盖了我的问题的大多数方面.任何帮助将不胜感激.
我正在寻找一个"技巧"或"黑客"来确定文件是否已经保存在远程磁盘上,通过vmware缓存,NAS缓存等.
刷新和关闭FileOutputStream是不够的.我认为Channel.force(true)既不是.
我正在考虑这样的事情:
也许有人有同样的问题,并找到了解决方案.
我的要求是不要丢失数据.java应用程序以这种方式工作:
今晚我们遇到了崩溃,并且在第5步之后但是在将数据实际刷新到远程存储之前有三次交易失败.所以数据库说一切都很好,远程端被告知相同,但15秒的签名数据丢失了.这不好.
正确的解决方案可能是对远程文件系统进行"同步安装".但这不会在短时间内发生.即使在这种情况下,鉴于应用程序在VMWare服务器上运行,我也不完全信任这种情况.
因此,我希望有一个"尽力而为"的黑客来防止(缓解)像这样的事件.
我是摄影师,做了很多备份。多年来,我发现自己拥有许多硬盘驱动器。现在,我购买了NAS,并使用rsync将所有图片复制到一个3TB的RAID 1上。根据我的脚本,其中大约1TB的文件是重复的。这是因为在删除笔记本电脑上的文件之前进行了多次备份,而且非常混乱。我的确在旧硬盘上备份了所有这些文件,但是如果我的脚本搞砸了,那将很痛苦。您能否看一下我重复的查找程序脚本,并告诉我您是否认为我可以运行它?我在测试文件夹上进行了尝试,看起来还可以,但是我不想在NAS上弄乱东西。
该脚本在三个文件中包含三个步骤。在第一部分中,我将找到所有图像和元数据文件,并将它们作为大小的文件放入货架数据库(datenbank)中。
import os
import shelve
datenbank = shelve.open(os.path.join(os.path.dirname(__file__),"shelve_step1"), flag='c', protocol=None, writeback=False)
#path_to_search = os.path.join(os.path.dirname(__file__),"test")
path_to_search = "/volume1/backup_2tb_wd/"
file_exts = ["xmp", "jpg", "JPG", "XMP", "cr2", "CR2", "PNG", "png", "tiff", "TIFF"]
walker = os.walk(path_to_search)
counter = 0
for dirpath, dirnames, filenames in walker:
if filenames:
for filename in filenames:
counter += 1
print str(counter)
for file_ext in file_exts:
if file_ext in filename:
filepath = os.path.join(dirpath, filename)
filesize = str(os.path.getsize(filepath))
if not filesize in datenbank:
datenbank[filesize] = []
tmp = datenbank[filesize] …Run Code Online (Sandbox Code Playgroud) 已经这样做了好几天了,没有运气。
在对所有用户、组和共享完成 Freenas 初始安装后,USB 失败。数据一切都很好,但是我没有配置文件的备份。使用的Freenas版本是FreeNAS-8.3.1-RELEASE-x64 (r13452)
更换 USB 并重新设置所有内容后 - 我重新连接数据硬盘并开始重新创建所有用户和组。一切都很好,直到我开始设置 Rsync 备份脚本,将数据本地复制到外部 USB 硬盘上。
我正在使用的脚本是
#!/bin/sh
# Simple script to backup data from BACKUP_SRC to BACKUP_DST
#
# this can be any drive attached to your FreeNAS box ...
# ... internal drive(s), external USB drive(s), external SATA drives(s)
# Backup source
BACKUP_SRC=/mnt/DATA/test/
# Backup destination -- DO NOT include the trailing slash
BACKUP_DST=/mnt/BACKUP1/SHARED
# For a seven day cyclical backup, remove the comment from the line 'DAY=option$
# …Run Code Online (Sandbox Code Playgroud) 我有一个带有嵌入式Linux的"Seagate Central"NAS
$ cat /etc/*release
MontaVista Linux 6, (.dev-snapshot-20130726)
Run Code Online (Sandbox Code Playgroud)
当我尝试在这个NAS上运行我自己的应用程序时,它将被" 杀死 "而没有关于dmesg或/ var/log/messages的任何通知
$ cat /proc/cpuinfo
Processor : ARMv6-compatible processor rev 4 (v6l)
BogoMIPS : 279.34
Features : swp half thumb fastmult vfp edsp java
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xb02
CPU revision : 4
Hardware : Cavium Networks CNS3420 Validation Board
Revision : 0000
Serial : 0000000000000000
Run Code Online (Sandbox Code Playgroud)
我的工具链是
Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/arm-none-linux-gnueabi
Run Code Online (Sandbox Code Playgroud)
我的编译开关是
-march=armv6k -mcpu=mpcore -mfloat-abi=softfp -mfpu=vfp
Run Code Online (Sandbox Code Playgroud)
如何找出杀死我的应用程序的进程,或者我必须更改的设置?
PS:我创建了一个简单的HelloWorld应用程序,它也无法运行!
$ ldd Hello
$ …Run Code Online (Sandbox Code Playgroud) 我有一个带运动按钮和 PIR 运动传感器的门鸟视频门铃。摄像机还可以提供连续馈送,我通过 Synology Surveillance Station 作为通用 ONVIF 摄像机进行录制。此 ONVIF 摄像机未将运动传感器或铃铛按钮定义为数字输入,这是在 Surveillance Station 中与它们交互的正常方式。但是,DoorBird 可以触发 GET 请求(至少在按下按钮时,可能用于 PIR 传感器),因此我希望使用此 GET 请求功能而不是正确的 ONVIF 事件支持。
使用可从 WEB UI 获得的 Surveillance Station 'Action Rules',我希望将其与动作事件联系起来。我使用“外部设备”(网络请求调用)添加了一个新事件。
“外部事件”将生成这样的链接。
http://192.168.1.5:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method= "触发器"&version=1&eventId=1&eventName="这是外部事件1"&account="doorbird"&password="changeme"
这有效,我得到了一个“成功”的 json 响应和一个它注册的事件。问题是我想注册一个正常出现在相机时间轴中的相机运动事件。
这里的问题是无法将此事件用作 Surveillance Station 内的“运动”检测事件。您只能打开和关闭家庭模式或调用音频输出。我希望触发运动事件,以便在我连续录制相机时显示在相机时间线中。
获取 Surveillance Station 的当前版本。
http://192.168.1.5:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Info&method=GetInfo&version=1&account= "doorbird"&password="changeme"
获取当前相机信息。请注意,'basic=true' 发送附加的基本数据,它不是'只是'基本数据。例如,除非basic=true,否则不会发送相机 ID 。
http://192.168.1.5:5000/webapi/entry.cgi?privCamType=1&version= “8” &基本=真streamInfo =真API = “SYNO.SurveillanceStation.Camera” &camStm = 1&方法= “列表” &帐户= “doorbird” &密码= “改变我自己”
所以我有相机 ID,但此时我被卡住了。我不确定是否可以针对相机馈送触发等效的运动事件。
我使用 PyCharm 已经有一段时间了,最近我用 NAS 升级了我的存储系统。
一切正常,除了一个:PyCharm 经常扫描我的文件以重新索引它们。这让我浪费了很多时间等待它结束。
当重新索引发生时:
所以它基本上一直发生,需要很长时间(有时几分钟)。
杂项:
你有什么想法来解决这个问题吗?
我想使用的说明,我的Synology DS209导轨安装Ruby http://wiki.joachimschuster.de/index.php/Install_Ruby_on_Rails_and_Redmine_on_DS210%2B.我已经检查了所有的先决条件(除了redmine-user,我认为这不是问题),并且rubygems和zlib软件包安装就好了ipkg.
但是,当我运行时gem,我收到以下错误:
DiskStation> gem
/opt/bin/gem: line 8: require: not found
/opt/bin/gem: line 9: require: not found
/opt/bin/gem: line 10: require: not found
/opt/bin/gem: line 12: required_version: not found
/opt/bin/gem: line 14: unless: not found
/opt/bin/gem: line 15: abort: not found
/opt/bin/gem: line 16: end: not found
/opt/bin/gem: line 21: syntax error: unexpected "("
DiskStation>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
编辑:删除并重新安装rubygems显示以下内容:
DiskStation> ipkg remove -force-removal-of-dependent-packages ruby
Removing package rubygems from root...
Removing …Run Code Online (Sandbox Code Playgroud) 我想nginx在Synology NAS上使用前端服务器来进行反向代理.目标是为托管NAS的各种Web服务器使用的非标准端口号提供外观.nginx应该在端口80上侦听,否则这一切都没有任何意义.
然而,DSM开箱即用,其Apache服务器已经在端口80上侦听.它的作用真的很愚蠢:它只是重定向到端口5000,这是NAS Web管理器(DSM)的入口点.
我想要做的是禁用此功能,使端口80可用于我的nginx服务器.我怎样才能做到这一点 ?