接上一篇,文件放在Digital Ocean的速度也不快。刚好我前两天申请了一个万网的免费PHP空间,我就想如何利用这个PHP空间。
PHP我肯定是一点都不熟悉的,好在其开放了FTP,于是我想到了用FTP来自动同步。

def upAll(path,ftp):
    # 列出所有VPS上的文件和目录
    filelist = os.listdir(path)
    # 列出ftp的文件和目录
    ftplist = ftp.nlst()
    for u in filelist:
        # 如果是文件
        if(os.path.isfile(os.path.join(path,u))):
            # 判断文件是否在ftp中存在
            if(u in ftplist):
                # 比较文件大小
                if(ftp.size(u)!=os.path.getsize(os.path.join(path,u))):
                    # 上传
                    ftp.storbinary('STOR '+u,open(os.path.join(path,u),'rb'))
            else:
                # 上传
                ftp.storbinary('STOR '+u,open(os.path.join(path,u),'rb'))
        # 如果是目录
        if(os.path.isdir(os.path.join(path,u))):
            # 如果目录不存在,就新建一个
            if(u not in ftplist):
                ftp.mkd(u)
            # ftp进入子目录
            ftp.cwd(u)
            # 本地文件也进入子目录
            upAll(os.path.join(path,u),ftp)

def syncAli():
    ali = FTP(host='your_ftp_address', user='your_username', passwd='your_password')
    # FTP进入htdocs目录
    ali.cwd("htdocs")
    # 需要同步的目录
    upAll("/home/book/website",ali)

整个过程是一个遍历的过程(最开始还以为是递归-_-)。
即使有跳过相同文件的设定,同步起来还是不快……,起码在这个函数还没有执行完,就已经Github就判定HTTP响应超时了。