使用方法
我这里要把/home/wwwroot目录下面的所有文件备份到/home/wwwrootbak里面,并且保存为wwwroot20210727.tar.gz的压缩文件(20210727是指备份执行时当天的日期),然后只保留最近7天的备份,再把备份文件通过ftp服务器上传到指定空间,只保留最近7天的数据。
1、创建保存备份文件的目录:/home/wwwrootbak
cd /home
mkdir wwwrootbak
2、创建备份脚本文件:/home/wwwrootbak/wwwrootbak.sh
cd /home
cd wwwrootbak
touch wwwrootbak.sh
vim wwwrootbak.sh
输入以下内容:
#!/bin/sh
BK_DR=/home/wwwrootbak #备份文件存放路径
DB_DR=/home/wwwroot
DAYS=7 #DAYS=7代表删除7天前的备份,即只保留最近7天的备份
LINUX_USER=root #系统用户名
date=` date +%Y%m%d `
tar zcvf $BK_DR/wwwroot$date.tar.gz $DB_DR
chown -R $LINUX_USER:$LINUX_USER $BK_DR #更改备份数据库文件的所有者
find $BK_DR -name "wwwroot*" -type f -mtime +$DAYS -exec rm {} \; #删除7天前的备份文件(注意:{} \;中间有空格)
deldate=` date -d -7day +%Y%m%d ` #删除ftp服务器空间7天前的备份
ftp -n< open 192.168.1.1 21 #打开ftp服务器。21为ftp端口
user ftpuser ftppwd #用户名、密码
binary #设置二进制传输
cd wwwrootbak #进入ftp目录
lcd /home/wwwrootbak #列出本地目录
prompt #传输每个文件前进行提示
mput wwwroot$date.tar.gz wwwroot$date.tar.gz #上传目录中的文件
mdelete wwwroot$deldate.tar.gz wwwroot$deldate.tar.gz #删除ftp空间7天前的备份
close
bye ! #断开连接
3、修改文件属性,使其可执行
chmod +x /home/wwwrootbak/wwwrootbak.sh
4、修改/etc/crontab
vi /etc/crontab
在下面添加
5 2 * * * root /home/wwwrootbak/wwwrootbak.sh
表示每天凌晨2点5分执行备份
ps: yum install -y vixie-cron安装计划任务,某些系统上可能没有预装
命令解释
登录FTP
输入FTP用户名和密码
通过binary命令传输文件
切换散列符号 (#) 打印
切换目录
切换交互式提示
文件传输
断开连接
分界符标志
ftp -i -n 192.168.1.1
ftp常见的几个参数有:
-d:使用调试模式,但必须编辑 /etc/syslog.conf 文件并添加以下中的一项:user.info FileName 或 user.debug FileName。
-g:禁用文件名中的元字符拓展,即取消全局文件名。
-i :关闭多文件传输中的交互式提示。
-n:防止在起始连接中的自动登录。否则, ftp 命令会搜索 $HOME/.netrc 登录项,该登录项描述了远程主机的登录和初始化过程。
-v:显示远程服务器的全部响应,并提供数据传输的统计信息,即在程序运行时显示详细的处理信息。
user ftpuser ftppwd
ftpuser:登录FTP时的用户名
ftppwd:登录FTP时的密码
binary
FTP文件传输类型有: ascii、binary、ebcdic、image、local M 和 tenex。
– ascii:将文件传输类型设置为网络 ASCII。此类型为缺省值,即默认使用ascii方式进行传输。
– binary:将文件传输类型设置为二进制映像。需要使用binary方式传输的文件类型有ISO文件、可执行文件、压缩文件、图片等。此类型可能比 ASCII 传送更有效。
– ebcdic:将文件传输类型设为 EBCDIC。
– image:将文件传输类型设置为二进制映像。此类型可能比 ASCII 传送更有效。
– local M:将文件传输类型设置为本地。M 参数定义每计算机字位的十进制数。此参数没有缺省值。
– tenex:将文件传输类型设为 TENEX 机器需要的类型。
hash
当用get或put命令传送一个数据块时,让FTP显示一个#,这是看得见的确定数据在传输的信号,在用户不确信网络是否工作时有用。当传输很大的文件时,如果FTP已显示这种信息,表示传输正在进行。hash命令是一个布尔变量式的命令,用hash命令打开显示#开关,再用hash命令关闭显示。
cd 到FTP上对应路径
lcd 到本地的对应路径
lcd 到本地的对应路径
prompt
使用mget或mput时,prompt命令让FTP在传输每个文件前进行提示
,这样防止覆盖已有的文件。若发出prompt命令时已经启动了提示,FTP将把提示关掉,此时再传输所有的文件则不会有任何提问。
mput-上传多个文件
put-上传单个文件
mget-下载多个文件
get-下载单个文件
put-上传单个文件
mget-下载多个文件
get-下载单个文件
注:mget . 每下载一个文件,都会有提示。如果要除掉提示,则在mget . 命令前先执行:prompt off
bye
结束文件传输会话并退出 ftp 命令,与quit命令相同。
... << EOF
#execute shell
EOF
EOF只是一个分界符标志,完全可以用abc, ! 等替换,也一样的功能,只是大家都习惯用EOF来表示。
<<用法:当shell看到<<的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。因此分界符可以是定义的任何字符串。
传多个文件 put-上传单个文件 mget-下载多个文件 get-下载单个文件