mirror of
https://github.com/Grace-Solutions/PSMinIO.git
synced 2026-07-27 23:28:57 +00:00
90c64d3237
- Reorganized project structure with proper directory separation: * All scripts moved to scripts/ directory (including examples) * All documentation moved to docs/ directory (except README.md) * Centralized version management in Version.ps1 - Implemented centralized version management system: * Version.ps1 provides single source of truth for version information * Automatic yyyy.MM.dd.HHmm versioning based on build time * scripts/Update-Version.ps1 updates all version references * src/Properties/AssemblyInfo.cs for assembly version information - Enhanced build system: * scripts/Build.ps1 - Full build with validation and packaging * scripts/Quick-Build.ps1 - Fast build handling file locking issues * Removed automatic copy from project file to avoid locking * Integrated version updates into build process - Updated PowerShell Gallery publishing: * scripts/Publish-PSMinIOToGallery.ps1 updated for new structure * docs/POWERSHELL-GALLERY-RELEASE.md comprehensive publishing guide * Module manifest updated with proper metadata and release notes - Updated all documentation and examples: * README.md updated with PowerShell Gallery installation * All example scripts updated with correct import paths * scripts/examples/README.md updated for new location * docs/PROJECT-STRUCTURE.md documents new organization - Version updated to 2025.07.11.1151 with centralized management - All import paths corrected for new structure - Professional project organization following PowerShell best practices
163 lines
6.9 KiB
Markdown
163 lines
6.9 KiB
Markdown
# PSMinIO
|
|
|
|
A comprehensive PowerShell module for MinIO object storage operations, built on the official [Minio .NET SDK](https://www.nuget.org/packages/Minio). Provides full-featured object storage management with enterprise-grade capabilities.
|
|
|
|
## Features
|
|
|
|
- **🚀 High Performance**: Built for .NET Standard 2.0, compatible with PowerShell 5.1+ and PowerShell 7+
|
|
- **📦 Complete Object Management**: Upload, download, list, and delete objects with advanced filtering and sorting
|
|
- **🗂️ Flexible Directory Support**: Create nested folder structures with automatic directory creation
|
|
- **⚡ Chunked Operations**: Large file uploads and downloads with resume capability and progress tracking
|
|
- **🔒 Security & Policy Management**: Comprehensive bucket policy and access control management
|
|
- **📊 Advanced Object Listing**: Filter by prefix, sort by multiple criteria, limit results, and exclude directories
|
|
- **⏱️ Timing & Performance Metrics**: Detailed timing information and transfer speed reporting
|
|
- **🔄 Progress Reporting**: Multi-layer progress tracking for file collections and chunked operations
|
|
- **📝 Professional Logging**: Clean, timestamped logging with configurable verbosity levels
|
|
- **🛡️ Robust Error Handling**: Graceful handling of network issues and edge cases
|
|
|
|
## Installation
|
|
|
|
### From PowerShell Gallery
|
|
```powershell
|
|
# Install from PowerShell Gallery
|
|
Install-Module -Name PSMinIO -Scope CurrentUser
|
|
|
|
# Import the module
|
|
Import-Module PSMinIO
|
|
```
|
|
|
|
### From Source
|
|
```powershell
|
|
# Clone the repository
|
|
git clone https://github.com/Grace-Solutions/PSMinIO.git
|
|
cd PSMinIO
|
|
|
|
# Build the module (automatically updates version)
|
|
.\scripts\Build.ps1
|
|
|
|
# Import the module
|
|
Import-Module .\Module\PSMinIO\PSMinIO.psd1
|
|
```
|
|
|
|
### Direct Import
|
|
```powershell
|
|
# Import from local path
|
|
Import-Module .\Module\PSMinIO\PSMinIO.psd1
|
|
```
|
|
|
|
## Quick Start
|
|
|
|
```powershell
|
|
# Connect to MinIO server
|
|
$connection = Connect-MinIO -Endpoint "https://minio.example.com" -AccessKey "your-access-key" -SecretKey "your-secret-key"
|
|
|
|
# Create a bucket
|
|
New-MinIOBucket -BucketName 'my-data-bucket' -Verbose
|
|
|
|
# Upload files with automatic directory creation
|
|
New-MinIOObject -BucketName 'my-data-bucket' -Files "document.pdf" -BucketDirectory "documents/2025/january"
|
|
|
|
# List objects with advanced filtering
|
|
Get-MinIOObject -BucketName 'my-data-bucket' -Prefix "documents/" -SortBy "Size" -Descending -MaxObjects 10
|
|
|
|
# Download with timing information
|
|
Get-MinIOObjectContent -BucketName 'my-data-bucket' -ObjectName 'documents/2025/january/document.pdf' -FilePath 'C:\Downloads\document.pdf'
|
|
|
|
# Chunked upload for large files
|
|
New-MinIOObjectChunked -BucketName 'my-data-bucket' -Files "large-video.mp4" -ChunkSize 10MB -BucketDirectory "media/videos"
|
|
```
|
|
|
|
## Available Cmdlets
|
|
|
|
### Connection Management
|
|
- **`Connect-MinIO`** - Establish connection to MinIO server with SSL support and certificate validation options
|
|
|
|
### Bucket Operations
|
|
- **`Get-MinIOBucket`** - List all buckets with optional statistics
|
|
- **`New-MinIOBucket`** - Create new buckets with region support
|
|
- **`Remove-MinIOBucket`** - Delete buckets with safety confirmations
|
|
- **`Test-MinIOBucketExists`** - Check bucket existence
|
|
|
|
### Object Operations
|
|
- **`Get-MinIOObject`** - Advanced object listing with filtering, sorting, and pagination
|
|
- Filter by prefix or exact object name
|
|
- Sort by Name, Size, LastModified, or ETag (ascending/descending)
|
|
- Limit results with MaxObjects
|
|
- Exclude directories with ObjectsOnly
|
|
- **`New-MinIOObject`** - Upload files with directory support
|
|
- Single file or multiple file uploads
|
|
- Automatic nested directory creation
|
|
- Progress tracking and timing information
|
|
- **`New-MinIOObjectChunked`** - Chunked uploads for large files
|
|
- Configurable chunk sizes (1MB minimum)
|
|
- Resume capability and multi-layer progress tracking
|
|
- Automatic directory creation
|
|
- **`Get-MinIOObjectContent`** - Download objects with progress tracking
|
|
- **`Get-MinIOObjectContentChunked`** - Chunked downloads for large files
|
|
- **`Remove-MinIOObject`** - Delete objects with confirmation prompts
|
|
- **`New-MinIOFolder`** - Create folder structures in buckets
|
|
|
|
### Security & Policy Management
|
|
- **`Get-MinIOBucketPolicy`** - Retrieve bucket access policies
|
|
- **`Set-MinIOBucketPolicy`** - Configure bucket access policies
|
|
|
|
### Monitoring & Statistics
|
|
- **`Get-MinIOStats`** - Comprehensive server and bucket statistics with object counting limits
|
|
|
|
## Key Features in Detail
|
|
|
|
### 🗂️ Advanced Directory Support
|
|
- **Nested Folder Creation**: Automatically create multi-level directory structures (e.g., `documents/2025/january/reports`)
|
|
- **BucketDirectory Parameter**: Specify target directories for uploads without manual folder creation
|
|
- **Clean Directory Handling**: Non-critical directory creation attempts with graceful fallback
|
|
|
|
### ⚡ Chunked Operations
|
|
- **Large File Support**: Handle files of any size with configurable chunk sizes
|
|
- **Resume Capability**: Interrupted transfers can be resumed (future enhancement)
|
|
- **Multi-Layer Progress**: Track collection progress, file progress, and chunk progress simultaneously
|
|
- **Performance Optimization**: Optimal chunk sizes for different network conditions
|
|
|
|
### 📊 Enhanced Object Listing
|
|
```powershell
|
|
# Advanced filtering and sorting examples
|
|
Get-MinIOObject -BucketName "data" -Prefix "logs/" -SortBy "LastModified" -Descending -MaxObjects 50
|
|
Get-MinIOObject -BucketName "media" -ObjectsOnly -SortBy "Size" -Descending
|
|
Get-MinIOObject -BucketName "docs" -ObjectName "specific-file.pdf"
|
|
```
|
|
|
|
### ⏱️ Performance Metrics
|
|
All operations provide detailed timing information:
|
|
- **Duration**: Precise operation timing
|
|
- **Transfer Speed**: Formatted speed reporting (B/s, KB/s, MB/s, GB/s, TB/s)
|
|
- **Progress Tracking**: Real-time progress updates during transfers
|
|
|
|
## Examples
|
|
|
|
See the [scripts/examples](./scripts/examples/) directory for comprehensive usage examples:
|
|
- **Basic Operations**: Connection, bucket management, simple uploads/downloads
|
|
- **Advanced Scenarios**: Chunked transfers, directory management, bulk operations
|
|
- **Enterprise Patterns**: Policy management, monitoring, and automation scripts
|
|
|
|
## Requirements
|
|
|
|
- **PowerShell**: 5.1+ or PowerShell 7+
|
|
- **.NET Framework**: 4.7.2+ (for PowerShell 5.1) or .NET Core/.NET 5+ (for PowerShell 7+)
|
|
- **MinIO Server**: Compatible with MinIO and Amazon S3 APIs
|
|
|
|
## Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
5. Open a Pull Request
|
|
|
|
## License
|
|
|
|
This project is licensed under the GNU General Public License v3.0 - see the [LICENSE](LICENSE) file for details.
|
|
|
|
## Support
|
|
|
|
- 📖 **Documentation**: See [docs/USAGE.md](docs/USAGE.md) for detailed usage instructions
|
|
- 🐛 **Issues**: Report bugs and request features via GitHub Issues
|
|
- 💬 **Discussions**: Join the community discussions for questions and tips |