红联Linux门户
Linux帮助

小弟刚上手ubuntu 问个简单的shell编程

发布时间:2011-07-24 15:21:24来源:红联作者:zjwbekcham
写个shell 参数是两个目录dir1 dir2(两个目录中只有目录文件和普通文件) 标准输入 脚本功能是把dir1中的文件或文件夹备份到dir2中 如果dir1中的某个文件在dir2上次备份之后没有修改则不做备份

1. #!/bin/bash
2. copydir()
3. {
4. first="$1"
5. second="$2"
6. if [ -d "$first" -a -d "$second" ]
7. then
8. for fileName in `ls "$first"`
9. do
10. file1="$first"/"$fileName"
11. file2="$second"/"$fileName"
12. if [ -d "$file1" ]
13. then
14. if [ -d "$file2" ]
15. then
16. copydir "$file1" "$file2"
17. else
18. mkdir "$file2"
19. copydir "$file1" "$file2"
20. fi
21. elif [ -f "$file1" ]
22. then
23. if [ -f "$file2" ]
24. then
25. set - `ls -l $file1`
26. date1="$6"
27. set - `ls -l $file2`
28. date2="$6"
29. if [ "$date1" != "$date2" ]
30. then
31. rm "$file2"
32. cp "$file1" "$second"
33. fi
34. else
35. cp "$file1" "$second"
36. fi
37. fi
38. done
39. return 0
40. fi
41. }
42.

43. if [ $# != 2 ]
44. then
45. echo "invalid input!"
46. exit 1
47. fi
48. copydir "$1" "$2"
49. exit 0

上面是我的代码 问题是运行后对普通文件没有问题 但是如果某个目录下有两个以上目录文件 则备份只备份一个 感觉是调用子程序的部分出问题了 求大牛指点!!
文章评论

共有 1 条评论

  1. age 于 2011-07-26 19:22:55发表:

    不用这么麻烦 ,一条rsync命令就实现了