先整点废话……
===============================================================
之前对rsync一直抱有敌意态度,不是rsync的问题,我一直以来是懒于看文档的,特别是像这种命令行的东西,懒得man,懒得google,昨天是实在无奈的时候尝试了一下,感觉好爽,再某些方面不是迅雷这些东西能比的,虽然迅雷的下载能力的确不错。
最近再搞Arch,虽然国内也有比较快的repo,但是总是想自己搞个本地repo,以备没有网络的时候使用,但是问题接踵而至,如何下载整个repo?
最早使用的方法是wget,下载整个目录,但是刷刷飞快而过的信息让我实在是不知道哪些没有成功下载,看着就不是很爽,而且wget会下载所有的文件,对于已经存在的文件来说,实在没有必要,而且wget使用的是单线程下载,不好!终于忍受不了单线程的速度,决定使用迅雷了,将近4K个文件,接近15G的数据,使用迅雷来说速度是上去了,能达到8~10M的速度,可以算是飞快了,之前几次都是使用迅雷下载的,但是昨天发现迅雷不行了,在下载了不到2G的数据的时候,速度居然变成了不到10K,估计是服务端搞的鬼吧,也难怪,我这里的速度实在是太占带宽了……随即尝试rsync了,感觉还不错,很快,而且可能自动跳过完全相同的文件只更新不同的文件,大大的减低了网络传输负载,很好。。。
用法和命令行参数
===============================================================
本地目录同步
a) rsync -av --progress <src-dir>/ <dst-dir> *** 注意(/) ***
同步src-dir目录下所有文件到dst-dir目录下
b) rsync -av --progress <src-dir> <dst-dir>
同步src-dir目录下所有文件到dst-dir/src-dir目录下
c) rsync -avu --progress --delete <src-dir>/ <dst-dir>
对src-dir目录内容向dst-dir目录下进行差异更新,有增加/更新则添加替换,有减少则对其删减
d) rsync -av --progress --temp-dir=/tmp <src-dir>/ <dst-dir>
比a)多了--temp-dir=/tmp,即指定/tmp为临时交换区,这样可以避免因目标目录空间不够引起的无法同步文件的错误。
异地主机之间同步
a) rsync -avz --progress <src-dir> jack@192.168.0.1::<dst-dir>/
同步本地<src-dir>目录的内容到远程主机192.168.0.1的<dst-dir>目录下,jack是rsync数据库用户
b) rsync -avz --progress <src-dir> jack@192.168.0.1::<dst-dir>/ --password-file=/home/jack/rsync.jack
通过自动读取用户密码而实现非交互登录文件同步
c) rsync -avuz --progress --delete <src-dir> jack@192.168.0.1::<dst-dir>/ --password-file=/home/jack/rsync.jack
较b)多了-u和--delete
d) rsync -avz --progress jack@192.168.0.1::<dst-dir>/<src-dir> <dst-dir>
同步远程主机内容到本地目录
说明
---------
-a archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-u 等同于 --update,在目标文件比源文件新的情况下不更新
-v 显示同步的文件
--progress 显示文件同步时的百分比进度、传输速率
--delete 删除目标目录中多于源目录的文件
-z 等同于 --compress,对传输的文件压缩,这对节约网络带宽或在网络资源紧张的情况下非常有用
--password-file 引用192.168.0.1上rsync用户jack口令的本地文件,创建方法如下
shell> echo "jackpwd" >> /home/jack/rsync.jack
shell> chown jack:wheel /home/jack/rsync.jack
shell> chmod 600 /home/jack/rsync.jack
-P 等同于 --partial,保留那些因故没有完全传输的文件,以是加快随后的再次传输
常用的差不多就这些了,以后有用到的再说吧……
arch repo的同步脚本
===============================================================
(在shell分类中)