关于如何把文件传回本地,我最初的想法是打包为一个tar文件,但这样势必导致磁盘空间缩水。比如我的VPS磁盘大小是30G,那么我至多只能下载15G的数据,因为打包后还会生成一个15G压缩包。同样直接把文件拷贝到/var/www也会有类似弊端。假如剪切过去,就不能做种了。而且手动把文件移来移去,让人心里很不舒服。假如直接就把incoming设在/var/www下呢?太不安全!因为/var/www是任何人都能访问的。
就没两全其美的法子么。起初我想写一个bash脚本,于是开始看鸟哥的linux教材。没想到看着看着发现了更有趣的东西。一行命令解决问题。
Linux的cp命令非常强大,能建立类似于windows中快捷方式的文件,但这文件又不局于快捷方式的指向作用,而是和源文件有同样的权限,能力。
开始我尝试: cp -s -r /root/.mldonkey/incoming/files/*.* /var/www/downloads/
失败,因为虽然建立了捷径档案,但在http:\\ip\目录 中访问是空的,可能apache不能识别软捷径档。cp -l -r /root/.mldonkey/incoming/files/*.* /var/www/downloads/
成功!现在就能直接在http:\\ip\目录下载了!而且不占用多余的磁盘空间。拷贝之前df -hl查看,使用6%。拷贝后查看,依然是6%。
执行过一次后,在命令前加\,就可以跳过默认的-i参数,不用确认每个覆盖动作。尝试ln命令在两个目录间产生链接,如此一来就能一劳永逸了,但遗憾的是无法把硬链接指向目录,而apache又不识别软链接。于是如此一来你的盒子就完美了吗?完美了吗?接下来你又想折腾什么呢?追记:如何验证文件完整性。
md5sum在linux中是一个默认附件的组件,直接使用就OK
md5sum /root/.mldonkey/incoming/files/*.* > /var/www/downloads/XXXX.md5
在GBK下内容都正常。不过生成的md5文件里头全是绝对路径囧,我man了一下好像也没有关于绝对路径相对路径的参数,如果想在本地使用的话就只能用notepad打开编辑一下把路径删掉了。
不过稍微上手一点之后,linux真是个非常非常棒的系统。感觉一切都在掌握,而不是像win一样,面对一个五光十色的小盒子,却不明白它内部是怎么运作的,一出点问题,按哪里也解决不了就开始手忙脚乱。