2024-10-23 02:36:04 +02:00
|
|
|
# Go Storage
|
2024-10-23 03:52:05 +02:00
|
|
|
A simple Go storage client
|
2024-10-23 03:52:46 +02:00
|
|
|
|
2024-10-23 03:52:05 +02:00
|
|
|
Supported storage:
|
2024-10-23 02:36:04 +02:00
|
|
|
- Local
|
|
|
|
|
- S3
|
|
|
|
|
- SSH
|
|
|
|
|
- FTP
|
2024-12-06 16:13:24 +01:00
|
|
|
- Azure Blob
|
2024-10-23 02:46:31 +02:00
|
|
|
|
|
|
|
|
```go
|
|
|
|
|
go get github.com/jkaninda/go-storage
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Local Storage
|
|
|
|
|
```go
|
|
|
|
|
localStorage := local.NewStorage(local.Config{
|
|
|
|
|
LocalPath: tmpPath,
|
|
|
|
|
RemotePath: backupDestination,
|
|
|
|
|
})
|
|
|
|
|
err = localStorage.Copy(finalFileName)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatal("Error copying file, error %v", err)
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### S3 Storage
|
|
|
|
|
```go
|
|
|
|
|
s3Storage, err := s3.NewStorage(s3.Config{
|
|
|
|
|
Endpoint: "",
|
|
|
|
|
Bucket: "",
|
|
|
|
|
AccessKey: "",
|
|
|
|
|
SecretKey: "",
|
|
|
|
|
Region: "",
|
|
|
|
|
DisableSsl: "",
|
|
|
|
|
ForcePathStyle: "",
|
|
|
|
|
RemotePath: "",
|
|
|
|
|
LocalPath: "",
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
2024-10-23 03:52:05 +02:00
|
|
|
log.Fatalf("Error creating s3 storage: %s", err)
|
2024-10-23 02:46:31 +02:00
|
|
|
}
|
2024-10-23 03:52:05 +02:00
|
|
|
// Copy file to S3
|
2024-10-23 02:46:31 +02:00
|
|
|
err = s3Storage.Copy(finalFileName)
|
|
|
|
|
if err != nil {
|
2024-10-23 03:52:05 +02:00
|
|
|
log.Fatalf("Error copying file, error %v", err)
|
|
|
|
|
}
|
|
|
|
|
// Download file from S3
|
|
|
|
|
err = s3Storage.CopyFrom(finalFileName)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("Error copying file, error %v", err)
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### SSH Storage
|
|
|
|
|
```go
|
|
|
|
|
sshStorage, err := ssh.NewStorage(ssh.Config{
|
|
|
|
|
Host: "",
|
|
|
|
|
Port: "",
|
|
|
|
|
User: "",
|
|
|
|
|
Password: "",
|
|
|
|
|
RemotePath: "",
|
|
|
|
|
LocalPath: "",
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("Error creating SSH storage: %s", err)
|
|
|
|
|
}
|
|
|
|
|
// Copy file to the remote server
|
|
|
|
|
err = sshStorage.Copy(finalFileName)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("Error copying backup file: %s", err)
|
|
|
|
|
}
|
|
|
|
|
// Download file from SSH remote server
|
|
|
|
|
err = sshStorage.CopyFrom(finalFileName)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("Error copying file, error %v", err)
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
### FTP Storage
|
|
|
|
|
```go
|
|
|
|
|
ftpStorage, err := ftp.NewStorage(ftp.Config{
|
|
|
|
|
Host: "",
|
|
|
|
|
Port: "",
|
|
|
|
|
User: "",
|
|
|
|
|
Password: "",
|
|
|
|
|
RemotePath: "",
|
|
|
|
|
LocalPath: "",
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("Error creating FTP storage: %s", err)
|
|
|
|
|
}
|
|
|
|
|
err = ftpStorage.Copy(finalFileName)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("Error copying backup file: %s", err)
|
|
|
|
|
}
|
|
|
|
|
// Download file from ftp remote server
|
|
|
|
|
err = ftpStorage.CopyFrom(finalFileName)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("Error copying file, error %v", err)
|
2024-10-23 02:46:31 +02:00
|
|
|
}
|
2024-12-06 16:13:24 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Azure Blob storage
|
|
|
|
|
|
|
|
|
|
```go
|
|
|
|
|
azureStorage, err := azure.NewStorage(azure.Config{
|
|
|
|
|
ContainerName: '',
|
|
|
|
|
AccountName: '',
|
|
|
|
|
AccountKey: '',
|
|
|
|
|
RemotePath: '',
|
|
|
|
|
LocalPath: '',
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatal("Error creating Azure Blob storage storage: %s", err)
|
|
|
|
|
}
|
|
|
|
|
err = azureStorage.Copy(finalFileName)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatal("Error copying file: %s", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Download file from Azure Blob remote server
|
|
|
|
|
err = azureStorage.CopyFrom(finalFileName)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("Error copying file, error %v", err)
|
|
|
|
|
}
|
2024-10-23 02:46:31 +02:00
|
|
|
```
|