本地文件夹备份至FTP
1 设置ftp及目录信息
2 生成文件夹列表
3 逐一mkdir并mput

批处理如下:

@echo on
rem 设置FTP服务器地址
set ftpIP=192.168.2.247
rem 设置FTP用户名
set ftpUser=wisq
rem 设置FTP密码
set ftpPass=wisq
rem 设置待上传的本地文件夹目录
set UpFolder=D:\test\
rem 设置FTP子文件夹
set ftpFolder=\aishequ

rem 生成待上传的本地文件夹列表
type nul>%temp%\FolderList.txt
for /r "%UpFolder%" %%a in (.) do (
    set FullName=%%a
    setlocal enabledelayedexpansion
    set FolderName=!FullName:%UpFolder%=!
    set FolderName=!FolderName:~0,-2!
    echo,!FolderName!>>%temp%\FolderList.txt
    endlocal
)
>"%temp%\ftpFile.txt" echo,%ftpUser%
>>"%temp%\ftpFile.txt" echo,%ftpPass%
>>"%temp%\ftpFile.txt" echo bin
>>"%temp%\ftpFile.txt" (
    for /f "usebackq tokens=*" %%a in ("%temp%\FolderList.txt") do (
        echo cd \
        echo mkdir "%ftpFolder%\%%a"
        echo cd "%ftpFolder%\%%a"
        echo mput "%UpFolder%\%%a\*"
    )
)
>>"%temp%\ftpFile.txt" echo ! md "%UpFolder%"
>>"%temp%\ftpFile.txt" echo bye
ftp -v -i -s:"%temp%\ftpFile.txt" %ftpIP%

PAUSE

backup2ftp.txt

  1. 更改主机名,写/etc/hosts记录

vim /etc/hosts
47.99.116.202 test.com
0.0.0.0 test.com

关闭防火墙
systemctl disable firewalld

关闭selinux
vim /etc/selinux/config
SELINUX=disabled

  1. 在DNS服务器上安装bind软件

yum -y install bind

  1. 启动DNS服务

systemctl restart named.service
systemctl enable named.service
netstat -anlp | grep named

  1. 域名服务器的配置

修改DNS服务的配置文件
vim /etc/named.conf

options {
        listen-on port 53 { localhost; };    # 将127.0.0.1改为本机IP
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };               # 将localhost改为any,表示所有人都能对我的DNS服务进行查询

添加域的信息写在子配置文件
vim /etc/named.rfc1912.zones

zone "test.com" IN {
        type master;
        file "data/test.com.zone";
};

编辑正向解析文件
vim /var/named/data/test.com.zone

$TTL 1D
@       IN SOA  dns.test.com. dns.www.test.com. (
                                         20171224      ; serial 
                                         1D      ; refresh 
                                         1H      ; retry 
                                         1W      ; expire 
                                         3H )    ; minimum 
@                       IN      NS      dns.test.com.
dns.test.com.           IN      A       58.48.186.194
@                       IN      MX 10   mail.www.test.com.
mail.www.test.com.      IN      A       58.48.186.194
www.test.com.           IN      A       58.48.186.194
ftp.test.com.           IN      A       58.48.186.194

重启
systemctl restart named.service

DNS服务器搭建.txt

1. 安装python3
https://code.ziqiangxuetang.com/django/django-basic.html
sudo yum install python3 -y

2. 安装django
sudo pip3 install Django

3. 创建一个项目
django-admin.py startproject www

4. 目录说明:
www: 项目的容器。
manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
www/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
www/settings.py: 该 Django 项目的设置/配置。
www/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
www/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

5. 启动服务器
python3 manage.py runserver 0.0.0.0:8000

6. 处理DisallowedHost
vim www/settings.py
ALLOWED_HOSTS = ['*']

7. 查看命令
python3 manage.py

8. 创建一个应用/app
python3 manage.py startapp huchangyi

9. 新定义的app加入到settings.py中的INSTALL_APPS中
自动找到app中的模板文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件) 
vim www/settings.py

10. 定义视图函数
vim huchangyi/views.py

# coding:utf-8
from django.http import HttpResponse

def index(request):
    return HttpResponse(u"胡昌意")

11. 定义视图函数相关的URL
vim www/urls.py

from huchangyi import views as huchangyi_views  # new

urlpatterns = [
    path('', huchangyi_views.index),
    path('admin/', admin.site.urls),
]

13. 新建测试目录
pwd:Print working directory
mkdir make directory

12. 实现上传下载
https://www.cnblogs.com/dreamer-fish/p/5948428.html
views:
def mgmt_files(request): #列出树形目录,上传文件页面
    if request.method == 'POST':
        path_root = "D:\\py\\ITFiles" #上传文件的主目录
        myFile =request.FILES.get("file", None)    # 获取上传的文件,如果没有文件,则默认为None  
        if not myFile:  
            dstatus = "请选择需要上传的文件!"
        else:
            path_ostype = os.path.join(path_root,request.POST.get("ostype"))
            path_dst_file = os.path.join(path_ostype,myFile.name)
            # print path_dst_file
            if os.path.isfile(path_dst_file):
                dstatus = "%s 已存在!"%(myFile.name)
            else:
                destination = open(path_dst_file,'wb+')    # 打开特定的文件进行二进制的写操作  
                for chunk in myFile.chunks():      # 分块写入文件  
                    destination.write(chunk)  
                destination.close()  
                dstatus = "%s 上传成功!"%(myFile.name)
        return HttpResponse(str(dstatus))

    return render(request,'sinfors/mgmt_files.html')


def mgmt_file_download(request,*args,**kwargs): #提供文件下载页面
    #定义文件分块下载函数 
    def file_iterator(file_name, chunk_size=512):
        with open(file_name,'rb') as f: #如果不加‘rb’以二进制方式打开,文件流中遇到特殊字符会终止下载,下载下来的文件不完整
            while True:
                c = f.read(chunk_size)
                if c:
                    yield c
                else:
                    break

    path_root = "D:\\py\\ITFiles"
    if kwargs['fpath'] is not None and kwargs['fname'] is not None:
        file_fpath = os.path.join(path_root,kwargs['fpath']) #kwargs['fapth']是文件的上一级目录名称
        file_dstpath = os.path.join(file_fpath,kwargs['fname']) #kwargs['fname']是文件名称

        response = StreamingHttpResponse(file_iterator(file_dstpath))
        response['Content-Type'] = 'application/octet-stream'
        response['Content-Disposition'] = 'attachment;filename="{0}"'.format(kwargs['fname']) #此处kwargs['fname']是要下载的文件的文件名称
        return response

Django部署教程.txt