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))