作者:wiLdGoose
发布时间:August 27, 2019
分类:技术 Technology
可以看作是这篇文章的升级版本。这里感谢 druggo 留言提醒,让我决定抽时间折腾一下 lftp。
整个过程其实非常简单,照例自己马克一下。
安装 lftp 客户端:
yum -y install lftp
安装后使用过程中遇到报错:
Fatal Error: Certificate Verification: Not Trusted
原因是远端 FTP 服务器使用了自签发 SSL 证书,可以这样解决:
vim /etc/lftp.conf
在文件最后增加一行:
set ssl:verify-certificate no
改造后的脚本:
#!/bin/bash
date=`date +%Y%m%d`
deldate=`date -d -{NUMBER}day +%Y%m%d`
lftp ftp://{FTP_USER}:{FTP_PASSWD}@{HOST}:{PORT} <<!
cd /
lcd /data/backup
mrm *$deldate*
mput *$date*
exit
!
当然 lftp 还有一个更好用的指令:mirror。这里不用的原因是本地存储的时间与远端不一致。
依然是 3 点注意事项:
1、脚本中花括号内容替换为对应的变量;
2、cd 是远程的目录,lcd 是本地目录;
3、备份文件名需符合 date +%Y%m%d 这样的规则。
作者:wiLdGoose
发布时间:August 23, 2019
分类:技术 Technology
前阵子写了个小脚本,用于异地备份与自动删除过期文件。使用一段时间后发现异常,表现为:
ps aux | grep ftp
通过这个命令显示有大量的 FTP 客户端进程滞留内存。一开始以为传输未结束导致,经过文件比对后发现传输确实已结束。辣么为何 FTP 进程未能自动退出呢?
网上查询后有人说使用 passive 命令,但我的脚本中已经对 FTP 命令设置了 -inp 的参数,其中参数 p 即启用被动模式传输。若再使用 passive 命令,会使 FTP 从被动模式切换回默认的主动模式,导致连接与传输失败。
权宜之计是在 crontab 中,在定时备份的任务后若干小时再执行这个任务:
for i in `ps aux | grep "ftp -inp" | grep -v grep | awk '{ print $2 }'`; do kill -9 $i; done
确实挺 low 的,Google 了半天貌似没发现还有其他不幸遭遇的同志。若有更好的解决方案,跪求留言。
作者:wiLdGoose
发布时间:May 7, 2019
分类:技术 Technology
对于不能 SSH 的场景的确够麻烦,rsync 又嫌麻烦,只能 FTP 了。
以下是自己马克用的。
#!/bin/bash
date=`date +%Y%m%d`
deldate=`date -d -{NUMBER}day +%Y%m%d`
ftp -inp<<!
open {HOST} {PORT}
user {FTP_USER} {FTP_PASSWD}
cd /
lcd /data/backup
mdelete *$deldate*
mput *$date*
close
bye
!
注意几点:
1、脚本中花括号内容替换为对应的变量;
2、cd 是远程的目录,lcd 是本地目录;
3、备份文件名需符合 date +%Y%m%d 这样的规则。
作者:wiLdGoose
发布时间:April 27, 2019
分类:技术 Technology
Oneinstack 有一个备份配置脚本:backup_setting.sh 及备份脚本:backup.sh。目前已经支持本地备份、远端主机备份及诸如阿里云、七牛云等各种云的备份。虽然同时支持多种方式进行备份,但同一种备份方式只能选一次,譬如不能同时向两个远端主机进行备份,且只能通过 ssh 方式。在比较看重异地灾备的情况下,多远端主机备份的需求不能满足;在不方便开启外网 ssh 的情况下,这个脚本也不能满足。
面对前述情况我做了一些调整:
1、Oneinstack 自带备份脚本只进行本地备份和各种云的备份。默认本地备份路径是 /data/backup,通过观察备份文件名的规律可得出:
ls -lah /data/backup/*20190101*
可匹配到当日备份成功的新文件。
2、远端备份机搭建 FTP 服务,一般 VPS 需要开启被动模式支持,防火墙配置好被动模式的端口段。
3、本地提前安装好 FTP 客户端:
yum -y install ftp
需要每向一台远端备份机上传,便增加一个脚本:
#!/bin/bash
ftp -n<<!
open REMOTE_HOST_IP REMOTE_PORT
user FTP_USER FTP_PASSWD
binary
hash
cd /
lcd /data/backup
prompt
mput *$(date "+%Y%m%d")*
close
bye
!
注意自行修改脚本中大写字母部分的配置,也可拎出来做变量配置。若有问题可在 ftp 后面加 -v 或 -d 参数,输出对端返回和打开 debug 模式,以进一步调试。
测试通过后就可以放 crontab 了,需要备份到几个地方就开几个脚本。再也不用担心神马地震、海啸、核武,美滋滋。
- EOF -
作者:wiLdGoose
发布时间:March 4, 2009
分类:技术 Technology
应易先生的要求,我对《快速搭建 FAMP 环境》一文作如下补充。
对 MySQL 依次进行 configure、make、make install 后,还需要执行初始化数据库、配置权限等操作,具体如下:
www# /usr/local/mysql/bin/script/mysql_install_db --user=mysql
www# pw groupadd mysql
www# pw useradd mysql -g mysql -s /sbin/nologin
www# chown -R mysql:mysql /usr/local/mysql/var
www# /usr/local/mysql/bin/mysqld_safe --user=mysql &
安装 PureFTPd 的过程简单,不再赘述。但经常能遇到这样的报错:
Shared object "libmysqlclient.so.15" not found, required by "pure-ftpd"
一般遇到这样的情况,可以这样操作:
阅读剩余部分...
- 1
- 2
- »