小工具两个:wget & rsync

wget

支持 http,https,ftp。

安装

# pacman -S wget

参数

-b 后台下载,没有 -o 选项的话,默认记录在 wget-log 文件中
-c 断点续传
-r 递归下载
-nd 递归时不创建目录,将所有下载的文件放在当前目录下
-np 递归下载时不搜索上层目录
-k 将绝对链接转为相对链接,方便离线浏览
-i 多个链接下载,后面跟一个文件,写入下载的 URL
-o 把记录写到指定的文件中

$ wget  -r -c http://mirrors.163.com/centos/
将该目录下的所有文件都下载下来

$ wget -r -np -nd http://mirrors.163.com/archlinux/community/
下载 community 目录下的所有文件,不创建目录
 
$ wget -m –reject "*.iso" http://mirrors.163.com/centos/
$ wget -m -R "*.iso" http://mirrors.163.com/centos/
不下载含有 iso 的文件

$ wget -m -A "*.iso" http://mirrors.163.com/centos/
跟上面的相反

$ wget -b -c –limit-rate=3M -i ~/mirrors
$ vi ~/mirrors
http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-bin-1of8.iso
http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-bin-2of8.iso
http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-bin-3of8.iso
http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-bin-4of8.iso
http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-bin-5of8.iso
http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-bin-6of8.iso
http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-bin-7of8.iso
http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-bin-8of8.iso
使用 wget 下载镜像文件:

$ wget -r -p -np -k http://www.tldp.org/LDP/abs/html/
$ wget -m http://www.tldp.org/LDP/abs/html/
创建 Bash-Scripting 的一个镜像

在执行第一个命令的时候,发现结果并不是我们想要的,这里涉及到一个叫做 robots.txt 的文件,详细的解释请点击这里
看完上面的,大家再把 mirrors.163.com/robots.txt 打开来看一下就知道为什么你想下载的东西下不了了 :-)
解决的办法很简单,加上 –-execute robots=off 即可。

关于 proxy 的设置以及让 pacman 使用 wget 的方法请参见这里

个人认为,用的最多的就是直接获取某个包了,也就是如下的最简单的语法,这难道就是所谓的 大道至简?
$ wget ftp://ftp.gtlib.gatech.edu/pub/linux/distributions/archlinux/community/os/any/*

rsync

一个同步,备份工具,这里涉及的是基本的用法。

安装

# pacman -S rsync

参数

-z 开启压缩
-v 详情输出
-r 递归
-a 以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-u 仅仅进行更新,也就是跳过所有已经存在 DST,并且文件时间晚于要备份的文件
-l 保留软链结
-o 保持文件属主信息     
-g 保持文件属组信息
-D 保持设备文件信息
-t 保持文件时间信息
–progress 显示备份过程
–existing 仅仅更新那些已经存在于 DST 的文件,而不备份那些新创建的文件
–delete 删除那些 DST 中 SRC 没有的文件

$ rsync -vr /a/ /b/
对 /a/ 进行同步。
注意 /a 和 /a/ 的写法是有区别的,自己实验一下就知道了

$ rsync -av /a/ /b/
保留权限

$ rsync -av /a/ jaseywang@192.168.1.2:/b/
本地同步至远程,写法跟 ssh 的相同

$ rsync -av jaseywang@192.168.1.2:/a/ /b/
远程同步至本地

$ rsync -avu /a/ /b/
保留在 /b/ 中修改过的文件

$ sync -av –delete /a/ /b/
删除在 /b/ 中创建的文件

$ rsync -av –-existing /a/ /b/
只同步 /b/ 中存在的文件,不同步 /a/ 中新建的文件

$ rsync -avz –-exclude “A” /a/ /b/
不同步 /a/ 中的 A 文件或者目录
注意A 可以是一个文件或者目录

$ rsync -avz –-exclude “A/a” /a/ /b/
不同步 /a/ 中的 A/a 这个文件或者目录,也就是说默认 A 为目录了

$ rsync -avz –exclude-from=~/list /a/ /b/
想排除的文件较多时,运用此法,建议使用绝对路径

$ rsync -avz  –max-size=‘100M’ /a/ /b/
限制最大可同步的文件

$ rsync -avz –bwlimit=300 /a/ /b/
限制最大的传输速率 300KB/s

参考
https://wiki.archlinux.org/index.php/Wget
https://wiki.archlinux.org/index.php/Rsync

  • http://blog.ibfsu.com Carlos Gong

    我用 wget 的时候有三分之二的时候是要加那个无视 Robots.txt 选项的,看你说用的最多的是直接下载我突然觉得我真是太坏了……