我有两台机器,速度和质量.speed具有快速的Internet连接,并且正在运行将大量文件下载到磁盘的爬虫.质量有很多磁盘空间.我想在下载完成后将文件从速度移动到质量.理想情况下,我只是运行:
$ rsync --remove-source-files speed:/var/crawldir .
但我担心rsync会取消尚未完成下载的源文件的链接.(我查看了源代码,但我没有看到任何可以防止这种情况的内容.)有什么建议吗?
在我看来,问题是在文件完成之前传输,而不是你要删除它.
如果这是Linux,则进程A可以打开文件,进程B可以取消链接文件.没有错误,但当然A浪费时间.因此,rsync删除源文件的事实不是问题.
问题是rsync只有在复制后才删除源文件,如果它仍然被写入磁盘,你将有一个部分文件.
怎么样:挂载mass
为远程文件系统(NFS可以工作)speed
.然后直接对文件进行Web爬网.
您对下载过程有多少控制权?如果您自己滚动,则可以将正在下载的文件转到临时目录,或者在完成下载之前使用临时名称,然后在完成后将其命名为正确的名称.如果您使用的是第三方软件,那么您没有那么多控制权,但您仍然可以执行临时目录.