NextCloud是什么
Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷的搭建一套属于自己或者团队的云同步网盘,从而实现跨平台跨设备文件同步,共享,版本控制,团队协做等功能。它的客户端覆盖windows,mac,android,ios,linux等各个平台,也提供了网页端以及webDAV接口,所以你几乎可以在各个设备上方便的访问你的云盘。它可以帮您简单快速在个人,公司电脑,服务器上假设一套属于自己或者团队专属的云同步网盘,所以它是一款开源网盘的绝佳解决方案
开源地址:https://github.com/nextcloud
NextCloud的特点
Nextcloud跨平台支持微软 Windows、macOS 和 Linux 的客户端应用程序,以及适用于 Android 和 apple iOS 操作系统的移动客户端下载地址。Nextcloud文件提供了一个内置的,具有强大的协作分享功能和桌面、移动和web界面以及WebDAV形式访问。Nextcloud群件集成了和其他生产力特性,帮助团队更快、更容易地按照您的条件完成工作。Nextcloud Talk通过集成的屏幕共享和SIP集成,通过浏览器和移动接口提供现场、私人音频/视频会议和文本聊天()。Nextcloud上的文件存储在一般的目录结构中,并可透过WebDAV访问。Nextcloud可以透过OpenID或者LDAP来实现用户群组或组群间的读写权限调整,以达到分享文件的目的和利用第三方平台的OAuth2进行接入;Nextcloud上用户可以使用基于浏览器文本编辑器、书签服务、缩放网址服务、相册以及RSS阅读器与文本查看器;Nextcloud具有良好的扩展性,可以将文件轻松连线到DropBox、Google云端与Amazon S3中;
基于docker安装NextCloud
1.拉取镜像
docker pull nextcloud2.创建挂载文件夹
mkdir -p /home/docker/nextcloud3.运行镜像设置文件挂载
docker run itd --restart always -p 8001:80 --name nextcloud -v /home/docker/nextcloud:/var/www/html nextcloud访问: http://192.168.5.45:8001
需要再页面进行安装,需要提前准备好mysql和nextcloud库
通过python将文件传递到NextCloud
函数文件 vim nextcloud.py
## 获取文件链接如 /usr/local/nginx/data/data_log/log/2024-05.zip
import requests
import glob
import os
def get_txt_files():directory = '/usr/local/nginx/data/data_log/log/'txt_files = glob.glob(os.path.join(directory, '*.zip'))return txt_filesdef upload_to_nextcloud(file_path, remote_file_name):# Nextcloud WebDAV endpointwebdav_url = f"http://192.168.5.45:8001/remote.php/webdav/log/{remote_file_name}"# 用户凭证username = "root"password = "docker211102"# 打开文件并准备上传数据with open(file_path, 'rb') as file:file_data = file.read()# 设置请求头,模拟表单上传headers = {'Content-Type': 'application/octet-stream',}# 发送PUT请求上传文件response = requests.put(webdav_url, data=file_data, headers=headers, auth=(username, password))if response.status_code == 201 or response.status_code == 204:print(f"File '{file_path}' uploaded to Nextcloud as '{remote_file_name}' successfully.")else:print(f"Failed to upload file. Status code: {response.status_code}")
主文件 vim file.py
import nextcloud
import ostxt_files = nextcloud.get_txt_files()for file in txt_files:# file:文件链接# os.path.basename(file)通过链接获取文件名称nextcloud.upload_to_nextcloud(file,os.path.basename(file))