自动备份脚本 第二版发布啦

自动备份脚本 第二版发布啦

分类: Linux 87人阅读 评论(0) 收藏 举报

脚本比上一版新增了,记录时间戳功能。可以将你实时修改的文件进行备份。适合一些个人照片,文档,代码的备份;

./backup_file  目录下 应该有一个 list_file 目录用来存储文件列表和文件时间戳。

$1 为你需要备份的目录  。     $2  为备份到的目录

$1 不能为空, 后续会继续修改一些bug, 并进一步完善脚本,

若你发现那一段代码存在bug ,可以告知博主。或者你有更好的实现方法,也可以一起探讨。

还有现在这个脚本,目前还不能备份子目录,只能备份文件。 以后发布将会加上这个对子目录备份的功能。


[cpp] view plain copy
  1. #!/bin/sh

  2. # name      backup file        

  3. # author    acanoe              

  4. # timedate  2012_11_9  13:50    

  5. # versions  0.1

  6. judge_your_input()  

  7. {  

  8. if [ -z $1 ] ;  then  

  9. echo "please input your updatedir!"

  10. echo ""

  11. echo "example:"

  12. echo "./back_file /backdir /updatedir"

  13. echo "like this example"

  14. echo ""

  15. exit  

  16. fi  

  17. if [ -z $2 ] ; then  

  18. echo "please input your backdir!"

  19. echo ""

  20. echo "example:"

  21. echo "./back_file /backdir /updatedir"

  22. echo "like this example"

  23. echo ""

  24. exit  

  25. fi  

  26. }  

  27. clear_record()  

  28. {  

  29. if [ -e ./list_file/old_time_ioc ] ; then  

  30. rm ./list_file/old_time_ioc  

  31. fi  

  32. if [ ! -e ./list_file/new_time_ioc ] ;  then  

  33. echo "create a new_time_ioc"

  34. touch ./list_file/new_time_ioc  

  35. fi  

  36. if [ -e ./list_file/new_time_ioc ] ;  then  

  37. mv  ./list_file/new_time_ioc ./list_file/old_time_ioc  

  38. else

  39. touch ./list_file/old_time_ioc  

  40. fi  

  41. }  

  42. find_change_file()  

  43. {  

  44. ls $1   > ./list_file/update_file_list  

  45. ls $2   > ./list_file/back_file_list  

  46. while read line  

  47. do

  48. R=$(echo $line)  

  49. echo "$R `stat $1/$R  | sed -n '7p'`" >> ./list_file/new_time_ioc  

  50. if [ ! -e ./list_file/new_time_ioc ] ;  then  

  51. echo "create a new_time_ioc"

  52. touch ./list_file/new_time_ioc  

  53. fi  

  54. done < ./list_file/update_file_list  

  55. # while read line

  56. # do      

  57. # R=$(echo $line)

  58. # echo "$R `stat $2/$R  | sed -n '7p'`" >> ./list_file/old_time_ioc

  59. # echo "$R"

  60. # done < ./list_file/back_file_list

  61. diff ./list_file/new_time_ioc ./list_file/old_time_ioc  > ./list_file/diff_file  

  62. sed -n '/</p' ./list_file/diff_file > ./list_file/file  

  63. sed -e 's/< //g' ./list_file/file   > ./list_file/the_file  

  64. sed -e 's/< //g' ./list_file/file   > ./list_file/the_file  

  65. }  

  66. back_back_file()  

  67. {  

  68. while read line  

  69. do

  70. R=$(echo $line  | sed -e 's/ .*//g')  

  71. echo $R  

  72. cp $1/$R $2  

  73. done < ./list_file/the_file  

  74. }  

  75. find_not_exist()  

  76. {  

  77. ls $1   > ./list_file/file_list  

  78. ls $2 > ./list_file/back_list  

  79. diff ./list_file/file_list ./list_file/back_list  > ./list_file/diff_file  

  80. sed -n '/</p' ./list_file/diff_file > ./list_file/file  

  81. sed -e 's/< //g' ./list_file/file  > ./list_file/the_file  

  82. while read line  

  83. do

  84. R=$(echo $line)  

  85. echo $R  

  86. cp -rf $1/$R $2  

  87. done < ./list_file/the_file  

  88. }  

  89. judge_your_input $1 $2  

  90. clear_record  

  91. find_change_file $1  $2  

  92. back_back_file $1 $2  

  93. find_not_exist $1 $2  


你可能感兴趣的:(自动备份脚本,第二版发布啦)