最新消息:20210917 已从crifan.com换到crifan.org

【已解决】Mac中创建软连接以解决保存PySpider爬取的数据太大导致的硬盘空间不够用

Mac crifan 2091浏览 0评论

之前在折腾:

【记录】用PySpider去爬取某app的数据

期间,硬盘空间只有120G空余。

而现在已爬取100G左右,估计还剩200G左右。硬盘不够用了。

所以现在希望找个办法,能否解决:

不去换电脑,不重新运行爬虫PySpider,不改动代码的数据的保存路径,的前提下,还能继续爬取的办法。

后来想到了:可以通过给此处output下面的course和user:

去建立对应的软连接。

目标是连接到:

外接移动硬盘中的某个目录

这样,就可以:

保持原先PySpider的代码,包括数据保存路径不变的前提下,PySpider的爬虫可以继续运行。

继续保存数据到output目录,通过软连接重定向到外接的移动硬盘了。

大致步骤是:

  • 暂停PySpider爬虫运行

  • 把现有的output目录的数据,全部拷贝到外部移动硬盘中

  • 建立软连接

  • 恢复PySpider爬虫运行

命令行中也暂定了:

然后再去Mac中接入外部移动硬盘

【已解决】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 -&gt; /Volumes/内容备份2/Backup/20180601/Offline/x/course/
lrwxr-xr-x   1 crifan  staff    68B  9 21 09:23 user -&gt; /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 -&gt; /Volumes/内容备份2/Backup/20180601/Offline/x/course/
lrwxr-xr-x   1 crifan  staff    68B  9 21 09:23 user -&gt; /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 -&gt; [200] len:12 -&gt; 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:

然后终端中就可以继续执行了:

然后也能看到硬盘灯闪烁,表示数据写入了。

然后查看移动硬盘剩余空间大小,也一直在变化:

那的确说明正常写入数据了。

然后:

【记录】Mac中从一个1T的硬盘移动数据到另一个4T的硬盘

那剩下就是正常的继续爬取了。

这移动硬盘的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>

转载请注明:在路上 » 【已解决】Mac中创建软连接以解决保存PySpider爬取的数据太大导致的硬盘空间不够用

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
94 queries in 0.189 seconds, using 23.41MB memory