使用wget和ftp共享文件
一、需求
有一个机器A,上面那有很多文件。现在新买一个机器B,不想用U盘复制,就想把A弄成个服务器,然后B登录到A,想要什么文件就下载什么文件。
二、Win7实现
A是Win7和Ubuntu双系统,首先在Win7上,用系统自带的ftp服务器(传送门),可以实现文件下载。通过建立虚拟目录的方法,可以把不同盘里边的文件链接到ftp服务器得根目录,然后在B上输入ftp://192.168.1.101:21(B机器的ip和默认ftp端口)就可以访问A机器上的ftp服务器目录,点击文件就能下载,或者右击使用迅雷下载也行。注意两点,一个是防火墙,我是把防火墙关了B才能访问到A机器。另一点是,除了本身指定的服务器目录,新添加的虚拟目录中的文件可能没有权限下载。具体的安全配置有待深入。
三、Ubuntu 实现
今天把A进到Ubuntu下,B也进入Ubuntu,想在linux试一下ftp文件共享。首先在A机器上装一个vsftpd
$ sudo apt-get install vsftpd
装好了之后,查看是否打开21端口
$ sudo netstat -npltu | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 15601/vsftpd
看home目录下是否有一个ftp文件夹,没有的话新建一个,然后修改配置文件
$ sudo vim /etc/vsftpd.conf
在最后加入一句
local_root=/home/ftp
设置服务器的根目录
除了手动指定的这个目录外,vsftpd还建立了 /srv/ftp 这个目录。这个目录是匿名用户访问的目录。访问手动指定的目录是需要账户和密码的。在机器A(装有vsftpd服务器的机子)上,浏览器输入本机地址:ftp://192.168.1.101,进入的页面便是匿名用户访问的 /srv/ftp目录。如果在A的终端中输入
$ ftp localhost
会让你输入用户名和密码(系统的账户和密码),进去之后,会发现是 /home/ftp 这个目录。
【如果不能访问,检查一下配置文件里 local_enable=YES 和 anonymous_enable=YES 这两句是否被注释掉了。更多的关于vsftpd.conf参看ubuntu论坛 或者自己 man 5 vsftpd.conf】
配置好之后,在B机器的浏览器输入A机器的地址ftp://192.168.1.101,进去的是机器B的 /srv/ftp 目录,即匿名用户访问的目录。这个目录上的文件可以下载。但是,当我天真的把其他分区(比如Win7上的F盘)挂载到这个目录下,这个目录就打不开了。还是权限的问题,因为你是匿名访问。下面我们使用终端登录。
在B机器的终端中输入
$ ftp 192.168.1.101
然后会让你输入账户和密码。输入A机器的账户和密码之后,进到 /home/ftp 目录下(如果账户名输入anonymous,输入密码时直接回车,则仍进入匿名用户访问目录)。回到机器A上,用以下命令把Win7上的分区E盘(这个盘已经挂载到Ubuntu的/media目录下)“绑定挂载“到 /home/ftp目录
$ sudo mount --bind /media/E /home/ftp
然后再在B机器上访问A,就能在B机器上看到A机器的E盘上的文件。怎么获取这些文件呢。有get和mget两个命令可以使用。更多命令可以在ftp提示符下输入help或者? 浏览,想查看某条命令的具体用法,输入help + 命令或者 ?+命令,例如
ftp> help get
get receive file
mget命令可以一次获取多个文件,在使用mget之前,用prompt off关闭提示,不然复制每一个文件之前会询问你是否复制
prompt off
ftp> mget *.*
get下来的文件会在当前目录下。
四、神器wget
虽然mget可以同时get多个文件,但是不能处理文件夹,要想递归的复制文件夹,就需要wget了。
$ wget -m --restrict-file-names=nocontrol ftp://192.168.1.101 --ftp-user=kitty --ftp-password=123456
解释一下参数:
-m的意思是 表示镜像指定的目录 等同于 -r -N -l inf --no-remove-listing
--restrict-file-names解决中文乱码问题
例子1:wget -r ftp://xxx/ccc/aa/bb/ -P /home/work -nH --cut-dirs=2
//加上 –cut-dirs=n 忽略n个目录
//加上 -P dir 指定文件夹dir
例子2:传送门
wget -r -p -np -k -P ~/tmp/ http://java-er.com
wget居然有如此邪恶的用法
这个语句表示下载全站资料
等于把一个网站整个静态化到本地。
解释一下参数
-P 表示下载到哪个目录
-r 表示递归下载
-np 表示不下载旁站连接.
-k 表示将下载的网页里的链接修改为本地链接.
-p 获得所有显示网页所需的元素
额外的
-c 断点续传
-nd 递归下载时不创建一层一层的目录,把所有的文件下载到当前目录
-L 递归时不进入其它主机,如wget -c -r www.xxx.org/
-A 指定要下载的文件样式列表,多个样式用逗号分隔
-i 后面跟一个文件,文件内指明要下载的URL
不管用get还是wget,有的文件即使你copy到服务器目录下,仍然没有权限get它们。这时候需要改一下文件的所有者。
假如你以kitty账户登录服务器A,想把A机器上的codes文件夹wget到B机器上。如果codes文件夹的所有者不是kitty,那你需要在A机器上将codes文件夹的所有者改为kitty。
$ sudo chown -R kitty codes/
参数 -R 的意思是递归地进行,即将codes文件夹下的子文件子目录都改为kitty所有。然后就可以在机器B上get或 wget 啦。
使用wput上传文件夹:
wput /home/test ftp://ftpusername:password@ip/test
五、Ubuntu自带的“连接到服务器功能”


最后上个wget的图:因为文件小而多,所以看起来速度只有几百k,当wget几个G的iso文件时速度可以到3MB+,跟USB2.0差不多

使用wget和ftp共享文件的更多相关文章
- wget下载FTP的文件
在Linux中我们怎么样实现wget来下载文件 下面例子 下载所有的py结尾的文件到当前目录 wget ftp://anymous:anymous@42.51.152.2/soft/*.py 递归的 ...
- Linux下wget获取ftp下目录下文件
如果某个目录下有一个文件可以使用ftp命令: get xxx 如果是某个目录下有多个文件(且不需要获取目录下子文件夹下的内容): mget * 如果是某个目录下有子目录希望获取所有子目录: wget ...
- Linux下使用wget下载FTP服务器文件
wget -nH -m --ftp-user=your_username --ftp-password=your_password ftp://your_ftp_host/* 使用命令下载ftp上的文 ...
- 服务器上通过FTP共享文件夹
近日,公司某服务器共同操作的人员增多,而我只需访问及替换某些文件,故想到共享文件夹. 在IIS中建立ftp站点,添加虚拟目录(可多个,对应不同文件夹),设置允许访问的用户(添加用户,见在IIS上搭建F ...
- CVE-2014-4877 && wget: FTP Symlink Arbitrary Filesystem Access
目录 . 漏洞基本描述 . 漏洞带来的影响 . 漏洞攻击场景重现 . 漏洞的利用场景 . 漏洞原理分析 . 漏洞修复方案 . 攻防思考 1. 漏洞基本描述 0x1: Wget简介 wget是一个从网络 ...
- wget ftp
今天操作远端机器的时候发现少一个安装包, 需要传到对方的机器上,还能使用通过的老办法,直接SSH连上去了,发现传的很慢, 只有40K的样子, 看时间还需要二个多小时就有点受不了了.想想有一台FTP服务 ...
- 使用WGET参数介绍大全
wget 是一个命令行的下载工具.对于我们这些 Linux 用户来说,几乎每天都在使用它.下面为大家介绍几个有用的 wget 小技巧,可以让你更加高效而灵活的使用 wget. $ wget -r -n ...
- 虚拟机VMware与主机共享文件介绍
我们经常会在Windows平台安装虚拟机VMware,不管是出于实验测试还是工作需要,伴随而来的就是经常需要在Windows系统和虚拟机系统之间进行共享数据文件,例如,需要将Window主机上的Ora ...
- wget
Linux wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到 本地服务器.如果我们使用虚拟主机,处理这样 ...
随机推荐
- 2013-07-29 IT 要闻速记快想
### ========================= ###传动视暴雪82亿美元赎身,腾讯参与投资 ### ========================= ###帮助企业解决打印&邮 ...
- 【Delphi】圆角窗体
procedure TForm1.FormCreate(Sender: TObject); var hr :thandle; begin hr:=createroundrectrgn(1,1,widt ...
- php更新修改excel中的内容例子
代码如下 复制代码 //模板存放目录$dir = $DOCUMENT_ROOT.'/backoffice/admin/oemcheck/'; $templateName = '1.xlsx';$ou ...
- 为什么24位位图(真彩色)的biSizeImage不等于(biWidth*biBitCount+31)/32*4*biHeight?
规定的,规定BMP文件的像素数据是按行存储的,而且每行的字节数必须为4的倍数,如果实际的像素数据不是4的倍数咋办?这就需要字节对齐,对齐是在一行的末尾添0以补足一行的字节数为4的倍数, ( biWid ...
- ASP.NET中的TextBox下划线
看到园子里一位同行写的 http://www.cnblogs.com/xiaopeng84/archive/2007/04/10/707093.html 但是没有贴出效果图,自己练了一下,贴出代码和效 ...
- linux安装IPython四种方法
IPython是Python的交互式Shell,提供了代码自动补完,自动缩进,高亮显示,执行Shell命令等非常有用的特性.特别是它的代码补完功能,例如:在输入zlib.之后按下Tab键,IPytho ...
- PySide 简易教程<三>-------动手写起来
到目前为止,已经接触的Pyside的界面元素有如下几个:QWidget.QPushButton.QLabel.本次再介绍两个tooltip和messagebox.tooltip是一个鼠标悬浮提示信息, ...
- PySide 简易教程<二>-------工欲善其事,必先利其器
OK , 在Linux的开发环境下,对于我们的简短的PySide程序而言,不需要使用QtCreator,使用文本编辑器.之所以,使用文本编辑器,是因为小应用代码量很少,更重要的是一行行的写可以加深我们 ...
- 编写php拓展实例--slime项目(用户登录会话类)
最近公司换了yaf框架,突然对用c实现php拓展感兴趣了,如果一个功能已经很稳定很成熟而且用的地方很多,那么我们就可以尝试用拓展实现(不一定每种情况都可以写成拓展),写成拓展后就不用每次用都包含一 ...
- PAT 字符串-02 删除字符串中的子串
/* 2 *PAT 字符串-02 删除字符串中的子串 3 *2015-08-09 4 作者:flx413 5 */ #include<stdio.h> #include<string ...