热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux下备份、恢复脚本

工作需要,写了备份和恢复文件的脚本:conf文件:要备份和恢复的文件列表,支持正则,以#开头的为注释bak.sh文件:读取conf文件,并备份所有文件到当前目录的files目录

工作需要,写了备份和恢复文件的脚本:

conf 文件:要备份和恢复的文件列表,支持正则,以 # 开头的为注释

bak.sh 文件:读取 conf 文件,并备份所有文件到当前目录的 files 目录中(需要更改你自己的 $HOME
目录,如果需要,更改你喜欢的拷贝命令,默认 rsync)

restore.sh 文件:读取 conf 文件,并将 files 目录中的文件按 conf 文件恢复(需要更改你自己的 $HOME
目录,如果需要,更改你喜欢的拷贝命令,默认 rsync)

所有文件已经上传至百度云:http://pan.baidu.com/s/1gdECx95

 

bak.sh



1 #!/bin/sh
2 # Author lian
3 HOME="/home/lian"
4 cOnf="./conf"
5 dest_dir="./files"
6 #copy="cp -rpv"
7 #copy="rsync -avzPSH"
8 copy="rsync -avPSH --delete"
9 #copy="echo"
10
11 # calculate the total size
12 size=$(
13 sed -n -e "/^#/!p" $conf |
14 while read file
15 do
16 du -sb `eval echo $file`
17 done | awk BEGIN{sum=0} {sum+=$1} END{print sum}
18 )
19 #echo "Total size: $(($size/1024/1024)) MB"
20 # more accurate
21 echo "Total size: `echo "scale=4; $size/1024/1024" | bc` MB"
22
23 # now copy
24 if [ ! -d $dest_dir ]
25 then
26 mkdir $dest_dir
27 fi
28
29 :<<\EOF
30 if [ -d $dest_dir ]
31 then
32 sudo rm -fr $dest_dir
33 mkdir $dest_dir
34 else
35 mkdir $dest_dir
36 fi
37 EOF
38
39 sed -n -e "/^#/!p" $conf |
40 while read file
41 do
42 eval echo $file
43 done | awk {for(i=1; i<=NF; i++) print $i} | xargs -i sudo $copy {} $dest_dir
44
45 echo `du -sh | awk {print "Total copied size: " $1}`

restore.sh

 



1 #!/bin/sh
2 # Author lian
3 HOME="/home/lian"
4 cOnf="./conf"
5 src_dir="./files"
6 #copy="cp -rpv"
7 #copy="rsync -avzPSH"
8 copy="rsync -avPSH --delete"
9 #copy="echo"
10
11 # now restore
12 sed -n -e "/^#/!p" $conf | awk -F/ {
13 dir_name=$1
14 for(i=2; i)
15 {
16 dir_name=dir_name"/"$i
17 }
18 print dir_name":"$NF
19 } |
20 while read file
21 do
22 #dir_name=`dirname $file`
23 #dir_name=`echo "$file" | awk -F/ BEGIN{dir_name=$1}{for(i=1; i`
24 dir_name=$(eval echo `echo "$file" | awk -F: {print $1}`)
25 file_name=`echo "$file" | awk -F: {print $2}`
26 #echo $dir_name
27 eval echo $src_dir/$file_name |
28 awk {
29 for(i=1; i<=NF; i++)
30 {
31 cmd="echo "$i" | xargs -i basename {}";
32 cmd | getline var;
33 print var;
34 }
35 } |
36 xargs -i echo "$copy $src_dir/{} $dir_name" |
37 sh
38 done
39
40 echo "Total restored size: `du -sh $src_dir`"

 

我的 conf 文件:



# files needed to bak
$HOME
/.bash*
$HOME
/bin
$HOME
/.config
$HOME
/.dropbox*
$HOME
/.eclipse
$HOME
/.fontconfig
$HOME
/.getmail
$HOME
/.i3*
$HOME
/Life
$HOME
/Mails
$HOME
/.mplayer
$HOME
/.rtorrent.rc
$HOME
/.shutter
$HOME
/.spf13-vim-3
$HOME
/.sunpinyin
$HOME
/.thunderbird
$HOME
/.tmux.conf
$HOME
/.vim*
$HOME
/.virtinst
$HOME
/.virt-manager
$HOME
/.w3m
$HOME
/WorkDir
$HOME
/workspace
$HOME
/.[xX]*
/etc/httpd
/etc/my.cnf*
/etc/php*
/etc/rsync*
/etc/samba
/etc/vsftpd
/etc/hosts

linux下备份、恢复脚本,布布扣,bubuko.com


推荐阅读
  • 【实践】基于RTThread的智慧路灯案例实验分享
    之前分享了基于LiteOS的智慧农业案例实验分享基于LiteOS的智慧农业案例实验分享,阅读量挺不错,看样子大家都挺喜欢这种实验。那咱们就再来一个类似的实验:基于RT-Thread ... [详细]
  • packagetest;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOE ... [详细]
  • Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理,现在在企业中的使用率也是很广的。git是一个分布式的版本控制系统,不像以前的svn,svn是 ... [详细]
  • 看这里,教你如何快速将pdf文件翻译成中文
    因为网上下载的PDF资料,往往掺杂着一些英文,所以中英文翻译是一件很平常的事,毕竟不是每个人的英文都那么好,轻轻松松的就能够看完一篇英文的文件,那么,我们就要寻找翻译工具来帮助我们 ... [详细]
  • 作业迁移
    背景:数据库服务器更换,1、数据库迁移(BACKUPRESTORE);2、数据库登录名用户迁移(注意孤立用户);3、作业迁移数据库迁移,备份数据库、拷贝备份文件到新服务器,还原数据 ... [详细]
  • 定义:定义两个数论函数\(f\)、\(g\)的Dirichlet卷积为:\[\left(f*g\right)\left(n\right)\sum_{d|n}f\left(d\rig ... [详细]
  • 本文目录一览:1、谁有像这样的PHP论坛源代码“http://bbs.bccn.net/ ... [详细]
  • 安全3AAuthentication:认证Authorzation:授权Accouting|Audition:审计用户管理用户:UID:0,不一定是root,root的uid非0时 ... [详细]
  • 第38天:Python decimal 模块
    by程序员野客在我们开发工作中浮点类型的使用还是比较普遍的,对于一些涉及资金金额的计算更是不能有丝毫误差,Python的decimal模块为浮点型精确计算提供了支持。1简介deci ... [详细]
  • 一、如果使用默认的1521端口,让实例自动注册到该监听上,那么local_listener无需设置,listener.ora文件按照正常方 ... [详细]
  • 如何设计一个秒杀系统(各方面都写的很到位)
    1.Overview1.1并发读写秒杀要解决的主要问题是:并发读与并发写。并发读的优化理念是尽量减少用户到服务端来读数据,或者让他 ... [详细]
  • 页面按钮&amp;lt;buttonbindtap&amp;quot;addImg&amp;quot;class&amp;quot;addPng&a ... [详细]
  • 一、问题开发中遇到将其它数据库数据插入到mysql数据库表中一直会报类似如下错误:Incorrectstringvalue:\xE6\x88\x91forcolumn ... [详细]
  • 根据时间更改网站背景的脚本。热!
    我在网上找到了它,并以自己的方式对其进行了自定义;作者的功劳就在那里。实际上,这是一个用于更改背景颜色的脚本,并且在我看来& ... [详细]
  • 2019 年 Firebase 峰会上发布的新功能
    作者FrancisMa,HeadofProductFirebase的使命是帮助移动开发者和Web开发者迈向成功,但考虑到Firebase每个月有超过200万个活跃的应 ... [详细]
author-avatar
毛小猫TTN
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有