rsync续传大目录一例
场景
要将大约60T的文件从一台服务器上搬到另外一台上。两边分区还不一样大,一边是一个整的60T大分区,另一边是15T一个的小分区。
解决思路
类比茶壶倒水,一个分区一个分区的填,填满一个再填第二个。
步骤
先将要同步的目录名全路径按时间排序写到一个文件里。每次从文件里取一行来做同步,成功则写入日志1中,失败则写入日志2中并记下时间戳。
每次同步前先检查日志1,如果存在则跳过。
代码实现
#!/bin/bash prefix=/root/rsync/xvdf1/sync_1_300
mkdir -p $prefix input_file=$prefix/fdlist.txt success_log=$prefix/sync_status1.log
failure_log=$prefix/sync_status2.log
process_log=$prefix/sync_status3.log
details_log=$prefix/sync_status4.log du_log=$prefix/tmp_du.log touch $success_log $failure_log $process_log $du_log $details_log DEST=/xyz/xvdf1/192.168.10.112/ifs/home/xyftp/xyftpdir06/ count=
toltal=`wc -l $input_file|awk '{print $1}'`
while read src_fd
do while read line_st
do
if [[ $line_st == $src_fd ]]
then
rate=`echo "scale=4;($count/$toltal)*100"|bc`
echo -e "[$count/$toltal]\t$rate\t$src_fd\tSkip"
count=`echo $count+|bc`
continue
fi
done <$success_log rate=`echo "scale=4;($count/$toltal)*100"|bc`
echo -e "[$count/$toltal]\t$rate%\t$src_fd" >$process_log
du_str=`du -sh $src_fd` echo -e "$count\t$du_str ... ..."
rsync -avz --delete $src_fd root@192.168.240.69:$DEST > $details_log ret=$? if [[ $ret -eq ]]
then
echo -e "[$count/$toltal]\t$rate\t$src_fd\tSuccess"
echo -e "$count\t$du_str">>$du_log
echo "$src_fd">>$success_log
count=`echo $count+|bc`
else
time_stap=`date "+%Y-%M-%d %H:%m:%S"`
echo -e "[$count/$toltal]\t$rate\t$src_fd\tFailure"
echo -e "[$count/$toltal]\t$rate\t$src_fd\tFailure\t$time_stap" >>$failure_log
du_str=""
count=`echo $count+|bc`
break
fi
done <$input_file echo "Summary:"
echo "====================================="
echo "Success list:"
echo "-------------------------------------"
cat $success_log
echo "Failure list:"
echo "-------------------------------------"
cat $failure_log
echo "Last one:"
echo "-------------------------------------"
cat $process_log
备注
- 因为目录太大,可以拆片执行。比如 cat ../folder_list.txt | sed -n '1,300p' > fdlist.txt 每300行作为一个输入文件,这样可以并行执行。
- rsync走ssh-ftp传输时要输入密码的,可以提前做ssh-public-key配好就不会被阻断了。
- 因bash兼容性问题,调试前将rsync改为 -dry-run 模式,可能不同的linux发行版执行时会出错。
rsync续传大目录一例的更多相关文章
- 30分钟玩转Net MVC 基于WebUploader的大文件分片上传、断网续传、秒传(文末附带demo下载)
现在的项目开发基本上都用到了上传文件功能,或图片,或文档,或视频.我们常用的常规上传已经能够满足当前要求了, 然而有时会出现如下问题: 文件过大(比如1G以上),超出服务端的请求大小限制: 请求时间过 ...
- Android应用开发之使用Socket进行大文件断点上传续传
http://www.linuxidc.com/Linux/2012-03/55567.htm http://blog.csdn.net/shimiso/article/details/8529633 ...
- NuGet包断线续传下载
NuGet包断线续传下载(金庆的专栏)NuGet是VC的扩展,用来下载依赖包.NuGet下载没有断线续传,下载源又很容易断开. https://nuget.org/api/v2/ https:// ...
- vue上传大文件控件
文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹.今天研究了一下这个问题,在 ...
- Web上传大文件的解决方案
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是 ...
- js+分布上传大文件
文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹. ...
- web页面上传大文件有没有好的解决方案
本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...
- QQ上传大文件为什么这么快
今天和同事在群里讨论“QQ上传大文件/QQ群发送大文件时,可以在极短的时间内完成”是如何做到的. 有时候我们通过QQ上传一个几百M的文件,竟然只用了几秒钟,从带宽上限制可以得出,实际上传文件是不可能的 ...
- php无法上传大文件完美解决方案
php.ini无法上传大文件完美解决办法 1.打开php.ini(打开方式就不用说了,百度一大堆) 2.查找post_max_size 表单提交最大数值,此项不是限制上传单个文件的大小,而是针对整个表 ...
随机推荐
- 解决vue路由history模式刷新后404的问题
server { listen ;#默认端口是80,如果端口没被占用可以不用修改 server_name localhost; root E:/vue/my_project/dist;#vue项目的打 ...
- 使用 JRebel 进行远程热部署
JRebel支持热部署,和远程热部署,本文我们来搭建一下远程热部署. 一.服务器安装 JRebel 1.官网下载最新的 JRebel 安装包,下载链接:https://zeroturnaround.c ...
- 从零开始学 Web 之 JavaScript(三)函数
大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...
- python3爬虫——下载unsplash美图到本地
最近发现一个网站www.unsplash.com ( 没有广告费哈,纯粹觉得不错 ),网页做得很美观,上面也都是一些免费的摄影照片,觉得很好看,就决定利用蹩脚的技能写个爬虫下载图片. 先随意感受一下这 ...
- JavaWeb学习 (十)————Cookie
一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...
- cvte前端笔试后的js原型总结
最近实习生招聘已经开始了,昨天晚上也终于迎来了第一场笔试,笔试的公司是cvte,笔试题总共27题,25道不定项还有2道编程题,虽然出的都是前端题,但是因为之前没有好好准备,还是很多做的不是很好o(╥﹏ ...
- c语言中阶乘的精确值
对于大数的操作,可能超出int,甚至long的表示范围,对此,可以使用数组来存储大数,下列代码为求1000以内数的阶乘的代码,代码如下: #include <stdio.h> #inclu ...
- nopCommerce 3.2新功能
NopCommerce版本3.20,上周被释放,对于那些你谁还不熟悉新版本或刚经过脱脂发行说明我们的新功能的详细介绍. 在nopCommerce 3.20新功能的工作往往需要某些设置或语言资源的快速修 ...
- 浅谈MemCahe
MemCahe 首先介绍下memcahce的定义:是一个分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要频繁访问数据库的网站访问速度提升效果十分显著. 接下来介绍 ...
- LeetCode 任务调度器-Python3<八>
题目:https://leetcode-cn.com/problems/task-scheduler/description/ 给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 ...