SHELL TIPS: rsync 和 crontab 变量
浏览:3058次 出处信息
本周我遭遇了一个惨痛事件,远程开发机有两块硬盘同时损坏,整个分区数据完全丢失。这直接导致我在开发机上 home 目录中所有文件人间蒸发了,真是一觉回到解放前!
值得庆幸的是这件事发生在端午假期中间,放假前我把大部分源代码都提交到了库里,辛苦劳动的损失倒不大。但是之前种种努力搭建的开发环境全丢失了,这一点让人很郁闷。为了不再遭受这样的损失,我痛下决心学习了一下 rsync,用来同步和备份数据。
不得不说 rsync 也是一个神器啊,man rsync 发现有各种灵活用法,最有用的我觉得还是通过 ssh 来备份的方法。发现了这个秘密后,我觉得用来备份自己的网站数据也不错。下面是我使用的参数:
rsync -avzuptS --delete --max-delete=100 -e "ssh" username@solrex.org:~/ ~/backup
如果懒得输入 ssh 密码,可以使用 ssh 公钥认证 。
一旦配置了公钥认证,这个备份命令就可以定制为 cron 任务定时执行了。这时候我发现一个有趣的问题:如果镜像了整个 home 目录的话,无法记录命令执行日志。 因为无论日志写入到 home 目录下哪个地方,都会因为远端没有这个文件被 rsync 删除掉。无奈之下只好使用笨方法,让 cron 把同步日志发邮件给自己。
$ crontab -l SHELL=/bin/bash HOME=/home/work MAILTO="someone@somesite.com" PATH=/home/work/local/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin 00 21 * * * mirror_site
把 SHELL 配成 /bin/bash 的原因是 /bin/sh 可能会导致一些不常见的诡异问题,例如这个。同样,在 crontab 中声明 PATH 环境变量可以避免某些命令找不到的问题,特别是自己写的放在 home 目录的脚本。
建议继续学习:
- rsync同步的艺术 (阅读:8434)
- 你可能不知道的Shell (阅读:7077)
- Linux探索:一次删除一百万个文件的最快方法 (阅读:5968)
- 面向对象的Shell脚本 (阅读:5289)
- 在 shell 脚本里打日志 (阅读:4921)
- Bash如何取得当前正在执行的脚本的绝对路径? (阅读:5003)
- 使用Shell快捷键助你一臂之力 (阅读:4561)
- rsync 的核心算法 (阅读:4578)
- Dropbox差异同步算法rsync及其改进算法原理 (阅读:4405)
- rsync自动输入密码实现数据备份 (阅读:4200)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:grep 命令的buffer选项
后一篇:linux下如何自动提升权限 >>
文章信息
- 作者:Solrex Yang 来源: Solrex Shuffling
- 标签: crontab rsync shell
- 发布时间:2011-06-10 13:57:53
建议继续学习
近3天十大热文
-
[69] find命令的一点注意事项
-
[53] 读书笔记-壹百度:百度十年千倍的29条法则
-
[38] 小屏幕移动设备网页设计注意事项
-
[37] memory prefetch浅析
-
[36] 卡诺模型―设计品质与设计价值的思考
-
[31] Oracle bbed工具的编译
-
[23] 杨建:网站加速--Cache为王篇
-
[21] 程序员技术练级攻略
-
[21] 在vim保存时获得sudo权限
-
[20] 洋葱式信息安全观察:信息安全与业务浪涌