自动备份到远程FTP的脚本 备忘

设置crontab,每天凌晨00:00切割备份文件 crontab -e
增加以下内容
00 00 * * * /bin/bash /home/back.sh

back.sh内容如下(可直接参考附件)
beifen.sh
#!/bin/bash
# FTP backup transfer script 自动备份到远程FTP的脚本
# For Use to transfer backup file to FTP Server
##FTP 设置ftp服务器地址 用户名及密码
hostip=”ftp.backup.clin003.com”
##time
today=`date +%Y%m%d`
##FTP user passwd

fusername=”ftpuser”
fpasswd=”123456″
##本地备份文件存放的目录
basedir=”/home/clin003.com/backup”
##远程FTP的相对目录
remodir=”/bak”

#需要备份的文件名
filename=”$today”_www.zip
filename2=”$today”_data.zip
filename3=”$today”_all.zip
cd $basedir

#log
echo “$today” DB1 Backup >> “$basedir”/backup.log
echo “$today” DB1 Backup >> “$basedir”/backup_err.log
##tar log to tgz
#zip 压缩内容目录到备份文件,并输出日志
zip -q -r -S “$today”_www.zip /home/www/ > “$basedir”/backup.log 2> “$basedir”/backup_err.log
zip -q -r -S “$today”_data.zip /home/www/clin003.com/data/ > “$basedir”/backup.log 2> “$basedir”/backup_err.log
#tar -zcvf $filename3 $basedir > “$basedir”/backup.log 2> “$basedir”/backup_err.log
####
##
##使用ncftpput命令上传到远程ftp服务器
ncftpput -u “$fusername” -p “$fpasswd” “$hostip” “$remodir” “$filename” >> “$basedir”/backup.log 2>> “$basedir”/backup_err.log
ncftpput -u “$fusername” -p “$fpasswd” “$hostip” “$remodir” “$filename2” >> “$basedir”/backup.log 2>> “$basedir”/backup_err.log
#ncftpput -u “$fusername” -p “$fpasswd” “$hostip” “$remodir” “$filename3” >> “$basedir”/backup.log 2>> “$basedir”/backup_err.log
## 发送备份日志 文件到邮箱,如果你装有sendmail的话。
#mail -s “$today_ Backup List ” hi@clin003.com < “$basedir”/backup.log

#nohup ncftpget -R -u user -p password clin003.com /rdir /ldir/ &

############

安装zip命令

apt-get install zip
apt-get install rar

安装ncftp命令
apt-get install ncftp

ncftpput使用
参考http://clin003.com/linux/ftp-command-not-found-2432/

nohup命令介绍
Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。但是如果终端关闭,那么程序也会被关闭。但是为了能够后台运行,那么我们就可以使用nohup这个命令。

nohup 命令

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

Debian Linux 使用Vsftpd安装配置架设FTP服务器

首先Vsftpd就不用介绍了。

Vsftpd的安装:
aptitude update //更新数据源列表
aptitude install vsftpd //安装vsftpd

Vsftpd的文件结构:
/usr/sbin/vsftpd —- VSFTPD的主程序
  /etc/init.d/vsftpd —- 启动脚本
  /etc/vsftpd.conf —- 主配置文件
  /etc/pam.d/vsftpd —- PAM认证文件
  /etc/ftpusers —-记录不允许访问FTP服务器的用户名单
  /home/ftp —-Vsftpd的根目录
  此外VSFTPD的日志文件为/var/log/vsftpd.log。
Vsftpd的管理控制。
  /etc/init.d/vsftpd start //启动vsftpd
  /etc/init.d/vsftpd stop //停止vsftpd
  /etc/init.d/vsftpd restart //重新启动vsftpd
  /etc/init.d/vsftpd reload //重新导入vsftpd
Vsftpd的配置文件。
  Vsftp的配置文件默认情况下就已经比较安全,一般不需要修改,下面对常用的几个配置选项进行说明:
  Listen=yes 是否以独立进程启动  
  anonymous_enable=YES 是否允许匿名ftp,如否则选择NO
  local_enable=YES 是否允许本地用户登录
  anon _enable=YES 是否允许匿名ftp用户访问
  anon_upload_enable=YES 是否允许匿名上传文件
  anon_mkdir_write_enable=YES 是否允许匿名用户有创建目录的权利
  dirmessage_enable=YES 是否显示目录说明文件,默认是YES但需要收工创建.message文件
  xferlog_enable=YES 是否记录ftp传输过程
  xferlog_file=/var/log/vsftpd.log 设置日志文件的路径
  connect_from_port_20=YES 是否确信端口传输来自20(ftp-data)
  idle_session_timeout=600 设置默认的断开不活跃session的时间
  data_connection_timeout=120 设置数据传输超时时间
  max_clients=Number 如果以standalone模式起动,那么只有$Number个用户可以连接,其他的用户将得到错误信息,默认是0不限止
  anon_max_rate 匿名最大传输速度,0为无限制
  local_max_rate 本地用户最大传输速度,0为无限制
  max_clients 最多客户端连接,0为无限制
  max_per_ip 一个ip的最大连接数,0为无限制
  更多的配置内容请访问vsftpd的官方网站查看:
  http://vsftpd.beasts.org/vsftpd_conf.html

配置本地组访问FTP
首先创建用户组clin003和FTP的目录
groupadd clin003-com (组名是随便取的,只是便于管理以后可以随时cat /etc/group |grep clin003-com)
mkdir /tmp/clin003 (我直接给用户分配管理/var/www文件,用来管理apache的web目录)
然后创建用户
useradd -G clin003-com -d /tmp/clin003 -M user1
注:G:用户所在的组 d:指定创建用户的自己目录 M:不建立默认的自家目录,就是在/home下没有自己的目录

我只是为了给自己的web server做文件传输服务,所以做了一个帐户.
useradd -G ftp -d /var/www -M clin003-admin

接着改变文件夹属于的组和用户
chown clin003-admin.clin003-com /var/www 把/var/www改变属主为clin003-admin
chmod 711 /var/www
我这设置的读取权限是711.也就是文件夹所有者完全权限,同组也就是上面的FTP组和所有人都是可执行权限.

Vsftpd添加FTP账号
A. 登录Linux主机后,运行命令:”useradd ftp-clin003 -s /sbin/nologin “。该账户路径默认指向/home/ftp-clin003目录;如果需要将用户指向其他目录,请运行命令:useradd ftp-clin003 -s /sbin/nologin –d /www(其他目录)

B. 设置ftp-clin003用户密码,运行命令:”passwd ftp-clin003” ; 输入两次密码,匹配成功后,就设置好了ftp-clin003用户的密码了。

C.测试连接,您可以在“我的电脑”地址栏中输入 ftp://IP 来连接FTP服务器,根据提示输入账户密码。

umask=022
umask=022中”022″是八进制的写法,如果换成二进制是000010010

在unix中文件权限是三类用户,三种权限。三类用户分别是文件所有者user(u),文件所有者所在主群组group(g)、其它用户others(o),三种权限分别是起读read(r)、写write(w)、执行execute(x)。

如果一个文件的权限如下:所有者有读写的权限,群组有读和执行权限、其它用户有读权限,可以写成:
rw-r-xr–
其中前三位指明了所有者的权限、中间三位指明了组权限、最后三位指明了其它用户的权限。我们用ls -l可以看到文件权限详情,列出来的是10位,最前一位如果是d表示是子目录。
说回来,如果把这上面9位字母换成二进制数则是:
110101100
如果换成八进制是多少?

因此文件权限可以用9位二进制数表示。umask在英文中是屏蔽的意思,那么
umask=022
指屏蔽文件的022权限,到底屏蔽了什么?将这个八进制数用二进制表示
000010010
换算成字母是
—-w–w-
指取消组的写权限、取消其它用户的写权限。
屏蔽这些权限后,剩下什么权限呢?用字母表示是:
rwxr-xr-x
用二进制数表示是:
111101101
你可以对比一下
000010010
可以知道屏蔽前后的换算关系。

在vsftpd的配置文件中,umask=022表示了上权后的文件被屏蔽的权限,另一句话说,就是上传的文件所具有的权限。

解决提示“ftp:command not found” 安装ftp客户端命令

解决提示ftp:command not found 安装ftp客户端命令

服务器环境:系统 Debian

SSH终端命令行安装方法
打开终端,输入代码:sudo apt-get install ncftp

很快就把NcFTP安装好了。

NcFTP与传统的FTP相比,主要有以下改进或变化:

1、子目录下载,采用递归的方法,下载整个目录及其子目录。
2、支持断点续传。一次传输没有完成,下次可以接着传输未完成的文件。
3、匿名FTP自动登录。目前大部分FTP站点都可以匿名登录,NcFTP可以自动登录(默认方式)。
4、支持通过防火墙传输和代理服务器。
5、支持书签功能,可以将某个位置存在书签中方便以后直接跳转。
6、可以显示下载进度。
7、显示传输速率。
8、文件列表自动满页暂停。当ls文件列表超过一屏,NcFTP会自动暂停,等待任意键继续。
9、默认是以binary方式传输数据。
10、支持文件名自动完成。例如服务器上有文件download.list,您只要输入get down,系统可以自动填充文件名为download.list。
11、自动记忆站点的离开时的目录,下次登录会自动进入那个目录。

参考:http://www-31.ibm.com/support/techdocs/cn/faqhtmlfaq/2311073I23003.htm

用法1(get命令下载文件):
使用ncftp -u user clin003.com 就会登录到主机clin003.com上了,系统会要求你输入user的密码。密码正确的话就会连接上。

在ncftp / >后输入lls,列出本地目录。

在ncftp / >后输入pls,列出FTP服务器上的文件目录。

如果要下载FTP服务器上的文件用什么命令呢?

首先进入文件目录,刚才用lls列出目录后,用cd命令进入文件夹(比如doc目录)
然后可以使用ls查看目录内容,接着可以使用“get 文件名”下载其中的文件。

用法2(利用ncftpget/ncftpput,结合nohup实现后台连续的上传与下载)
nohup ncftpget -R -u user -p password clin003.com /ldir /rdir/ &

更全面的NcFTP命令用法介绍可以参考:http://www.ibm.com/developerworks/cn/aix/library/au-ncftp_flex/index.html

ftp传输解压后的网站程序为什么这么慢

主要是因为文件数量太多,因为ftp每传一个文件都要与服务器建立一个链接,这样实际建立连接的时间可能就比传输文件内容所用的时间要长。虽然网站程序解压后的单个文件都很小,但是由于数量比较多,就导致往往几百k的文件要传几十分钟甚至网速慢的要上几个小时等等。

这样解决的根本办法就是减少文件数量,如果网站虚拟主机控制面板支持在线解压那么最好先把程序打包然后上传这样应该很快能传送完。如果没有就继续忍受慢慢传吧,或者找个可以解压文件的脚本文件然后传压缩包,然后解压。

linux服务器最好打包成gz的文件