gpt4 book ai didi

google-app-engine - FTP 到 Google 存储空间

转载 作者:太空宇宙 更新时间:2023-11-03 15:20:32 25 4
gpt4 key购买 nike

有些文件每天都会上传到 FTP 服务器,我需要将这些文件放在 Google Cloud Storage 下。我不想让上传文件的用户安装任何额外的软件,只是让他们继续使用他们的 FTP 客户端。有没有办法将 GCS 用作 FTP 服务器?如果没有,我如何创建一个定期从 FTP 位置获取文件并将它们放入 GCS 的作业?换句话说:最好和最简单的方法是什么?

最佳答案

您可以自己编写一个上传到 GCS 的 FTP 服务器,例如基于 pyftpdlib

定义一个自定义处理程序,在接收到文件时将其存储到 GCS

import os
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
from pyftpdlib.authorizers import DummyAuthorizer
from google.cloud import storage

class MyHandler:
def on_file_received(self, file):
storage_client = storage.Client()
bucket = storage_client.get_bucket('your_gcs_bucket')
blob = bucket.blob(file[5:]) # strip leading /tmp/
blob.upload_from_filename(file)
os.remove(file)
def on_... # implement other events

def main():
authorizer = DummyAuthorizer()
authorizer.add_user('user', 'password', homedir='/tmp', perm='elradfmw')

handler = MyHandler
handler.authorizer = authorizer
handler.masquerade_address = add.your.public.ip
handler.passive_ports = range(60000, 60999)

server = FTPServer(("127.0.0.1", 21), handler)
server.serve_forever()

if __name__ == "__main__":
main()

我已经在 Google Container Engine 上成功运行它(它需要一些努力才能让被动 FTP 正常工作),但在 Compute Engine 上应该非常简单。根据以上配置,在防火墙上开放21端口和60000-60999端口。

要运行它,python my_ftp_server.py - 如果您想监听端口 21,您需要 root 权限。

关于google-app-engine - FTP 到 Google 存储空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43486480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com