共计 1280 个字符,预计需要花费 4 分钟才能阅读完成。
一般当我们架设一个网站时,会需要一个空间,空间商会告诉你一个 FTP 账号和密码用于网站的文件上传与下载。
本例中将使用 shell 脚本无交互下载远程主机 FTP 目录中的文件,使用的是 wget 命令,我们可以通过命令:man wget 看到如下信息:
--user=user
--password=password
Specify the username user and password password for both FTP and HTTP file
retrieval. These parameters can be overridden using the --ftp-user and
--ftp-password options for FTP connections and the --http-user and
--http-password options for HTTP connections.
意思是说支持指定 FTP 或 HTTP 服务器用户名密码进行无交互下载。
这里使用了 wget 命令中的 - m 选项,关于选项的说明如下:
-m
--mirror
Turn on options suitable for mirroring. This option turns on recursion and
time-stamping, sets infinite recursion depth and keeps FTP directory listings.
It is currently equivalent to -r -N -l inf --no-remove-listing.
意思是说首先会下载一份远程主机中 FTP 目录下的目录列表,然后根据这个目录列表目录进行下载,类似于递归目录下载。
下面是自动化 shell 脚本。
#!/bin/bash
#FTP 用户名
USER="myuser"
#FTP 密码
PASS="mypass"
#远程主机 IP 或域名
HOST="www.example"
DATE=`date "+%Y%m%d"`
#下载日志存放路径
LOGPATH="/home/wget.log"
#下载后文件存放位置
DOWNLOAD_PATH="/home/"
#远程 FTP 目录相对路径
REMOTE_DIR="sqlbackup/$DATE"
[ ! -d $DOWNLOAD_PATH/$DATE ] && mkdir -p $DOWNLOAD_PATH/$DATE
cd $DOWNLOAD_PATH/$DATE
echo "`date "+%F %T"` starting..." >> $LOGPATH
wget --ftp-user=$USER --ftp-password=$PASS -m ftp://$HOST/$REMOTE_DIR/*
echo "`date "+%F %T"` completed" >> $LOGPATH
脚本完成后,我们可以把它加入到定时任务中去,这里不再介绍定时任务的添加方法了。
