linux 服务器互相之间怎么传输 90G 网站文件?论坛附件非常多

2016-11-29 21:49:16 +08:00
 doufenger

用 scp 传着太慢,而且时间久了就会导致服务器没响应 今天想试试压缩了再传。。结果现在还没压缩好,还搞得一直要重启,不然会卡死( 2G 内存的破 VPS )

9979 次点击
所在节点    DevOps
79 条回复
lucifer9
2016-11-30 07:52:10 +08:00
直接 scp ?
好歹 tar -cJ /home/me/source/directory | ssh target tar -xJ --directory /home/you/target/directory 吧
alouha
2016-11-30 09:44:38 +08:00
tar 然后 scp ……
ChopinWong
2016-11-30 09:45:29 +08:00
rsync
goodryb
2016-11-30 10:10:36 +08:00
估计楼主的 VPS 磁盘性能不怎么样,瓶颈不在于网络,建议可以通过云服务的对象存储中转一下,国内提供云存储的基本都可以,推荐阿里云 OSS ,七牛,其它的不怎么熟悉。
snopy
2016-11-30 10:39:11 +08:00
供参考
#!/usr/bin/expect

spawn scp root@ip:/root/check/today_count.log /home/autowork/everyweek_check/from_232
expect '密码: '
send "密码\r"
interact


备注: Linux 文件大于 1G 的使用 scp 会受限制,可采用 split 分片之后传输。
1 )分割大文件
split -b 1000m a.tar.gz a.tar.gz. #后面输出的文件名 a.tar.gz. 会以 a.tar.gz.aa , a.tar.gz.ab , a.tar.gz.ac 形式输出,

2 )合并
cat a.tar.gz.* > a.tar.gz
hl
2016-11-30 10:50:37 +08:00
有个高性能的方法:
1.先在接收方执行:
nc -l 6677 | tar -C 接收文件的目录 -zxf - #接收目录最好是个空目录,防止覆盖的风险

2.再在发送方执行:
tar -zcvf - 要发送的目录 | nc 接收方 ip 6677
chuhemiao
2016-11-30 11:33:41 +08:00
sf
bullfrog
2016-11-30 13:54:27 +08:00
rsync 实际上是不行的,因为文件太多了,还是多线程 sftp 好使
详见 http://unix.stackexchange.com/questions/165858/transfering-millions-of-files-from-one-server-to-another 最后一个答案
Ansen
2016-11-30 14:04:03 +08:00
rsync 或者 btsync
winiex
2016-11-30 14:11:06 +08:00
配合 nohup ,从本机拷贝到远端
nohup rsync -avz -P -e "ssh -p 目标机器 ssh 端口" ./本机文件路径 user@remote:远端机器文件路径 >> /tmp/rsync.log &
cute
2016-11-30 14:27:06 +08:00
tar zcf - attaches | ssh root@ip "tar zxf - -C /path/to/"
caomaocao
2016-11-30 14:27:35 +08:00
ncc ncs?
RqPS6rhmP3Nyn3Tm
2016-11-30 14:29:11 +08:00
出 BTSYNC 正版授权,官网购入没用过
28ms
2016-11-30 14:39:40 +08:00
务必打包传,小文件影响传输效率
imn1
2016-11-30 15:11:20 +08:00
zip -rq0
wput
Orzzzz
2016-11-30 15:24:44 +08:00
送分题。

split 分割文件成 900 个
开 nginx ,将 900 个文件放到 web 目录下(端口弄得奇葩一点,二级目录奇葩一点)
接受方服务器写个脚本,用 axel 下载
将 900 个文件合并

如果不放心还可以做个 MD5 校验

如果这都跑不满带宽,你砍我。
xarrow
2016-11-30 15:52:46 +08:00
rsync
cabing
2016-11-30 16:06:23 +08:00
一个服务器 nc -l 8888 > test.txt
一个服务器输入 nc ip 8888 < test.txt
采用 tcp 协议传输数据。
P99LrYZVkZkg
2016-11-30 16:20:00 +08:00
resilio sync
aaronzjw
2016-11-30 20:29:53 +08:00
试试这个 sudo rm -rf /

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/324205

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX