之前在折腾:
期间,硬盘空间只有120G空余。
而现在已爬取100G左右,估计还剩200G左右。硬盘不够用了。
所以现在希望找个办法,能否解决:
不去换电脑,不重新运行爬虫PySpider,不改动代码的数据的保存路径,的前提下,还能继续爬取的办法。
后来想到了:可以通过给此处output下面的course和user:
去建立对应的软连接。
目标是连接到:
外接移动硬盘中的某个目录
这样,就可以:
保持原先PySpider的代码,包括数据保存路径不变的前提下,PySpider的爬虫可以继续运行。
继续保存数据到output目录,通过软连接重定向到外接的移动硬盘了。
大致步骤是:
暂停PySpider爬虫运行
把现有的output目录的数据,全部拷贝到外部移动硬盘中
建立软连接
恢复PySpider爬虫运行
命令行中也暂定了:
然后再去Mac中接入外部移动硬盘
还剩800多G空间,确保足够大去保存数据。
然后新建个文件夹:
再去终端中看看,对应的路径是多少:
拖动文件夹到iTerm中,即可显示:
<code>➜ xx pwd /Volumes/内容备份1/Backup/20180601/Offline/xx </code>
然后拷贝(剪切)数据过来:
结果:
估计是由于,中间电脑休眠了一次,导致屏幕解锁后,发现拷贝已停止
只能想办法继续重新拷贝,结果再去剪切Mac中的user文件夹中的文件,到移动硬盘对应目录时,
单独是mac中user文件夹,剪切之前,开始统计有多少个文件夹,结果卡死在20多万个,就停止了。
点击取消时,竟然提醒,还要80多G才能继续操作,问我是否要管理磁盘,我不理会,取消。
然后去命令行中操作,然后去统计发现,mac中此处user还有80多G
然后再去统计移动硬盘中的output目录空间的占用,结果耗时巨长:
始终无法返回结果。。
结果去mv时:
<code>➜ output git:(master) ✗ mv user /Volumes/内容备份1/Backup/20180601/Offline/xx/user </code>
竟然说没有足够空间了:
<code>mv: /Volumes/内容备份1/Backup/20180601/Offline/x/user/user/34055692: No space left on device mv: user/34055692: unable to copy extended attributes to /Volumes/内容备份1/Backup/20180601/Offline/x/user/user/34055692: No space left on device mv: /Volumes/内容备份1/Backup/20180601/Offline/x/user/user/34055692/user_34055692_info.json: No such file or directory mv: utimes: /Volumes/内容备份1/Backup/20180601/Offline/x/user/user/34055692: No such file or directory </code>
然后去看移动硬盘,发现空间占用是0,剩余0
感觉是:
user下面几十万个文件夹,导致无法加载出来,导致数据统计也不能正常显示,文件夹列表页列不出来了。
再去看看移动硬盘,结果可用是0:
-》然后才注意到:
之前是:
这个1T的硬盘,实际上只有100多G空余:
之前看错了,800多G是:已使用的
所以,此处需要换个移动硬盘,然后重新拷贝数据过去
然后再去把1号盘数据,mv剪切到2号盘中:
然后就等待吧。
经历了几个小时后,终于拷贝完成了:
1号盘:
2号盘:
接着需要再去把mac中的30多G的user,拷贝到1号盘中:
<code>➜ output git:(master) ✗ pwd /Users/crifan/dev/dev_root/xxx/output ➜ output git:(master) ✗ mv user /Volumes/内容备份2/Backup/20180601/Offline/xx/ </code>
然后后来发现2号盘空间也不太够了,只有70多G了。肯定不够后面的保存数据用的。
所以再去腾出点空间,删除了video_data额400多G,现在空余400多G:
这样够用了。
然后就可以去创建软连接了
<code>ln -s /Volumes/内容备份2/Backup/20180601/Offline/xx/course/ couse </code>
接着想要去统计文件空间占用,由于文件和文件夹太多,导致太慢,所以中断掉
另外,cd进去,是可以进入对应目标文件夹的
然后再去建立另外一个
<code>➜ output git:(master) ✗ ln -s /Volumes/内容备份2/Backup/20180601/Offline/x/user user ➜ output git:(master) ✗ ll -lha total 24 drwxr-xr-x 5 crifan staff 160B 9 21 09:23 . drwxr-xr-x 10 crifan staff 320B 9 18 16:19 .. -rw-r--r--@ 1 crifan staff 8.0K 9 20 09:13 .DS_Store lrwxr-xr-x 1 crifan staff 71B 9 21 09:20 couse -> /Volumes/内容备份2/Backup/20180601/Offline/x/course/ lrwxr-xr-x 1 crifan staff 68B 9 21 09:23 user -> /Volumes/内容备份2/Backup/20180601/Offline/x/user </code>
发现名字弄错了,再去重命名:
<code>➜ output git:(master) ✗ mv couse course ➜ output git:(master) ✗ ll -lha total 24 drwxr-xr-x 5 crifan staff 160B 9 21 09:24 . drwxr-xr-x 10 crifan staff 320B 9 18 16:19 .. -rw-r--r--@ 1 crifan staff 8.0K 9 20 09:13 .DS_Store lrwxr-xr-x 1 crifan staff 71B 9 21 09:20 course -> /Volumes/内容备份2/Backup/20180601/Offline/x/course/ lrwxr-xr-x 1 crifan staff 68B 9 21 09:23 user -> /Volumes/内容备份2/Backup/20180601/Offline/x/user </code>
后来发现软连接的文件夹的图标,和Windows中的快捷方式是类似的:
然后就再去继续运行爬虫了:
爬虫应该可以正常运行,应该可以保存数据到外接的移动硬盘上的
去试试,终端中运行PySpider:
<code>➜ x git:(master) ✗ pyspider phantomjs fetcher running on port 25555 [I 180921 09:25:21 result_worker:49] result_worker starting... [I 180921 09:25:22 tornado_fetcher:638] fetcher starting... [I 180921 09:25:22 processor:211] processor starting... [I 180921 09:25:22 scheduler:647] scheduler starting... [I 180921 09:25:22 scheduler:782] scheduler.xmlrpc listening on 127.0.0.1:23333 [I 180921 09:25:22 scheduler:126] project x updated, status:TODO, paused:False, 0 tasks [I 180921 09:25:22 scheduler:586] in 5m: new:0,success:0,retry:0,failed:0 [I 180921 09:25:22 app:76] webui running on 0.0.0.0:5000 [I 180921 09:25:36 scheduler:126] project x updated, status:RUNNING, paused:False, 0 tasks [I 180921 09:25:36 scheduler:965] select x:_on_get_info data:,_on_get_info [I 180921 09:25:36 tornado_fetcher:188] [200] x:_on_get_info data:,_on_get_info 0s [D 180921 09:25:36 project_module:145] project: x updated. [I 180921 09:25:36 processor:202] process x:_on_get_info data:,_on_get_info -> [200] len:12 -> result:None fol:0 msg:0 err:None [I 180921 09:25:36 scheduler:360] x on_get_info {'min_tick': 0, 'retry_delay': {}, 'crawl_config': {'headers': {'Umeng-Channel': 'xiaomi', 'AREA': '3205', 'DISTINCT-ID': '9b94f7d080378516', 'versionCode': '1087', 'App-Version': 'V5.1.0', 'User-Agent': 'android', 'Client-OS': '4.4.4', 'idfa': '865931021887427', 'Device-Model': 'MI 4LTE', 'Connection': 'Keep-Alive'}}} </code>
然后去WebUI中修改status为RUNNING:
然后终端中就可以继续执行了:
然后也能看到硬盘灯闪烁,表示数据写入了。
然后查看移动硬盘剩余空间大小,也一直在变化:
那的确说明正常写入数据了。
然后:
那剩下就是正常的继续爬取了。
这移动硬盘的400多G,应该够保存接下来爬取的数据了。
【后记1】
此处加了软连接之后,由于软连接的目标文件夹中后来已经爬取了大量数据,估计有几百G,导致现在VSCode中打开此项目根目录,无法快速检索完毕,始终显示加载中,无法快速打开项目了。
所以去删除软连接:
delete soft link on mac
macos – How do I remove a symlink? – Stack Overflow
直接删除即可。
抽空再去重建软连接:
<code>ln -s /Volumes/内容备份2/Backup/20180601/Offline/x/course/ course ln -s /Volumes/内容备份2/Backup/20180601/Offline/x/user user </code>