首先,因为自己对linux也不是很熟悉,因为最近完成一项任务用到了,特总结如下,如有不对的地方欢迎拍砖哈。
一、ftp是什么?(What)
其实我也不太清楚ftp是什么,觉得应该和http差不多,是一种网络协议,以供数据传输。具体的网络知识不是很懂,大家可以具体了解一下。
二、在Ubuntu下如何搭建ftp?(How)
在Ubuntu下自带的FTP服务器是vsftpd。输入以下命令:
1 sudo apt-get install vsftpd
这样其实在Ubuntu下就成功搭建成功,安装了之后会在/home/下建立一个ftp目录。这时候你可以试着访问下ftp://IP地址。应该可以看到一个空白内容的ftp空间。默认设置下匿名用户可以下载,但不能写入或是上传。改变相应的配置需要修改配置文件/etc/vsftpd.conf 。网上说配置之前最好备份一下配置文件,以便日后对照:(这种习惯不错,以后需要注意注意♥):
1 sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old
常用参数修改如下:(参考:http://quicker.iteye.com/blog/583117):
服务器以 standalong 模式运行,如果以 root 用户直接启动 vsftpd 进程,则必须:
1 # 注销语句以 xinetd 方式运行
2 listen=YES
3
4 # 上传总开关(全局控制)
5 write_enable=YES
6
7 # 接受匿名用户,默认无密码请求
8 anonymous_enable=YES
9
10 # 接受本地用户
11 local_enable=YES
12
13 # 本地用户上传文件(包括目录)的 umask
14 # 注意 vsftp 版本,某些旧版的该选项会被 chown_uploads/chown_username 二选项覆盖
15 local_umask=022
16
17 # 允许匿名用户上传文件,配合 anon_umask,否则文件权限皆为默认的 600,用户上传的文件不提供给任何匿名用户下载
18 anon_upload_enable=YES
19
20 # 匿名用户上传文件(包括目录)的 umask
21 # 注意点同 local_umask
22 anon_umask=022
23
24 # 允许匿名用户创建目录,配合 anon_umask 实现目录可写,否则依我(aBiNg)看,实际用处很小
25 anon_mkdir_write_enable=YES
26
27 # 允许匿名用户删除/重命名文件等操作
28 #anon_other_write_enable=YES
29
30 # 为 YES 则进入目录时显示此目录下由 message_file 选项指定的文本文件(默认为 .message)的内容
31 dirmessage_enable=YES
32
33 # 使用上传/下载日志,日志文件默认为 /var/log/vsftpd.log,可以通过 xferlog_file 选项修改
34 xferlog_enable=YES
35
36 # 使用 port 模式连接,并启用 20 端口
37 connect_from_port_20=YES
38
39 # 改变用户上传文件的所有者
40 #chown_uploads=YES
41 #chown_username=whoever
42 #xferlog_file=/var/log/vsftpd.log
43
44 # 日志使用标准 xferlog 格式
45 #xferlog_std_format=YES
46
47 # 用户登陆后 idle 时间,超过设置超则被踢出服务器
48 #idle_session_timeout=600
49
50 # login 时的欢迎信息
51 ftpd_banner=Welcome to blah FTP service.
52
53 #deny_email_enable=YES
54 #banned_email_file=/etc/vsftpd.banned_emails
55
56 # 若为 NO,则记录在 chroot_list_file 选项所指定的文件(默认是 /etc/vsftpd.chroot_list)中的用户将被
57 # chroot 在登录后所在目录中,无法离开。如果为 YES,则所记录的用户将不被 chroot。
58 chroot_local_user=YES
59
60 # 设置为 YES 则下面的控制有效
61 #chroot_list_enable=YES
62 #chroot_list_file=/etc/vsftpd.chroot_list
63
64 #ls_recurse_enable=YES
65 secure_chroot_dir=/var/run/vsftpd
66 pam_service_name=vsftpd
67 rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
68 rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
具体配置文件解释参考:http://os.51cto.com/art/201003/189123.htm
不出意外的话,现在应该就可以访问你的ftp了。
三、在另一台linux机器下用lftp备份你的ftp空间里的资源,并实现增量同步。
参考http://www.elias.cn/Linux/FtpBackup
首先如果没有安装lftp,在Ubuntu下安装命令:
apt-get install lftp
安装之后便可以使用lftp工具了。
如果ftp服务器支持匿名连接,你可以简单的使用以下命令连接。
lftp ftpsite //例:lftp 10.100.123.123
如果是需要密码的话,可以使用以下命令连接。
lftp -u username,password ftpsite
这样就连上了ftp远程服务器,当然如果你另一台机器就在你旁边,那你就意会一下这个“远程”的含义吧,呵呵。
下面我们开始实现增量同步,我们需要用到的是lftp的mirror命令。//这个命令的含义是同步本地的一个文件夹到远程文件夹
mirror -R 本地目录 远程目录
当然mirror命令的功能远不止这些,如果需要了解其他的功能。可参考http://www.centos.bz/2011/06/incremental-backup-site-using-lftp/
以后当每次执行这个命令的时候,都会执行一次增量同步。其实lftp也能实现定时同步,大家可以了解一下,再此我使用的是crontab
定时增量同步:(以每隔一分钟同步为例)
参考:http://liguxk.blog.51cto.com/129038/123555
这里需要编写一个脚本文件,所以如果想深入了解的话,还需要有一点shell编程的基础。
注意:这里需要给脚本文件一个权限,才能正常执行。
要使脚本可执行:
编译 chmod +x filename 这样才能用./filename 来运行