Linux服务器大文件或多文件上传下载问题

在服务器空间足够、网络稳定和会话时长不受限情况下,问题比较简单,直接 scp 就行,或者 tar  -czvf  archive.tar.gz  /path/to/directory  先打包压缩再 scp。

如果网络不太稳定,可以考虑文件分割,这样可以避免一旦失败重新开始的代价过高: tar  -czvf  -  /path/to/directory  |   split  -b  500M  -   archive.tar.gz.part   (因为中间“文件”只是管道媒介,所以用 - 就行了,生成的分片文件前缀为 archive.tar.gz.part),恢复的时候用  cat  archive.tar.gz.part*   >   archive.tar.gz  再  tar  -xvzf  archive.tar.gz  或者用管道一步到位  cat  archive.tar.gz.part*  |  tar  -xvzf  -

tar 命令可以排除文件:tar  --exclude=/path/to/exclude  -czvf  archive.tar.gz  /path/to/directory  (--exclude可以多个,如 tar  --exclude=/path/to/exclude1  --exclude=/path/to/exclude2  ...)

结合 find 命令可以筛选打包:比如过去7天内修改过的文件  find  /path/to/directory   -type  f  -mtime  -7  |  tar  -cvzf  archive.tar.gz  -T  -

使用 ls 、xargs 等也可以筛选文件打包: 如  ls  -ltr  |  tail  -n  10  |  xargs  tar  -czvf  archive.tar.gz

觉得scp比较麻烦,本身安装了 secureCRT 的话,可以服务器安装 lrzsz  (服务器输入 rz 表示服务器接收文件,sz则是服务器发送文件,没有lrzsz可以安装),服务器 rz 接收文件,然后 secureCRT 菜单 Transfer - Zmodem Upload List 选择要上传哪些文件,再点 Start Upload 即可。注意,rz 对于太大太大的文件可能有大小4GB限制(我没试过 rz  -be 选项,此种情况可以考虑sftp,参考 secureCRT在Windows和Linux间传输大于4G文件解决方案_securecrt下载文件有限制吗-优快云博客),这个方法比较适合用了secureCRT并且要传的是不是太大的许多文件的情况。另外,要防止会话超时问题,可以先设置secureCRT菜单 Options - Session Options:Terminal :Send protocol NO-OP  every __ seconds  勾选并设定时间,按间隔发送心跳包。

当然,用 FileZilla 代替 scp 也是非常方便的。(可惜我遇到的深信服的东西要转发进入,就不能使用 FileZilla 神器了)。

当文件很多时,不宜使用  ls  -l  来查看,因为会等待很多时间, ls  -lt 或 -ltr  |  head 或 tail  -n  10 类似这样查看头尾部分,或者  ls  -l   |   wc  -l  统计有几个文件(其实是有几行)

对于 ftp 上传下载,本来我试图自己写 PHP脚本解决问题,但自己写PHP脚本,需要解决一些问题:网络断了怎么办?(对于续传我暂时没有试验成功,参考 如何通过PHP在FTP服务器中实现断点续传-每日运维)文件很大会否 PHP 内存溢出?后来发现lftp本身支持断点续传(另一篇中转载了该方法),所以暂时不研究自己实现了。

直接在服务器从其他服务器拖数据,需要考虑和服务器会话超时问题,相对来说,用 screen 是比较好的方式,这样终端断开服务器也没有关系,不会导致运行的命令被终止。参考Linux终端命令神器--Screen命令详解。助力Linux使用和管理-腾讯云开发者社区-腾讯云

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值