主要说用宝塔面板搭建的网站,在之前的文章中写过了【怎样备份网站到本地电脑】,备份的网站数据是在远程的服务器上,如果一旦服务器出问题,备份的数据也有可能丢失,那么应该及时的将备份的数据下载到本地。
宝塔面板
首先宝塔中安装Pure-Ftpd插件,在软件商店安装,这里就不再演示了。
宝塔上创建一个软链接文件,指向备份文件的文件夹。
设置权限755,否则将无法读取目录文件。
本地
我用的Windows系统,安装的python3.6。
下面安装pyftpdlib模块
命令 pip install pyftpdlib
下面直接上代码
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
FTP常用操作
"""
from ftplib import FTP
import os
class FTP_OP(object):
def __init__(self, host, username, password, port):
"""
初始化ftp
:param host: ftp主机ip
:param username: ftp用户名
:param password: ftp密码
:param port: ftp端口 (默认21)
"""
self.host = host
self.username = username
self.password = password
self.port = port
def ftp_connect(self):
"""
连接ftp
:return:
"""
ftp = FTP()
ftp.set_debuglevel(2) #开启调试模式
ftp.connect(host=self.host, port=self.port) #连接ftp
ftp.login(self.username, self.password) #登录ftp
return ftp
def download_file(self, ftp_file_path, dst_file_path):
"""
从ftp下载文件到本地
:param ftp_file_path: ftp下载文件路径
:param dst_file_path: 本地存放路径
:return:
"""
buffer_size = 10240 #设置缓存区大小,默认是8192
ftp = self.ftp_connect()
print('登录FTP欢迎信息',ftp.getwelcome() ) #显示登录ftp信息
file_list = ftp.nlst(ftp_file_path)
#print('XXXX', ftp.dir(ftp_file_path) )
file_list.sort(reverse=True) #倒序,最新的在第一个
print('全部文件', file_list )
for file_name in file_list:
ftp_file = os.path.join(ftp_file_path, file_name)
write_file = os.path.join(dst_file_path, file_name)
print('文件',file_name )
#and not os.path.exists(write_file)
if file_name.find('www.ygbks.com')>-1 and file_name.find('.tar.gz')>-1:
print("file_name:"+file_name)
if os.path.exists(write_file):
print('该文件已存在', file_name )
break
#ftp_file = os.path.join(ftp_file_path, file_name)
#write_file = os.path.join(dst_file_path, file_name)
with open(write_file, "wb") as f:
ftp.retrbinary('RETR {0}'.format(ftp_file), f.write, buffer_size)
f.close()
break
ftp.quit()
if __name__ == '__main__':
host = "服务器ip地址"
username = "ftp用户名"
password = "ftp密码"
port = 21
ftp_file_path = "" #ftp目录
dst_file_path = "c://downloads" #本地目录
ftp = FTP_OP(host=host, username=username, password=password, port=port)
ftp.download_file(ftp_file_path=ftp_file_path, dst_file_path=dst_file_path)
运行结果:
可添加到Windows任务计划,每天运行。
以上代码部分转自:https://www.cnblogs.com/ringwang/p/10195372.html