Skip navigation.

每一天都是新的开始

每一天都是旧的重复

Debian Linux 架設使用 SSH 存取 的 Git Server

,

Git 是分散式的版本控制系統, 但是在此 分散式管理 之後再談, 先把 集中管理的部份 完成(試著把 SVN 做的事情取代掉).

Git 相關介紹
官方網站 Git – Fast Version Control System
Git Wikipedia (英文)
Git Wikipedia (中文)

Git 集中管理有 git://, http [ s ] : //, ssh://, rsync:// 等方式, 在此就先從 ssh:// 開始.
Git 安裝
apt-get install git-core # in Debian / Ubuntu Linux
前置作業

因為此篇是使用 SSH, 所以下述開始前, 需要先將 SSH key 產生好, 並於 Server / Client 放置完成. 可參考:
產生 ssh keygen 免輸入密碼
SSH 免密碼登入
Guides: Providing your SSH Key
相關資料準備
Server: example.com
Linux 帳號的群組: www-data (確認 /etc/group 的 www-data 有你的帳號, ex: www-data:your_account)
Project name: project_name
Git Repository: /var/cache/git
建立 Git Repository
mkdir -p /var/cache/git/project_name.git
cd /var/cache/git/project_name.git
git –bare init
chown root:www-data -R .
chmod g+rwx -R .
由 Git Repository 取得資料
git clone ssh://example.com/var/cache/git/project_name.git
cd project_name
touch index.html
git add index.html
git commit -m ‘init’
git push origin master # local 預設 clone 是 master, push 到 origin(remote server)

Counting objects: 3, done.
Writing objects: 100% (3/3), 210 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://example.com/var/cache/git/project_name.git
* [new branch] master -> master
touch test.html
git add test.html
git commit -m ‘add test.html’
git push # 第二次後, 只需要 push 即可, 不需加 origin master.
測試
mkdir /tmp/a /tmp/b
cd /tmp/a
git clone ssh://example.com/var/cache/git/project_name.git
cd /tmp/b
git clone ssh://example.com/var/cache/git/project_name.git
echo “hello” > hello.html # 於 b 新增一個檔案, 下述新增並 push
git add hello.html
git commit -m ‘add hello.html’ # local commit.
git push # 推到 Server 上.
cd /tmp/a # 於 a pull 拉下來後, 應該會看到 hello.html
git pull # 會看到 hello.html
相關網頁
Setting up a new remote git repository
Git起步
[GIT]提交後自動發mail

Source

Debian Linux 架設使用 SSH 存取 的 Git Server

,

Git 是分散式的版本控制系統, 但是在此 分散式管理 之後再談, 先把 集中管理的部份 完成(試著把 SVN 做的事情取代掉).

Git 相關介紹
官方網站 Git – Fast Version Control System
Git Wikipedia (英文)
Git Wikipedia (中文)

Git 集中管理有 git://, http://, ssh://, rsync:// 等方式, 在此就先從 ssh:// 開始.
Git 安裝
apt-get install git-core # in Debian / Ubuntu Linux
前置作業

因為此篇是使用 SSH, 所以下述開始前, 需要先將 SSH key 產生好, 並於 Server / Client 放置完成. 可參考:
產生 ssh keygen 免輸入密碼
SSH 免密碼登入
Guides: Providing your SSH Key
相關資料準備
Server: example.com
Linux 帳號的群組: www-data (確認 /etc/group 的 www-data 有你的帳號, ex: www-data:your_account)
Project name: project_name
Git Repository: /var/cache/git
建立 Git Repository
mkdir -p /var/cache/git/project_name.git
cd /var/cache/git/project_name.git
git –bare init
chown root:www-data -R .
chmod g+rwx -R .
由 Git Repository 取得資料
git clone ssh://example.com/var/cache/git/project_name.git
cd project_name
touch index.html
git add index.html
git commit -m ‘init’
git push origin master # local 預設 clone 是 master, push 到 origin(remote server)

Counting objects: 3, done.
Writing objects: 100% (3/3), 210 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://example.com/var/cache/git/project_name.git
* [new branch] master -> master
touch test.html
git add test.html
git commit -m ‘add test.html’
git push # 第二次後, 只需要 push 即可, 不需加 origin master.
測試
mkdir /tmp/a /tmp/b
cd /tmp/a
git clone ssh://example.com/var/cache/git/project_name.git
cd /tmp/b
git clone ssh://example.com/var/cache/git/project_name.git
echo “hello” > hello.html # 於 b 新增一個檔案, 下述新增並 push
git add hello.html
git commit -m ‘add hello.html’ # local commit.
git push # 推到 Server 上.
cd /tmp/a # 於 a pull 拉下來後, 應該會看到 hello.html
git pull # 會看到 hello.html
相關網頁
Setting up a new remote git repository
Git起步
[GIT]提交後自動發mail

Source

mysmgit-之git-on-windows快速上手

转载来自:http://www.kudelabs.com/articles/2008/09/24/mysmgit-之git-on-windows快速上手
作者: 黄文斌

大家好,本文旨在让Window环境下的Github新用户短时间内快速上手Git,不需要者请就此打住。


目标:看完本文,读者们可以应用在Windows下与Github结合进行项目的创建、添加控制文件、本地提交、远程更新和远程发布等常用的功能。


背景:一个月前,技术总监阿德带领我创建了名字叫“FancyEditor”的迷你型JS开源项目,并用新兴的Git作为版本控制工具,以后我们kudelabs 在http://github.com/kudelabs/ 上面将会开放更多的源码与网友
们分享、学习,共同进步。

刚开始用Git感觉很陌生,走了些弯路,特地写下本文提醒自己别再犯同样的错误,也鼓励下新加入Git的朋友,欢迎你。


一、 本人认为mysmGit目前是相当好用的Windows Git,当前使用的版本是Git-1.5.6.1,大家可以从: http://code.google.com/p/msysgit/ 得到最新的版本。

安装的过程不要管其他东西,一直点击<下一步>到安装结束。

安装完成后,新建一个项目文件夹,单击鼠标右键你会看到选项‘Git GUI Here’ 还有‘Git Bash Here’,请选择‘Git Bash Here’,该版本GUI视图给本人感觉实用性不好,先不讲它。


二、 设置SSH公钥,注意:这一步的正确配置非常重要,我们至少得有一个SSH公钥才能连接并操作Github或其他repo点上的项目。


跟着弹出Git窗口,DOS模式也许对于不习惯命令行的广大Windows用户是一种受罪。请咬咬牙忍一忍,因为真正需要用到的命令行并不是很多。

这里我们要配置本地与github.com之间的SSH 公钥

首先,请输入:ssh-keygen -C "你的email地址" -t rsa ,确定回车键连续4次,不管中间要求输入其他东西。该命令将生成一对非对称的公\私密钥,默认它们被存储在:

XP/2003用户:c:\Documents and Settings\登陆名\.ssh

Vista用户: c:\Users\登陆名\.ssh

该.ssh文件夹下面,密钥放在id_rsa文件里面,不用理会它;

SSH公钥放在id_rsa.pub里面,请用文本编辑器打开它,复制里面所有的字符。



假定此时的你已经注册了Github用户,在账号管理account页面,有个大大的“SSH Public Keys”栏目,请点击“add another public key”,Title可空(默认值为email)或者
任意,直接黏贴刚才复制的字符在Key文本域里面,最后点击Add Key!

SSH成功创建后:


三、 创建新的项目/ Create a New Repository,全局设置

在Github网站上创建一个新的项目



记住你看到的Your Clone URL: git@github.com:git-on-windows/rookies.git

这路径比较统一容易记,git@github.com冒号后面的第一个单词是你的用户名,’/’斜杠号后面是你的项目名称.git。

Okay,回到刚才的DOS窗口,我们要设置全局用户名称以及Email以方便Git知道你是谁。

分别输入:


git config --global user.email “你的email地址”

git config --global user.name “你的名称”


其实不严格来说,这一步可忽略,它并不影响以后你对项目的各种操作行为,只是让Git记录是由谁在执行操作。本人愚见认为在多人的团队开发过程中同一个项目用同一个SSH公钥的时候可见效果。

四、简单Git命令实战

依次输入下列命令:

1). git init #系统初始化git目录:

Initialized empty Git repository in D:/git_on_windows/.git/


2). touch READ #touch表示创建文件,文件名称是“READ”


3). git add READ #把文件READ加入git的版本控制


4). git commit -m 'any commit message' #提交新版本至git仓库,后面是提交信息:

Created initial commit b09873d: any commit message

0 files changed, 0 insertions(+), 0 deletions(-)

create mode 100644 READ


5). git remote add mybranch git@github.com:git-on-windows/rookies.git #创建本地与远程服务器的分支mybranch


6). git pull mybranch master #把远程服务器master分支的内容更新至本地mybranch分支


7). git push mybranch master #把本地mybranch分支所有的修改提交至远程git服务器

恭喜,朋友们,到这里我们已经完成了Git入门,请尽情享受Git带来的乐趣吧!


五、最后,顺便提一下刚开始用git命令容易出现的错误以及解决方法:


1).“Permission denied (publickey).”错误,SSH公钥没有设置好,请看本文章第二点:设置SSH公钥。


2).“fatal: Not a git repository”错误,尚未初始化git目录,请用: git init命令。


3).“fatal: 'origin': unable to chdir or not a git archive”错误,不存在分支 ’origin’,这个’origin’可
能是本地分支,也可能是远程分支;若是本地分支应该用类似git remote add origin git@github.com:username/projectname.git 的命令来解决,若是远程分支,请注意它的个时是否正确


4). “! [rejected] master -> master (non-fast forward) error: failed to push some refs to 'g
it@github.com:git-on-windows/rookies.git’ ”错误,执行某git命令前需要更新项目,可用类似命令:git pull yourbranch master 解决


5).” Repository not found. If you've just created it, please try again in a few se
conds.”错误,很大原因是没有设置好远程路径,或者路径错误,请记住标准的git路径类似:git@github.com:username/ projectname.git


错误集合待更新中。。。

linux的ssh key不正确的问题,以及生成putty的.ppk

,

为一台服务器添加key,总是失败,查看/var/log/secure日志:

Authentication refused: bad ownership or modes for directory /home/jason/.ssh

解决:

用户目录权限为 755 或者 700,就是不能是77x
.ssh目录权限必须为755
rsa_id.pub 及authorized_keys权限必须为644或600
rsa_id权限必须为600

rsa_id.pub 在生成 authorized_keys后即可以删除。
rsa_id为私钥,也应该从服务器上删除



如果还不对的话 ssh -v 24.3.42.67 ,debug一下吧




另:
winscp使用.ppk的key:
1.在 Server 端,使用 ssh-keygen 來建立 DSA Private Key 和 Public Key.
先检查 /root 下有沒有 .ssh 的资料夹,如果有就跳过步驟,
在 /root 下建立资料夹 .ssh,
mkdir .ssh
cd .ssh
ssh-keygen -b 2048 -t rsa
(ssh-keygen -b 1024 -t dsa)
生成Private Key(私钥)文件名:id_rsa (id_dsa),
和 Public Key(公钥)文件名:id_rsa.pub (id_dsa.pub)

这时会让你输入key密码 key passphrase,
(即使現在不输入也沒关系,后面再用 puttygen.exe 转换格式時再输入,也是可以的)

再來把公钥的內容导入到 authorized_keys
cat id_rsa.pub > authorized_keys
(cat id_dsa.pub > authorized_keys)
chmod 600 authorized_keys

2.因为 Openssh 的私钥格式和 putty(winscp) 使用的格式不同,
所以需要由 puttygen.exe 转换格式后才能使用,可能出現的几种问題:
(a)、Server refused our key
公钥和私钥不匹配,或者沒有 authorized_keys 文件
(b)、Unable to use key file "id_dsa.ppk"("id_rsa.ppk") (SSH2 private key)
私钥文件的格式不正确

2.1把 server 上的私钥:id_dsa 拷贝到 PC 上
將 id_rsa (id_dsa)的內容显示在屏幕上,再复制下來.
cat id_rsa
(cat id_dsa)
把复制的內容贴到记事本里保存为 id_rsa_by_ssh-keygen.ppk(id_dsa_by_ssh-keygen.ppk)
再來就是开始用 puttygen.exe → Conversions → Import Key
进入后,在 Key passphrase 和 Confirm passphrase 输入密码后,
然后, File → Save Private Key 把私钥另存新文件即可使用了。linux的ssh key不正确的问题,以及生成putty的.ppk

wget 使用技巧大全

刚刚在网上看到安装 永中Office 2009 的教程,教程中是使用 wget 命令来下载安装文件的,不过我刚刚把系统升级到最新版本,我使用华为EG162无线网卡上网很不稳定,速度非常慢,下载永中Office 2009的速度平均才 18-19 kb/s ,速度慢点倒没关系,但是经常断线,本来已经下载了几十兆了,可是网络偏偏断掉,害的我重来了两次,最后不得不用 Firefox 来下载,不知者无罪,原来我不知道 wget 也支持断点续传,囧

wget 是一个命令行工具,用于批量下载文件,支持HTTP,HTTPS和FTP协议,对于我们这些使用Linux的人来说基本上每天都要用它,而且几乎所有的 Linux发行版 都自带 wget ,那么有多少人像我一样都不会使用呢?除了 linuxtoy.org 上面介绍的小技巧之外,我在网上找了一些 wget 的使用技巧,一起学习学习吧!


wget是一个从网络上自动下载文件的自由工具。wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。

wget可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作”递归下载”。在递归下载的时候,wget遵循Robot Exclusion标准(/robots.txt). wget可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。

wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完 毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

wget 的有点很多,支持1)支持断点下传功能(2)同时支持FTP和HTTP下载方式(3)支持代理服务器(4)设置方便简单;5)程序小,完全免费;

命令格式:

wget [参数列表] [目标软件、网页的网址]

1、启动类参数

这一类参数主要提供软件的一些基本信息;

-V,–version 显示软件版本号然后退出;

-h,–help显示软件帮助信息;

-e,–execute=COMMAND 执行一个 “.wgetrc”命令

以上每一个功能有长短两个参数,长短功能一样,都可以使用。需要注意的是,这里的-e参数是执行一个.wgettrc的命令,.wgettrc命令其实是一个参数列表,直接将软件需要的参数写在一起就可以了。

2、文件处理参数

这类参数定义软件log文件的输出方式等;

-o,–output-file=FILE 将软件输出信息保存到文件;
-a,–append-output=FILE将软件输出信息追加到文件;
-d,–debug显示输出信息;
-q,–quiet 不显示输出信息;
-i,–input-file=FILE 从文件中取得URL;

以上参数对于攻击者比较有用,我们来看看具体使用;

例1:下载192.168.1.168首页并且显示下载信息
wget -d http://192.168.1.168

例2:下载192.168.1.168首页并且不显示任何信息
wget -q http://192.168.1.168

例3:下载filelist.txt中所包含的链接的所有文件

wget -i filelist.txt
wget -np -m -l5 http://www.123.com //不下载本站所链接的其它站点内容,5级目录结构

3、下载参数

下载参数定义下载重复次数、保存文件名等;

-t,–tries=NUMBER 是否下载次数(0表示无穷次)
-O –output-document=FILE下载文件保存为别的文件名
-nc, –no-clobber 不要覆盖已经存在的文件
-N,–timestamping只下载比本地新的文件
-T,–timeout=SECONDS 设置超时时间
-Y,–proxy=on/off 关闭代理

例:下载192.168.1.168的首页并将下载过程中的的输入信息保存到test.htm文件中
wget -o test.htm http://192.168.1.168

4、目录参数

目录参数主要设置下载文件保存目录与原来文件(服务器文件)的目录对应关系;

-nd –no-directories 不建立目录
-x,–force-directories 强制建立目录
可能现在我们对这里的目录还不是很了解,我们来看一个举例

例:下载192.168.1.168的首页,并且保持网站结构
wget -x http://192.168.1.168
5、HTTP参数

HTTP参数设置一些与HTTP下载有关的属性;

–http-user=USER设置HTTP用户
–http-passwd=PASS设置HTTP密码
–proxy-user=USER设置代理用户
–proxy-passwd=PASS设置代理密码

以上参数主要设置HTTP和代理的用户、密码;

6、递归参数设置

在下载一个网站或者网站的一个目录的时候,我们需要知道的下载的层次,这些参数就可以设置;
-r,–recursive 下载整个网站、目录(小心使用)
-l,–level=NUMBER 下载层次

例:下载整个网站
wget -r http://192.168.1.168

7、递归允许与拒绝选项参数

下载一个网站的时候,为了尽量快,有些文件可以选择下载,比如图片和声音,在这里可以设置;

-A,–accept=LIST 可以接受的文件类型
-R,–reject=LIST拒绝接受的文件类型
-D,–domains=LIST可以接受的域名
–exclude-domains=LIST拒绝的域名
-L,–relative 下载关联链接
–follow-ftp 只下载FTP链接
-H,–span-hosts 可以下载外面的主机
-I,–include-directories=LIST允许的目录
-X,–exclude-directories=LIST 拒绝的目录

如何设定wget所使用的代理服务器

wget可以使用用户设置文件”.wgetrc”来读取很多设置,我们这里主要利用这个文件来是
设置代理服务器。使用者用什么用户登录,那么什么用户主目录下的”.wgetrc”文件就起
作用。例如,”root”用户如果想使用”.wgetrc”来设置代理服务器,”/root/.wgetrc”就起
作用,下面给出一个”.wgetrc”文件的内容,读者可以参照这个例子来编写自己的”wgetrc”文件:
http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080
这两行的含义是,代理服务器IP地址为:111.111.111.111,端口号为:80。第一行指定
HTTP协议所使用的代理服务器,第二行指定FTP协议所使用的代理服务器。

wget 的常见用法

wget 的使用格式
Usage: wget [OPTION]… [url]…用wget做站点镜像:
wget -r -p -np -k http://dsec.pku.edu.cn/~usr_name/
# 或者
wget -m http://www.tldp.org/LDP/abs/html/在不稳定的网络上下载一个部分下载的文件,以及在空闲时段下载
wget -t 0 -w 31 -c http://dsec.pku.edu.cn/BBC.avi -o down.log &
# 或者从filelist读入要下载的文件列表
wget -t 0 -w 31 -c -B ftp://dsec.pku.edu.cn/linuxsoft - i filelist.txt -o down.log &上面的代码还可以用来在网络比较空闲的时段进行下载。我的用法是:在mozilla中 将不方便当时下载的URL链接拷贝到内存中然后粘贴到文件filelist.txt中,在晚上要出去系统前执行上面代码的第二条。

使用代理下载
wget -Y on -p -k https://sourceforge.net/projects/wvware/代理可以在环境变量或wgetrc文件中设定

# 在环境变量中设定代理
export PROXY=http://211.90.168.94:8080/
# 在~/.wgetrc中设定代理
http_proxy = http://proxy.yoyodyne.com:18023/
ftp_proxy = http://proxy.yoyodyne.com:18023/wget各种选项分类列表
启动
-V, –version 显示wget的版本后退出
-h, –help 打印语法帮助
-b, –background 启动后转入后台执行
-e, –execute=COMMAND 执行`.wgetrc’格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc记录和输入文件
-o, –output-file=FILE 把记录写到FILE文件中
-a, –append-output=FILE 把记录追加到FILE文件中
-d, –debug 打印调试输出
-q, –quiet 安静模式(没有输出)
-v, –verbose 冗长模式(这是缺省设置)
-nv, –non-verbose 关掉冗长模式,但不是安静模式
-i, –input-file=FILE 下载在FILE文件中出现的URLs
-F, –force-html 把输入文件当作HTML格式文件对待
-B, –base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀
–sslcertfile=FILE 可选客户端证书
–sslcertkey=KEYFILE 可选客户端证书的KEYFILE
–egd-file=FILE 指定EGD socket的文件名下载
–bind-address=ADDRESS 指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)
-t, –tries=NUMBER 设定最大尝试链接次数(0 表示无限制).
-O –output-document=FILE 把文档写到FILE文件中
-nc, –no-clobber 不要覆盖存在的文件或使用.#前缀
-c, –continue 接着下载没下载完的文件
–progress=TYPE 设定进程条标记
-N, –timestamping 不要重新下载文件除非比本地文件新
-S, –server-response 打印服务器的回应
–spider 不下载任何东西
-T, –timeout=SECONDS 设定响应超时的秒数
-w, –wait=SECONDS 两次尝试之间间隔SECONDS秒
–waitretry=SECONDS 在重新链接之间等待1…SECONDS秒
–random-wait 在下载之间等待0…2*WAIT秒
-Y, –proxy=on/off 打开或关闭代理
-Q, –quota=NUMBER 设置下载的容量限制
–limit-rate=RATE 限定下载输率目录
-nd –no-directories 不创建目录
-x, –force-directories 强制创建目录
-nH, –no-host-directories 不创建主机目录
-P, –directory-prefix=PREFIX 将文件保存到目录 PREFIX/…
–cut-dirs=NUMBER 忽略 NUMBER层远程目录HTTP 选项
–http-user=USER 设定HTTP用户名为 USER.
–http-passwd=PASS 设定http密码为 PASS.
-C, –cache=on/off 允许/不允许服务器端的数据缓存 (一般情况下允许).
-E, –html-extension 将所有text/html文档以.html扩展名保存
–ignore-length 忽略 `Content-Length’头域
–header=STRING 在headers中插入字符串 STRING
–proxy-user=USER 设定代理的用户名为 USER
–proxy-passwd=PASS 设定代理的密码为 PASS
–referer=URL 在HTTP请求中包含 `Referer: URL’头
-s, –save-headers 保存HTTP头到文件
-U, –user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSION.
–no-http-keep-alive 关闭 HTTP活动链接 (永远链接).
–cookies=off 不使用 cookies.
–load-cookies=FILE 在开始会话前从文件 FILE中加载cookie
–save-cookies=FILE 在会话结束后将 cookies保存到 FILE文件中FTP 选项
-nr, –dont-remove-listing 不移走 `.listing’文件
-g, –glob=on/off 打开或关闭文件名的 globbing机制
–passive-ftp 使用被动传输模式 (缺省值).
–active-ftp 使用主动传输模式
–retr-symlinks 在递归的时候,将链接指向文件(而不是目录)递归下载
-r, –recursive 递归下载--慎用!
-l, –level=NUMBER 最大递归深度 (inf 或 0 代表无穷).
–delete-after 在现在完毕后局部删除文件
-k, –convert-links 转换非相对链接为相对链接
-K, –backup-converted 在转换文件X之前,将之备份为 X.orig
-m, –mirror 等价于 -r -N -l inf -nr.
-p, –page-requisites 下载显示HTML文件的所有图片递归下载中的包含和不包含(accept/reject)
-A, –accept=LIST 分号分隔的被接受扩展名的列表
-R, –reject=LIST 分号分隔的不被接受的扩展名的列表
-D, –domains=LIST 分号分隔的被接受域的列表
–exclude-domains=LIST 分号分隔的不被接受的域的列表
–follow-ftp 跟踪HTML文档中的FTP链接
–follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表
-G, –ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表
-H, –span-hosts 当递归时转到外部主机
-L, –relative 仅仅跟踪相对链接
-I, –include-directories=LIST 允许目录的列表
-X, –exclude-directories=LIST 不被包含目录的列表
-np, –no-parent 不要追溯到父目录

Wget使用技巧

wget的使用形式是:
wget [参数列表] URL

首先来介绍一下wget的主要参数:
· -b:让wget在后台运行,记录文件写在当前目录下”wget-log”文件中;
· -t [nuber of times]:尝试次数,当wget无法与服务器建立连接时,尝试连接多少次。比如”-t120″表示尝试120次。当这一项为”0″的时候,指定尝试无穷多次直到连接成功为止,这个设置非常有用,当对方服务器突然关机或者网络突然中断的时候,可以在恢复正常后继续下载没有传完的文件;

· -c:断点续传,这也是个非常有用的设置,特别当下载比较大的文件的时候,如果中途意外中断,那么连接恢复的时候会从上次没传完的地方接着传,而不是又从头开始,使用这一项需要远程服务器也支持断点续传,一般来讲,基于UNIX/Linux的Web/FTP服务器都支持断点续传;

· -T [number of seconds]:超时时间,指定多长时间远程服务器没有响应就中断连接,开始下一次尝试。比如”-T120″表示如果120秒以后远程服务器没有发过来数据,就重新尝试连接。如果网络速度比较快,这个时间可以设置的短些,相反,可以设置的长一些,一般最多不超过900,通常也不少于60,一般设置在120左右比较合适;

· -w [number of seconds]:在两次尝试之间等待多少秒,比如”-w 100″表示两次尝试之间等待100秒;

· -Y on/off:通过/不通过代理服务器进行连接;

· -Q [byetes]:限制下载文件的总大小最多不能超过多少,比如”-Q2k”表示不能超过2K字节,”-Q3m”表示最多不能超过3M字节,如果数字后面什么都不加,就表示是以字节为单位,比如”-Q200″表示最多不能超过200字节;

· -nd:不下载目录结构,把从服务器所有指定目录下载的文件都堆到当前目录里;

· -x:与”-nd”设置刚好相反,创建完整的目录结构,例如”wget -nd http://www.gnu.org”将创建在当前目录下创建”www.gnu.org”子目录,然后按照服务器实际的目录结构一级一级建下去,直到所有的文件都传完为止;

· -nH:不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下到当前目录下;
· –http-user=username
· –http-passwd=password:如果Web服务器需要指定用户名和口令,用这两项来设定;
· –proxy-user=username
· –proxy-passwd=password:如果代理服务器需要输入用户名和口令,使用这两个选项;
· -r:在本机建立服务器端目录结构;
· -l [depth]:下载远程服务器目录结构的深度,例如”-l 5″下载目录深度小于或者等于5以内的目录结构或者文件;
· -m:做站点镜像时的选项,如果你想做一个站点的镜像,使用这个选项,它将自动设定其他合适的选项以便于站点镜像;
· -np:只下载目标站点指定目录及其子目录的内容。这也是一个非常有用的选项,我们假设某个人的个人主页里面有一个指向这个站点其他人个人主页的连接,而我们只想下载这个人的个人主页,如果不设置这个选项,甚至–有可能把整个站点给抓下来,这显然是我们通常不希望的;
ü 如何设定wget所使用的代理服务器wget可以使用用户设置文件”.wgetrc”来读取很多设置,我们这里主要利用这个文件来是设置代理服务器。使用者用什么用户登录,那么什么用户主目录下的”.wgetrc”文件就起作用。例如,”root”用户如果想使用”.wgetrc”来设置代理服务器,”/root/.wgert”就起作用,下面给出一个”.wgetrc”文件的内容,读者可以参照这个例子来编写自己的”wgetrc”文件:

http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080

这两行的含义是,代理服务器IP地址为:111.111.111.111,端口号为:80。第一行指定HTTP协议所使用的代理服务器,第二行指定FTP协议所使用的代理服务器。

wget 使用实例:
wget是一个命令行工具,用于批量下载文件,支持HTTP和FTP。究竟比其他的工具好在哪里?看看内容吧

如果我们想下载ftp里面某个目录里面的所有文件,我们也可以不用ftp这个笨蛋,呵呵,可以享受cute ftp等图形化工具的拖一个目录的轻松了。如
wget -r ftp://10.8.8.8/movie/

呵呵,等吧!下完了,发觉有些不对劲,怎么出来个10.8.8.8的目录,进去看看,又是一个movie,哦,wget将目录结构和网站标题都给记录下来了,不要??没有问题!比如说还是这个例子

wget -r -nd ftp://10.8.8.8/movie/

结果什么目录都没有了,faint!怎么会这样?呵呵,你如果想要这样就让它这样吧,否则使用

wget -r -nH ftp://10.8.8.8/movie/

恩?movie也不要?OK,那就这样

wget -r -nH –cut-dirs=1 ftp://10.8.8.8/movie/

这有什么用啊?cuteftp比他好用多了,而且,你这断了线能连吗?呵呵,不好意思,可以连

wget -c -r -nH –cut-dirs=1 ftp://10.8.8.8/movie/
但 是cuteftp能做下面的事情吗?比如,现在很多网站使用Apache建站,并不提供ftp服务,但是Apache有一个indexing功能,可以提 供一个类似于ftp的界面,好多文件我想下啊,怎么办?由于是HTTP协议,CuteFTP无能为力了,倒是flash get等有什么get all这 种功能,不知道他们对于目录处理怎么样。但是wget一点问题都没有,不信?我们拿CTAN为例(例子并不恰当,CTAN有FTP服务),我们下载这里面 所有的宏包,呵呵

wget -r -k http://www.txia.com/blog

-k表示将连接转换为本地连接。但是现在同样有上面的问题啊,那就把你需要的加上吧,另外也许你根本不需要向下走那么多层,比如,我们就要到第二层,那么

wget -r -l2 -k http://www.txia.com/blog

现在新的问题是,由于网页有一个排序功能,很讨厌,因为下载的时候把网页重复了好多次,那么我们可使用-A和-R开关控制下载类型,并且可以使用通配符,呵呵,现在随心所欲了吧

wget -r -R ‘*.htm*\?*’ -k http://www.txia.com/blog

这次没有那种网页了吧?-R的意义在于拒绝下载匹配类型的文件,-A表示仅仅接受的文件类型,如-A ‘*.gif’将仅下载gif图片,如果有多个允许或者不允许,可以使用,分开。

那 么,我们现在在使用代理服务器,怎么办呢?呵呵,很高兴你选择了wget,你可以使用它的配置文件,环境变量来利用代理。这里推荐使用环境变量,如在 bash里面我们可以把天天用的proxy加到.bash_profile里面,这是Linux标准写法(很多软件都用的,什么apt-get,yum 等等)

export http_proxy=http://10.20.30.40:8080

然后,proxy就默认打开了,如果需要暂时关闭,可以使用

wget –proxy=off -r -k http://www.txia.com/blog

当然,写一个.wgetrc文件也可以,该文件可以从/usr/local/etc里面找到,里面有很详细的注释,我就不多说了。

下载网页的时候比较麻烦的事情是,有的网页被同时指向了很多遍,那么为了避免多次下载,我们使用

wget -nc -r -k http://www.txia.com/blog

可以避免这件事情。为了不被有的连接指向非http://www.txia.com/blog内层目录,我们还应该加上

wget -nc -np -r -k http://www.txia.com/blog

避免下载非该目录里面的文件,这也避免了到不同的host上面去。当然,如果你希望有这个功能,在多个host之间跳来跳去的下载,可以使用

wget -nc -np -H -r -k http://www.txia.com/blog

使得可以在多个host之间span,同时-I和-X可以使得我们仅仅跟踪某些目录或者不跟踪某些目录。如果某些HTML里面你需要的东西不是由这种东西作出来的,你就得使用–follow-tags和–ignore-tags了。

嘿,我有个文件里面都是连接,怎么办?要是不是html你只需要

wget -i your.file

如果是,那也不繁

wget -F -i your.file
November 2009
S M T W T F S
October 2009December 2009
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30